create(); $warehouse = Warehouse::query()->create([ 'company_id' => $user->company_id, 'code' => 'MAIN', 'name' => 'Main Warehouse', 'status' => 'active', 'timezone' => 'Europe/London', 'settings' => [], ]); $this->actingAs($user)->get(route('dashboard')) ->assertOk() ->assertSee($user->company->name) ->assertSee('Main Warehouse'); $this->actingAs($user)->get(route('warehouses.index')) ->assertOk() ->assertSee('Warehouses') ->assertSee('MAIN') ->assertSee('Main Warehouse'); $this->actingAs($user)->post(route('warehouse-rules.store'), [ 'warehouse_id' => $warehouse->id, 'name' => 'Location required', 'rule_key' => 'stock.location.required', 'severity' => 'error', ])->assertRedirect(); $this->actingAs($user)->get(route('warehouse-rules.index')) ->assertOk() ->assertSee('Warehouse validation rules') ->assertSee('Location required') ->assertSee('stock.location.required'); } public function test_user_can_create_warehouse_for_own_tenant_only(): void { $user = User::factory()->create(); $this->actingAs($user)->post(route('warehouses.store'), [ 'code' => 'PICK', 'name' => 'Picking Warehouse', 'status' => 'active', 'address' => 'Rack 1', ])->assertRedirect(); $this->assertDatabaseHas('warehouses', [ 'company_id' => $user->company_id, 'code' => 'PICK', 'name' => 'Picking Warehouse', ]); } public function test_unlicensed_tenant_gets_payment_required(): void { $company = Company::query()->create([ 'name' => 'Unlicensed Co', 'slug' => 'unlicensed-co', 'status' => 'active', 'timezone' => 'Europe/London', 'is_system_company' => false, ]); $user = User::factory()->create(['company_id' => $company->id]); $this->actingAs($user)->get(route('dashboard'))->assertStatus(402); $this->actingAs($user)->get(route('warehouses.index'))->assertStatus(402); } }