function createTicket($project = null, $milestone = null, $user = null) { if (!$project) { $project = createProject(); } if (!$milestone) { $milestone = createMilestone($project); } if (!$user) { $user = createUser(); } $ticket = new Ticket(['ticket_id' => $project['next_ticket_id'], 'summary' => 'ticket-' . mkRandomHash(5) . '-summary', 'body' => 'ticket-' . mkRandomHash(5) . '-body', 'project_id' => $project['id'], 'user_id' => $user['id'], 'type_id' => 1, 'milestone_id' => $milestone['id']]); $ticket->save(); $project['next_ticket_id'] = $project['next_ticket_id'] + 1; $project->save(); return $ticket; }
<?php $testSuite->createGroup('Requests / Projects / Roadmap', function ($g) { $project = createProject(); $milestone = createMilestone($project); $g->test('List milestones', function ($t) use($project, $milestone) { $resp = $t->visit('roadmap', ['routeTokens' => ['pslug' => $project['slug']]]); $t->assertContains('<h1 class="page-header">Roadmap</h1>', $resp->body); $t->assertContains($milestone['name'], $resp->body); }); $g->test('Show milestone', function ($t) use($project, $milestone) { $resp = $t->visit('milestone', ['routeTokens' => ['pslug' => $project['slug'], 'slug' => $milestone['slug']]]); $t->assertContains($milestone['name'], $resp->body); }); });
$milestone = createMilestone($project); $g->test('List milestones', function ($t) use($project, $user) { $resp = $t->visit('project_settings_milestones', ['routeTokens' => ['pslug' => $project['slug']], 'cookie' => ['traq' => $user['session_hash']]]); $t->assertEquals(200, $resp->status); $t->assertContains('<h1 class="page-header">Milestones</h1>', $resp->body); }); $g->test('New milestone', function ($t) use($project, $user) { $resp = $t->visit('project_settings_new_milestone', ['routeTokens' => ['pslug' => $project['slug']], 'cookie' => ['traq' => $user['session_hash']]]); $t->assertEquals(200, $resp->status); $t->assertContains('<h1 class="page-header">New Milestone</h1>', $resp->body); }); $g->test('Create milestone', function ($t) use($project, $user) { $resp = $t->visit('project_settings_create_milestone', ['method' => 'POST', 'routeTokens' => ['pslug' => $project['slug']], 'post' => ['name' => '1.0-test-name', 'slug' => '1.0-test-slug'], 'cookie' => ['traq' => $user['session_hash']]]); $t->assertRedirectTo($t->generateUrl('project_settings_milestones'), $resp); }); $g->test('Disallow editing another projects milestone', function ($t) use($project, $user) { $milestone = createMilestone(); $resp = $t->visit('project_settings_edit_milestone', ['routeTokens' => ['pslug' => $project['slug'], 'id' => $milestone['id']], 'cookie' => ['traq' => $user['session_hash']]]); $t->assertEquals(404, $resp->status); }); $g->test('Edit milestone', function ($t) use($project, $user, $milestone) { $resp = $t->visit('project_settings_edit_milestone', ['routeTokens' => ['pslug' => $project['slug'], 'id' => $milestone['id']], 'cookie' => ['traq' => $user['session_hash']]]); $t->assertEquals(200, $resp->status); $t->assertContains('<h1 class="page-header">Edit Milestone</h1>', $resp->body); $t->assertContains($milestone['name'], $resp->body); }); $g->test('Save milestone', function ($t) use($project, $user, $milestone) { $resp = $t->visit('project_settings_save_milestone', ['method' => 'PATCH', 'routeTokens' => ['pslug' => $project['slug'], 'id' => $milestone['id']], 'post' => ['name' => 'My Updated Milestone'], 'cookie' => ['traq' => $user['session_hash']]]); $t->assertRedirectTo($t->generateUrl('project_settings_milestones'), $resp); }); });