tenantUser(); $warehouse = $this->seedWarehouse($user->company); $this->browse(function (Browser $browser) use ($user, $warehouse): void { $browser->loginAs($user) ->visit('/dashboard'); $this->assertSingleProfessionalHeaderExists($browser); $browser->assertSee('Main Warehouse') ->visit('/warehouses'); $this->assertSingleProfessionalHeader($browser, 'Warehouses'); $browser->assertSee('Main Warehouse') ->visit('/warehouse-rules') ->assertPathIs('/warehouse-rules'); $this->assertSingleProfessionalHeader($browser, 'Validation Rules'); $browser->assertSee('Require batch number') ->assertSee('batch-required') ->select('warehouse_id', (string) $warehouse->id) ->type('name', 'Require expiry date') ->type('rule_key', 'expiry-required') ->select('severity', 'error') ->type('configuration', '{"field":"expires_at"}') ->press('Add rule') ->waitForText('Require expiry date', 10) ->assertSee('Require expiry date') ->assertSee('expiry-required'); }); } public function test_warehouse_form_creates_warehouse(): void { $user = $this->tenantUser(); $this->browse(function (Browser $browser) use ($user): void { $browser->loginAs($user) ->visit('/warehouses'); $this->assertSingleProfessionalHeader($browser, 'Warehouses'); $browser->type('code', 'EAST') ->type('name', 'East Midlands DC') ->type('address', 'Main Road, Nottingham') ->press('Create') ->waitForText('East Midlands DC', 10) ->assertSee('East Midlands DC'); }); } public function test_validation_rule_form_creates_rule(): void { $user = $this->tenantUser(); $warehouse = $this->seedWarehouse($user->company); $this->browse(function (Browser $browser) use ($user, $warehouse): void { $browser->loginAs($user) ->visit('/warehouse-rules'); $this->assertSingleProfessionalHeader($browser, 'Validation Rules'); $browser->select('warehouse_id', (string) $warehouse->id) ->type('name', 'Require serial number') ->type('rule_key', 'serial-required') ->select('severity', 'error') ->type('configuration', '{"field":"serial_no"}') ->press('Add rule') ->waitForText('Require serial number', 10) ->assertSee('serial-required'); }); } }