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