platformAdminUser(); $this->seedPlatformDashboardData(); $this->browse(function (Browser $browser) use ($admin): void { $browser->loginAs($admin) ->visit('/admin'); $this->assertSingleProfessionalHeader($browser, 'Platform'); $browser->assertSee('Basic') ->assertSee('Advanced') ->assertSee('Pro'); }); } public function test_company_administration_form_creates_company(): void { $admin = $this->platformAdminUser(); $this->browse(function (Browser $browser) use ($admin): void { $browser->loginAs($admin) ->visit('/admin/companies'); $this->assertSingleProfessionalHeader($browser, 'Companies'); $browser->type('name', 'Abbott Logistics Limited') ->type('billing_email', 'billing@abbott.example') ->select('status', 'active') ->press('Create') ->waitForText('Abbott Logistics Limited', 10) ->assertSee('Abbott Logistics Limited'); }); } public function test_license_administration_form_issues_license(): void { $admin = $this->platformAdminUser(); $company = $this->tenantCompany(['name' => 'Licence Customer', 'slug' => 'licence-customer']); $this->browse(function (Browser $browser) use ($admin, $company): void { $browser->loginAs($admin) ->visit('/admin/licenses'); $this->assertSingleProfessionalHeader($browser, 'Licence Keys'); $browser->select('company_id', (string) $company->id) ->type('label', 'Browser Test Licence') ->select('plan', 'enterprise') ->type('max_users', '500') ->press('Issue') ->waitForText('Browser Test Licence', 10) ->assertSee('Browser Test Licence'); }); } public function test_payment_administration_form_records_payment(): void { $admin = $this->platformAdminUser(); $company = $this->tenantCompany(['name' => 'Payment Customer', 'slug' => 'payment-customer']); $this->browse(function (Browser $browser) use ($admin, $company): void { $browser->loginAs($admin) ->visit('/admin/payments'); $this->assertSingleProfessionalHeader($browser, 'Payments and Overrides'); $browser->select('company_id', (string) $company->id) ->type('amount', '12345') ->type('currency', 'gbp') ->select('status', 'paid') ->type('description', 'Browser payment') ->press('Add') ->waitForText('Browser payment', 10) ->assertSee('Browser payment'); }); } }