'Abbott Logistics Limited', 'billing_email' => 'billing@abbott.example']); $country = Country::create(['alpha2' => 'GB', 'alpha3' => 'GBR', 'numeric' => '826', 'name' => 'United Kingdom', 'is_active' => true]); $company->address()->create([ 'line_1' => '1 Warehouse Way', 'locality' => 'London', 'postal_code' => 'SW1A 1AA', 'country_id' => $country->id, ]); $company->address()->update(['line_1' => '2 Warehouse Way']); $this->assertSame(1, CompanyAddress::count()); $this->assertSame('2 Warehouse Way', $company->fresh()->address->line_1); $this->assertSame('United Kingdom', $company->fresh()->address->country->name); } public function test_company_division_has_address_users_directors_and_optional_warehouses(): void { $company = Company::create(['name' => 'Sentinel', 'billing_email' => 'sentinel@example.test']); $country = Country::create(['alpha2' => 'GB', 'alpha3' => 'GBR', 'numeric' => '826', 'name' => 'United Kingdom', 'is_active' => true]); $user = User::create(['company_id' => $company->id, 'name' => 'Jane Director', 'email' => 'jane@example.test', 'password' => 'password']); $division = $company->divisions()->create(['name' => 'North Operations', 'code' => 'NORTH']); $warehouse = Warehouse::create(['company_id' => $company->id, 'division_id' => $division->id, 'code' => 'NTH', 'name' => 'North DC']); $division->address()->create([ 'label' => 'Operating address', 'line_1' => 'North Road', 'locality' => 'Manchester', 'country_id' => $country->id, ]); $division->users()->attach($user->id, ['company_id' => $company->id, 'role' => 'director', 'is_director' => true]); CompanyDirectorAssignment::create(['company_id' => $company->id, 'company_division_id' => $division->id, 'user_id' => $user->id, 'coverage_type' => 'division']); $this->assertTrue($company->fresh()->divisions()->exists()); $this->assertSame('North Operations', $warehouse->fresh()->division->name); $this->assertSame('Manchester', $division->fresh()->address->locality); $this->assertTrue($user->fresh()->divisions()->whereKey($division->id)->exists()); $this->assertTrue($user->fresh()->directorAssignments()->where('company_division_id', $division->id)->exists()); } public function test_warehouse_can_remain_at_company_level_without_division(): void { $company = Company::create(['name' => 'Company Level Warehousing']); $warehouse = Warehouse::create(['company_id' => $company->id, 'code' => 'MAIN', 'name' => 'Main Warehouse']); $this->assertNull($warehouse->division_id); $this->assertSame('Company Level Warehousing', $warehouse->company->name); } }