From bce33bf2bf9401618ce97e23bcb7f42ef01bb1bb Mon Sep 17 00:00:00 2001 From: Craig Burke Date: Mon, 6 Aug 2012 21:21:52 -0400 Subject: [PATCH] Upgrading to grails 2.1 adding spock test for EventService --- application.properties | 7 +- grails-app/conf/BuildConfig.groovy | 3 - .../com/craigburke/EventService.groovy | 5 +- .../craigburke/EventControllerTests.groovy | 159 ------------------ .../com/craigburke/EventServiceSpec.groovy | 72 ++++++++ .../com/craigburke/EventServiceTests.groovy | 17 -- test/unit/com/craigburke/EventTests.groovy | 17 -- 7 files changed, 78 insertions(+), 202 deletions(-) delete mode 100644 test/unit/com/craigburke/EventControllerTests.groovy create mode 100644 test/unit/com/craigburke/EventServiceSpec.groovy delete mode 100644 test/unit/com/craigburke/EventServiceTests.groovy delete mode 100644 test/unit/com/craigburke/EventTests.groovy diff --git a/application.properties b/application.properties index 201c0fa..69abc3d 100644 --- a/application.properties +++ b/application.properties @@ -1,7 +1,8 @@ #Grails Metadata file -#Tue Mar 13 21:35:57 EDT 2012 -app.grails.version=2.0.1 +#Mon Aug 06 11:52:08 EDT 2012 +app.grails.version=2.1.0 app.name=google-calendar app.servlet.version=2.5 app.version=0.1 -plugins.cloud-foundry=1.2.1 +plugins.cloud-foundry=1.2.2 +plugins.spock=0.6 diff --git a/grails-app/conf/BuildConfig.groovy b/grails-app/conf/BuildConfig.groovy index 6d0df90..ef771e2 100644 --- a/grails-app/conf/BuildConfig.groovy +++ b/grails-app/conf/BuildConfig.groovy @@ -41,9 +41,6 @@ grails.project.dependency.resolution = { plugins { runtime ":hibernate:$grailsVersion" - runtime ":jquery:1.7.1" - runtime ":resources:1.1.5" - build ":tomcat:$grailsVersion" } } diff --git a/grails-app/services/com/craigburke/EventService.groovy b/grails-app/services/com/craigburke/EventService.groovy index 42a924d..562d9f2 100644 --- a/grails-app/services/com/craigburke/EventService.groovy +++ b/grails-app/services/com/craigburke/EventService.groovy @@ -160,7 +160,6 @@ class EventService { } } else { switch (event.recurType) { - case EventRecurType.DAILY: nextOccurrence = findNextDailyOccurrence(event, afterDate) break @@ -223,7 +222,7 @@ class EventService { boolean occurrenceFound = false while (!occurrenceFound) { - if (nextOccurrence.toDate() >= afterDate && isOnRecurringDay(event, nextOccurrence.toDate())) { + if (nextOccurrence.toDate() > afterDate && isOnRecurringDay(event, nextOccurrence.toDate())) { occurrenceFound = true } else { @@ -284,6 +283,6 @@ class EventService { private def isOnExcludedDay(Event event, Date date) { date = (new DateTime(date)).withTime(0, 0, 0, 0).toDate() - event.excludeDays.contains(date) + event.excludeDays?.contains(date) } } diff --git a/test/unit/com/craigburke/EventControllerTests.groovy b/test/unit/com/craigburke/EventControllerTests.groovy deleted file mode 100644 index bd9e60a..0000000 --- a/test/unit/com/craigburke/EventControllerTests.groovy +++ /dev/null @@ -1,159 +0,0 @@ -package com.craigburke - - - -import org.junit.* -import grails.test.mixin.* - -@TestFor(EventController) -@Mock(Event) -class EventControllerTests { - - - def populateValidParams(params) { - assert params != null - // TODO: Populate valid properties like... - //params["name"] = 'someValidName' - } - - void testIndex() { - controller.index() - assert "/event/list" == response.redirectedUrl - } - - void testList() { - - def model = controller.list() - - assert model.eventInstanceList.size() == 0 - assert model.eventInstanceTotal == 0 - } - - void testCreate() { - def model = controller.create() - - assert model.eventInstance != null - } - - void testSave() { - controller.save() - - assert model.eventInstance != null - assert view == '/event/create' - - response.reset() - - populateValidParams(params) - controller.save() - - assert response.redirectedUrl == '/event/show/1' - assert controller.flash.message != null - assert Event.count() == 1 - } - - void testShow() { - controller.show() - - assert flash.message != null - assert response.redirectedUrl == '/event/list' - - - populateValidParams(params) - def event = new Event(params) - - assert event.save() != null - - params.id = event.id - - def model = controller.show() - - assert model.eventInstance == event - } - - void testEdit() { - controller.edit() - - assert flash.message != null - assert response.redirectedUrl == '/event/list' - - - populateValidParams(params) - def event = new Event(params) - - assert event.save() != null - - params.id = event.id - - def model = controller.edit() - - assert model.eventInstance == event - } - - void testUpdate() { - controller.update() - - assert flash.message != null - assert response.redirectedUrl == '/event/list' - - response.reset() - - - populateValidParams(params) - def event = new Event(params) - - assert event.save() != null - - // test invalid parameters in update - params.id = event.id - //TODO: add invalid values to params object - - controller.update() - - assert view == "/event/edit" - assert model.eventInstance != null - - event.clearErrors() - - populateValidParams(params) - controller.update() - - assert response.redirectedUrl == "/event/show/$event.id" - assert flash.message != null - - //test outdated version number - response.reset() - event.clearErrors() - - populateValidParams(params) - params.id = event.id - params.version = -1 - controller.update() - - assert view == "/event/edit" - assert model.eventInstance != null - assert model.eventInstance.errors.getFieldError('version') - assert flash.message != null - } - - void testDelete() { - controller.delete() - assert flash.message != null - assert response.redirectedUrl == '/event/list' - - response.reset() - - populateValidParams(params) - def event = new Event(params) - - assert event.save() != null - assert Event.count() == 1 - - params.id = event.id - - controller.delete() - - assert Event.count() == 0 - assert Event.get(event.id) == null - assert response.redirectedUrl == '/event/list' - } -} diff --git a/test/unit/com/craigburke/EventServiceSpec.groovy b/test/unit/com/craigburke/EventServiceSpec.groovy new file mode 100644 index 0000000..a95b9b0 --- /dev/null +++ b/test/unit/com/craigburke/EventServiceSpec.groovy @@ -0,0 +1,72 @@ +package com.craigburke + +import grails.test.mixin.* +import grails.plugin.spock.* +import spock.lang.* + +import org.joda.time.* +import static org.joda.time.DateTimeConstants.* + +@TestFor(EventService) +@Mock(Event) +class EventServiceSpec extends UnitSpec { + + @Shared DateTime now + @Shared DateTime mondayNextWeek + @Shared DateTime wednesdayNextWeek + @Shared DateTime fridayNextWeek + @Shared DateTime mondayAfterNext + + @Shared Event mwfEvent + + def setupSpec() { + now = new DateTime() + mondayNextWeek = new DateTime().plusWeeks(1).withDayOfWeek(MONDAY).withTime(0,0,0,0) + wednesdayNextWeek = mondayNextWeek.withDayOfWeek(WEDNESDAY) + fridayNextWeek = mondayNextWeek.withDayOfWeek(FRIDAY) + mondayAfterNext = mondayNextWeek.plusWeeks(1) + + mwfEvent = new Event( + title: 'Repeating MWF Event', + startTime: mondayNextWeek.toDate(), + endTime: mondayNextWeek.plusHours(1).toDate(), + location: "Regular location", + recurType: EventRecurType.WEEKLY, + isRecurring: true, + recurDaysOfWeek: [MONDAY, WEDNESDAY, FRIDAY] + ) + + } + + @Unroll("next occurance of weekly event after #afterDate") + def "next occurrence of a weekly event without excluded days"() { + expect: + service.findNextOccurrence(event, afterDate.toDate()) == expectedResult.toDate() + + where: + event | afterDate | expectedResult + mwfEvent | now | mondayNextWeek + mwfEvent | mondayNextWeek | wednesdayNextWeek + mwfEvent | wednesdayNextWeek | fridayNextWeek + } + + @Unroll("next occurence of weekly event with exclusion after #afterDate") + def "test exclusion of next monday"() { + setup: + mwfEvent.addToExcludeDays(mondayNextWeek.toDate()) + + expect: + service.findNextOccurrence(event, afterDate.toDate()) == expectedResult.toDate() + + + where: + event | afterDate | expectedResult + mwfEvent | now | wednesdayNextWeek + mwfEvent | mondayNextWeek | wednesdayNextWeek + mwfEvent | wednesdayNextWeek | fridayNextWeek + + } + + + +} diff --git a/test/unit/com/craigburke/EventServiceTests.groovy b/test/unit/com/craigburke/EventServiceTests.groovy deleted file mode 100644 index dc26613..0000000 --- a/test/unit/com/craigburke/EventServiceTests.groovy +++ /dev/null @@ -1,17 +0,0 @@ -package com.craigburke - - - -import grails.test.mixin.* -import org.junit.* - -/** - * See the API for {@link grails.test.mixin.services.ServiceUnitTestMixin} for usage instructions - */ -@TestFor(EventService) -class EventServiceTests { - - void testSomething() { - fail "Implement me" - } -} diff --git a/test/unit/com/craigburke/EventTests.groovy b/test/unit/com/craigburke/EventTests.groovy deleted file mode 100644 index e79e228..0000000 --- a/test/unit/com/craigburke/EventTests.groovy +++ /dev/null @@ -1,17 +0,0 @@ -package com.craigburke - - - -import grails.test.mixin.* -import org.junit.* - -/** - * See the API for {@link grails.test.mixin.domain.DomainClassUnitTestMixin} for usage instructions - */ -@TestFor(Event) -class EventTests { - - void testSomething() { - fail "Implement me" - } -}