package test import org.specs2.mutable._ import play.api.test._ import play.api.test.Helpers._ class ApplicationSpec extends Specification { import models._ // -- Date helpers def dateIs(date: java.util.Date, str: String) = new java.text.SimpleDateFormat("yyyy-MM-dd").format(date) == str // -- "Application" should { "redirect to the computer list on /" in { val result = controllers.Application.index(FakeRequest()) status(result) must equalTo(SEE_OTHER) redirectLocation(result) must beSome.which(_ == "/computers") } "list computers on the the first page" in { running(FakeApplication(additionalConfiguration = inMemoryDatabase())) { val result = controllers.Application.list(0, 2, "")(FakeRequest()) status(result) must equalTo(OK) contentAsString(result) must contain("574 computers found") } } "filter computer by name" in { running(FakeApplication(additionalConfiguration = inMemoryDatabase())) { val result = controllers.Application.list(0, 2, "Apple")(FakeRequest()) status(result) must equalTo(OK) contentAsString(result) must contain("13 computers found") } } "create new computer" in { running(FakeApplication(additionalConfiguration = inMemoryDatabase())) { val badResult = controllers.Application.save(FakeRequest()) status(badResult) must equalTo(BAD_REQUEST) val badDateFormat = controllers.Application.save( FakeRequest().withFormUrlEncodedBody("name" -> "FooBar", "introduced" -> "badbadbad", "company" -> "1") ) status(badDateFormat) must equalTo(BAD_REQUEST) contentAsString(badDateFormat) must contain("""""") contentAsString(badDateFormat) must contain("""""") contentAsString(badDateFormat) must contain("""""") val result = controllers.Application.save( FakeRequest().withFormUrlEncodedBody("name" -> "FooBar", "introduced" -> "2011-12-24", "company" -> "1") ) status(result) must equalTo(SEE_OTHER) redirectLocation(result) must beSome.which(_ == "/computers") flash(result).get("success") must beSome.which(_ == "Computer FooBar has been created") val list = controllers.Application.list(0, 2, "FooBar")(FakeRequest()) status(list) must equalTo(OK) contentAsString(list) must contain("One computer found") } } } }