Files
WMS/tests/Browser/WarehouseBrowserTest.php
T
2026-06-11 14:51:28 +01:00

94 lines
3.2 KiB
PHP

<?php
namespace Tests\Browser;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Laravel\Dusk\Browser;
use Modules\Warehouse\app\Models\Warehouse;
use Modules\Warehouse\app\Models\WarehouseValidationRule;
use Tests\Browser\Concerns\InteractsWithWmsBrowser;
use Tests\Browser\Concerns\InteractsWithWmsData;
use Tests\DuskTestCase;
class WarehouseBrowserTest extends DuskTestCase
{
use DatabaseMigrations;
use InteractsWithWmsBrowser;
use InteractsWithWmsData;
public function test_tenant_warehouse_dashboard_and_administration_pages(): void
{
$user = $this->tenantUser();
$this->seedWarehouse($user->company);
$this->browse(function (Browser $browser) use ($user): void {
$browser->loginAs($user)
->visit('/dashboard');
$this->assertSingleProfessionalHeader($browser, 'Test Company');
$browser->assertSee('Main Warehouse')
->assertSee('Require batch number')
->visit('/warehouses');
$this->assertSingleProfessionalHeader($browser, 'Warehouses');
$browser->assertSee('Main Warehouse')
->visit('/warehouse-rules');
$this->assertSingleProfessionalHeader($browser, 'Validation Rules');
$browser->assertSee('Require batch number')
->assertSee('batch-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');
});
$this->assertDatabaseHas('warehouses', [
'company_id' => $user->company_id,
'code' => 'EAST',
'name' => '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');
});
$this->assertDatabaseHas('warehouse_validation_rules', [
'warehouse_id' => $warehouse->id,
'name' => 'Require serial number',
'rule_key' => 'serial-required',
]);
}
}