diff --git a/app/Http/Controllers/Api/IncidentTemplateController.php b/app/Http/Controllers/Api/IncidentTemplateController.php new file mode 100644 index 00000000..b4f73358 --- /dev/null +++ b/app/Http/Controllers/Api/IncidentTemplateController.php @@ -0,0 +1,51 @@ +sort($sortBy, $direction); + } + + $templates = $templates->paginate(Binput::get('per_page', 20)); + + return $this->paginator($templates, Request::instance()); + } + + /** + * Get a single incident templates. + * + * @param \CachetHQ\Cachet\Models\IncidentTemplate $incidentTemplate + * + * @return \Illuminate\Http\JsonResponse + */ + public function show(IncidentTemplate $incidentTemplate) + { + return $this->item($incidentTemplate); + } +} diff --git a/app/Http/Routes/ApiRoutes.php b/app/Http/Routes/ApiRoutes.php index d18e4064..2db79259 100644 --- a/app/Http/Routes/ApiRoutes.php +++ b/app/Http/Routes/ApiRoutes.php @@ -47,8 +47,11 @@ class ApiRoutes $router->get('components/{component}', 'ComponentController@show'); $router->get('incidents', 'IncidentController@index'); - $router->get('incidents/{incident}', 'IncidentController@show'); + $router->get('incidents/templates', 'IncidentTemplateController@index'); + $router->get('incidents/templates/{incident_template}', 'IncidentTemplateController@show'); + + $router->get('incidents/{incident}', 'IncidentController@show'); $router->get('incidents/{incident}/updates', 'IncidentUpdateController@index'); $router->get('incidents/{incident}/updates/{update}', 'IncidentUpdateController@show'); diff --git a/tests/Api/IncidentTemplateTest.php b/tests/Api/IncidentTemplateTest.php new file mode 100644 index 00000000..b6b5e486 --- /dev/null +++ b/tests/Api/IncidentTemplateTest.php @@ -0,0 +1,41 @@ + + */ +class IncidentTemplateTest extends AbstractApiTestCase +{ + public function test_can_get_all_incident_templates() + { + $templates = factory(IncidentTemplate::class, 3)->create(); + + $response = $this->json('GET', '/api/v1/incidents/templates'); + + $response->assertJsonFragment([ 'id' => $templates[0]->id ]); + $response->assertJsonFragment([ 'id' => $templates[1]->id ]); + $response->assertJsonFragment([ 'id' => $templates[2]->id ]); + $response->assertStatus(200); + } + + public function test_cannot_get_invalid_incident_template() + { + $response = $this->json('GET', '/api/v1/incidents/templates/1'); + + $response->assertStatus(404); + } + +}