diff --git a/app/de/frosner/broccoli/controllers/TemplateController.scala b/app/de/frosner/broccoli/controllers/TemplateController.scala index 0567a25d7..bf097ce68 100644 --- a/app/de/frosner/broccoli/controllers/TemplateController.scala +++ b/app/de/frosner/broccoli/controllers/TemplateController.scala @@ -5,21 +5,20 @@ import javax.inject.Inject import de.frosner.broccoli.models.Template import Template.templateWrites import de.frosner.broccoli.services.TemplateService - import play.api.libs.json.Json -import play.api.mvc.{Action, Controller} +import play.api.mvc.{Action, AnyContent, Controller} class TemplateController @Inject() (templateService: TemplateService) extends Controller { private val templates = templateService.templates - def list = Action { + def list: Action[AnyContent] = Action { Ok(Json.toJson(templateService.templates)) } - def show(id: String) = Action { - templates.find(_.id == id).map(template => Ok(Json.toJson(template))).getOrElse(NotFound) + def show(id: String): Action[AnyContent] = Action { + templateService.template(id).map(template => Ok(Json.toJson(template))).getOrElse(NotFound) } } diff --git a/test/de/frosner/broccoli/controllers/TemplateControllerSpec.scala b/test/de/frosner/broccoli/controllers/TemplateControllerSpec.scala index 70108ea79..05404db52 100644 --- a/test/de/frosner/broccoli/controllers/TemplateControllerSpec.scala +++ b/test/de/frosner/broccoli/controllers/TemplateControllerSpec.scala @@ -11,7 +11,7 @@ import play.api.mvc.BodyParsers class TemplateControllerSpec extends PlaySpecification { - "/templates" should { + "list templates" should { "list all available templates" in { implicit ee: ExecutionEnv => val templateService = mock(classOf[TemplateService]) @@ -22,7 +22,7 @@ class TemplateControllerSpec extends PlaySpecification { ) when(templateService.templates).thenReturn(Seq(template)) val controller = new TemplateController(templateService) - + val result = controller.list.apply(FakeRequest()) status(result) must be equalTo 200 contentAsJson(result) must be equalTo JsArray(Seq( @@ -36,4 +36,36 @@ class TemplateControllerSpec extends PlaySpecification { } + "show template" should { + + "return the template if it exists" in { implicit ee: ExecutionEnv => + val templateService = mock(classOf[TemplateService]) + val template = Template( + id = "id", + template = "template {{name}}", + description = "description" + ) + when(templateService.template("id")).thenReturn(Some(template)) + val controller = new TemplateController(templateService) + + val result = controller.show("id").apply(FakeRequest()) + status(result) must be equalTo 200 + contentAsJson(result) must be equalTo JsObject(Map( + "id" -> JsString(template.id), + "parameters" -> JsArray(Seq(JsString("name"))), + "description" -> JsString(template.description) + )) + } + + "return 404 if the template does not exist" in { + val templateService = mock(classOf[TemplateService]) + when(templateService.template("id")).thenReturn(None) + val controller = new TemplateController(templateService) + + val result = controller.show("id").apply(FakeRequest()) + status(result) must be equalTo 404 + } + + } + }