create(); $this->assertNotSame('', $team->name); } /** * Ensure teams can have many users attached. */ public function test_team_users_relationship_can_be_synced(): void { $team = Team::factory()->create(); $users = User::factory()->count(2)->create(); $team->users()->sync($users->modelKeys()); $this->assertCount(2, $team->fresh()->users); } /** * Ensure the team seeder creates starter teams with members. */ public function test_team_seeder_creates_expected_teams_and_members(): void { $this->seed(UserSeeder::class); $this->seed(TeamSeeder::class); $platformTeam = Team::query()->where('name', 'Platform Team')->firstOrFail(); $deliveryTeam = Team::query()->where('name', 'Delivery Team')->firstOrFail(); $this->assertGreaterThan(0, $platformTeam->users()->count()); $this->assertGreaterThan(0, $deliveryTeam->users()->count()); } /** * Ensure the project access seeder grants direct admin access and team permissions. */ public function test_project_access_seeder_creates_permission_assignments(): void { $this->seed([ UserSeeder::class, ProjectSeeder::class, TeamSeeder::class, ProjectAccessSeeder::class, ]); $admin = User::query()->where('email', 'admin@kanbangit.test')->firstOrFail(); $coreProject = Project::query()->where('key', 'CORE')->firstOrFail(); $platformTeam = Team::query()->where('name', 'Platform Team')->firstOrFail(); $this->assertDatabaseHas('project_user_permissions', [ 'project_id' => $coreProject->id, 'user_id' => $admin->id, 'permission' => 'view', ]); $this->assertDatabaseHas('project_team_permissions', [ 'project_id' => $coreProject->id, 'team_id' => $platformTeam->id, 'permission' => 'edit', ]); } }