Files
WMS/tests/Browser/PlatformAdminUiTest.php
T
2026-06-10 14:56:43 +01:00

96 lines
3.8 KiB
PHP

<?php
namespace Tests\Browser;
use Laravel\Dusk\Browser;
use Tests\Browser\Concerns\CreatesWmsBrowserData;
use Tests\Browser\Concerns\TestsResponsiveBreakpoints;
use Tests\DuskTestCase;
class PlatformAdminUiTest extends DuskTestCase
{
use CreatesWmsBrowserData;
use TestsResponsiveBreakpoints;
public function test_platform_admin_pages_render_at_all_breakpoints(): void
{
$admin = $this->createPlatformAdmin();
$company = $this->createTenantCompany(['name' => 'Admin Browser Co', 'slug' => 'admin-browser-co']);
$this->createWarehouseFor($admin, ['name' => 'System Warehouse', 'code' => 'SYS']);
$this->createPaymentFor($company, ['description' => 'Browser payment']);
$pages = [
['route' => 'platform.dashboard', 'heading' => 'Platform administration', 'expected' => ['Companies', 'Warehouses', 'Licences']],
['route' => 'platform.companies.index', 'heading' => 'Companies', 'expected' => ['Admin Browser Co', 'Licences']],
['route' => 'platform.licenses.index', 'heading' => 'Licence keys', 'expected' => ['Browser Test Licence', 'enterprise']],
['route' => 'platform.payments.index', 'heading' => 'Payments and overrides', 'expected' => ['Browser payment', 'GBP']],
];
$this->browse(function (Browser $browser) use ($admin, $pages): void {
$browser->loginAs($admin);
foreach ($pages as $page) {
$browser->visitRoute($page['route']);
$this->eachBreakpoint($browser, function (Browser $browser, string $breakpoint) use ($page): void {
$browser->assertSee($page['heading']);
foreach ($page['expected'] as $text) {
$browser->assertSee($text);
}
if ($this->isMobileNavigationBreakpoint($breakpoint)) {
$browser->assertVisible('[data-wms-mobile-open]');
} else {
$browser->assertVisible('[data-wms-sidebar]');
}
});
}
});
}
public function test_platform_admin_can_create_company_licence_and_payment_from_ui(): void
{
$admin = $this->createPlatformAdmin();
$this->browse(function (Browser $browser) use ($admin): void {
$browser
->loginAs($admin)
->visitRoute('platform.companies.index')
->type('name', 'UI Created Company')
->type('billing_email', 'accounts@ui-created.example')
->select('status', 'active')
->press('Create')
->waitForText('UI Created Company')
->assertSee('UI Created Company');
$companyId = (string) \Modules\Platform\app\Models\Company::query()
->where('name', 'UI Created Company')
->value('id');
$browser
->visitRoute('platform.licenses.index')
->select('company_id', $companyId)
->type('label', 'UI Enterprise Licence')
->select('plan', 'enterprise')
->type('max_users', '250')
->press('Issue')
->waitForText('New key:')
->assertSee('UI Enterprise Licence')
->assertSee('enterprise');
$browser
->visitRoute('platform.payments.index')
->select('company_id', $companyId)
->type('amount', '159900')
->type('currency', 'gbp')
->select('status', 'paid')
->type('description', 'UI manual payment')
->press('Add')
->waitForText('UI manual payment')
->assertSee('GBP 1,599.00')
->assertSee('paid');
});
}
}