From 08c2281d472613b263401b27d9ae9bf79987be82 Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Wed, 6 Mar 2019 23:10:56 +0800 Subject: [PATCH] Add issue detail page --- app/Http/Controllers/Projects/IssueController.php | 5 +++++ database/factories/IssueFactory.php | 4 ++++ resources/views/projects/issues.blade.php | 9 ++++++++- resources/views/projects/issues/create.blade.php | 2 +- resources/views/projects/issues/show.blade.php | 20 ++++++++++++++++++++ routes/web/projects.php | 1 + tests/Feature/Projects/ProjectIssuesTest.php | 16 ++++++++++++++++ 7 files changed, 55 insertions(+), 2 deletions(-) create mode 100755 resources/views/projects/issues/show.blade.php diff --git a/app/Http/Controllers/Projects/IssueController.php b/app/Http/Controllers/Projects/IssueController.php index 7f70e94..d0f1e9d 100644 --- a/app/Http/Controllers/Projects/IssueController.php +++ b/app/Http/Controllers/Projects/IssueController.php @@ -37,4 +37,9 @@ class IssueController extends Controller return redirect()->route('projects.issues.index', $project); } + + public function show(Project $project, Issue $issue) + { + return view('projects.issues.show', compact('project', 'issue')); + } } diff --git a/database/factories/IssueFactory.php b/database/factories/IssueFactory.php index a99dc3b..859781d 100644 --- a/database/factories/IssueFactory.php +++ b/database/factories/IssueFactory.php @@ -1,5 +1,6 @@ define(Issue::class, function (Faker $faker) { }, 'title' => $faker->words(3, true), 'body' => $faker->sentences(3, true), + 'creator_id' => function () { + return factory(User::class)->create()->id; + }, ]; }); diff --git a/resources/views/projects/issues.blade.php b/resources/views/projects/issues.blade.php index 8011433..514ef5e 100755 --- a/resources/views/projects/issues.blade.php +++ b/resources/views/projects/issues.blade.php @@ -21,7 +21,14 @@ {{ $no }} {{ $issue->title }} -   + + {{ link_to_route( + 'projects.issues.show', + __('app.show'), + [$project, $issue], + ['class' => 'small', 'title' => __('issue.show')] + ) }} + @empty {{ __('issue.empty') }} diff --git a/resources/views/projects/issues/create.blade.php b/resources/views/projects/issues/create.blade.php index 7981727..46df9d4 100755 --- a/resources/views/projects/issues/create.blade.php +++ b/resources/views/projects/issues/create.blade.php @@ -3,7 +3,7 @@ @section('subtitle', __('issue.create')) @section('action-buttons') -@can('create', new App\Entities\Projects\Job) +@can('create', new App\Entities\Projects\Issue) {!! html_link_to_route('projects.issues.create', __('issue.create'), $project, ['class' => 'btn btn-success', 'icon' => 'plus']) !!} @endcan @endsection diff --git a/resources/views/projects/issues/show.blade.php b/resources/views/projects/issues/show.blade.php new file mode 100755 index 0000000..a632104 --- /dev/null +++ b/resources/views/projects/issues/show.blade.php @@ -0,0 +1,20 @@ +@extends('layouts.project') + +@section('subtitle', __('issue.detail')) + +@section('content-project') + +
+
+
+

{{ __('issue.detail') }}

+ + + + + +
{{ __('issue.title') }}{{ $issue->title }}
{{ __('issue.body') }}{{ $issue->body }}
+
+
+
+@endsection diff --git a/routes/web/projects.php b/routes/web/projects.php index 79a2847..fe5e331 100644 --- a/routes/web/projects.php +++ b/routes/web/projects.php @@ -51,6 +51,7 @@ Route::group(['middleware' => ['auth'], 'namespace' => 'Projects'], function () Route::get('projects/{project}/issues', 'IssueController@index')->name('projects.issues.index'); Route::get('projects/{project}/issues/create', 'IssueController@create')->name('projects.issues.create'); Route::post('projects/{project}/issues', 'IssueController@store')->name('projects.issues.store'); + Route::get('projects/{project}/issues/{issue}', 'IssueController@show')->name('projects.issues.show'); /* * Tasks Routes diff --git a/tests/Feature/Projects/ProjectIssuesTest.php b/tests/Feature/Projects/ProjectIssuesTest.php index 0e2b488..83b5544 100644 --- a/tests/Feature/Projects/ProjectIssuesTest.php +++ b/tests/Feature/Projects/ProjectIssuesTest.php @@ -53,6 +53,22 @@ class ProjectIssuesTest extends TestCase } /** @test */ + public function user_can_view_an_issue_detail() + { + $this->adminUserSigningIn(); + $project = factory(Project::class)->create(); + $issue = factory(Issue::class)->create([ + 'project_id' => $project->id, + 'title' => 'The issue title.', + 'body' => 'This is a project issue body.', + ]); + + $this->visitRoute('projects.issues.show', [$project, $issue]); + $this->seeText($issue->title); + $this->seeText($issue->body); + } + + /** @test */ public function user_can_edit_issue() { $this->adminUserSigningIn();