Asserting on a list of items in Spock

grails-2.0, spock

Solution

A solution could look like this (comments inlined):

// avoid testing with real dates if possible
def today = Calendar.getInstance().clearTime() 

when:
...

then:
weatherList != null
weatherList.size() == 3
// does this list really contain Calendar objects?
weatherList.every { it.forecastDate == today }
// OR, for a potentially better error message
weatherList.each { assert it.forecastDate == today }

Problem

Using Spock 0.7 with Grails 2.04. Trying to set up a testing environment. I need some help in regards to testing a list of objects. I have a list of location objects. I want to test a date on each of those objects. I am iterating over but not sure how to make the test fail if the dates are not equal. Is there a good way to test objects in a list? I have listed below my then block of code. ``` then: weatherList != null weatherList.empty != null weatherList.size() == 3 weatherList.each { Calendar today = Calendar.getInstance(); today.clearTime() if(it.forecastDate != today) { return false } } ```

Original source