create(); $this->assertNotNull($boardColumn->project); $this->assertSame(1, $boardColumn->position); } /** * Ensure projects expose board columns ordered by position. */ public function test_project_board_columns_are_returned_in_position_order(): void { $project = Project::factory()->create(); BoardColumn::factory()->for($project)->create([ 'name' => 'Done', 'position' => 3, ]); BoardColumn::factory()->for($project)->create([ 'name' => 'Todo', 'position' => 1, ]); BoardColumn::factory()->for($project)->create([ 'name' => 'In Progress', 'position' => 2, ]); $this->assertSame( ['Todo', 'In Progress', 'Done'], $project->fresh()->boardColumns->pluck('name')->all(), ); } /** * Ensure the board column seeder creates starter workflow columns for seeded projects. */ public function test_board_column_seeder_creates_default_columns_for_projects(): void { $this->seed([ ProjectSeeder::class, BoardColumnSeeder::class, ]); $coreProject = Project::query()->where('key', 'CORE')->firstOrFail(); $this->assertDatabaseHas('board_columns', [ 'project_id' => $coreProject->id, 'name' => 'Todo', 'position' => 1, ]); $this->assertDatabaseHas('board_columns', [ 'project_id' => $coreProject->id, 'name' => 'In Progress', 'position' => 2, ]); $this->assertDatabaseHas('board_columns', [ 'project_id' => $coreProject->id, 'name' => 'Done', 'position' => 3, ]); } }