88 lines
3.3 KiB
PHP
88 lines
3.3 KiB
PHP
<?php
|
|
|
|
namespace Tests\Browser;
|
|
|
|
use Laravel\Dusk\Browser;
|
|
use Tests\Browser\Concerns\CreatesWmsBrowserData;
|
|
use Tests\Browser\Concerns\TestsResponsiveBreakpoints;
|
|
use Tests\DuskTestCase;
|
|
|
|
class WarehouseUiTest extends DuskTestCase
|
|
{
|
|
use CreatesWmsBrowserData;
|
|
use TestsResponsiveBreakpoints;
|
|
|
|
public function test_dashboard_warehouse_and_rules_pages_render_at_all_breakpoints(): void
|
|
{
|
|
$user = $this->createLicensedUser(['name' => 'Tenant User']);
|
|
$warehouse = $this->createWarehouseFor($user, ['name' => 'North Warehouse', 'code' => 'NORTH']);
|
|
$this->createWarehouseRule($warehouse, ['name' => 'Batch number required']);
|
|
|
|
$pages = [
|
|
['route' => 'dashboard', 'heading' => $user->company->name, 'expected' => ['Warehouses', 'Validation rules']],
|
|
['route' => 'warehouses.index', 'heading' => 'Warehouses', 'expected' => ['North Warehouse', 'NORTH']],
|
|
['route' => 'warehouse-rules.index', 'heading' => 'Warehouse validation rules', 'expected' => ['Batch number required', 'stock.location.required']],
|
|
];
|
|
|
|
$this->browse(function (Browser $browser) use ($user, $pages): void {
|
|
$browser->loginAs($user);
|
|
|
|
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_user_can_create_a_warehouse_from_the_ui(): void
|
|
{
|
|
$user = $this->createLicensedUser();
|
|
|
|
$this->browse(function (Browser $browser) use ($user): void {
|
|
$browser
|
|
->loginAs($user)
|
|
->visitRoute('warehouses.index')
|
|
->type('code', 'PICK')
|
|
->type('name', 'Picking Warehouse')
|
|
->select('status', 'active')
|
|
->press('Create')
|
|
->waitForText('Picking Warehouse')
|
|
->assertSee('PICK')
|
|
->assertSee('Picking Warehouse');
|
|
});
|
|
}
|
|
|
|
public function test_user_can_create_a_validation_rule_from_the_ui(): void
|
|
{
|
|
$user = $this->createLicensedUser();
|
|
$warehouse = $this->createWarehouseFor($user, ['name' => 'Rules Warehouse', 'code' => 'RULES']);
|
|
|
|
$this->browse(function (Browser $browser) use ($user, $warehouse): void {
|
|
$browser
|
|
->loginAs($user)
|
|
->visitRoute('warehouse-rules.index')
|
|
->select('warehouse_id', (string) $warehouse->id)
|
|
->type('name', 'Pallet scan required')
|
|
->type('rule_key', 'pallet.scan.required')
|
|
->select('severity', 'warning')
|
|
->press('Add')
|
|
->waitForText('Pallet scan required')
|
|
->assertSee('pallet.scan.required')
|
|
->assertSee('warning');
|
|
});
|
|
}
|
|
}
|