blob: c76cb3c3962afe855d62d5a62d4eb7ec0ffa8202 [file] [log] [blame]
package ioc.specs
import org.apache.tapestry5.ioc.Configuration
import org.apache.tapestry5.ioc.ObjectLocator
import org.apache.tapestry5.ioc.internal.TypeCoercerProxy
import org.apache.tapestry5.ioc.internal.ValidatingConfigurationWrapper
import spock.lang.Specification
class ValidatingConfigurationWrapperSpec extends Specification {
TypeCoercerProxy tc = Mock()
ObjectLocator locator = Mock()
def collection = []
def "valid contribution"() {
Runnable value = Mock()
Configuration config = new ValidatingConfigurationWrapper(Runnable, null, tc, collection, "Baz")
when:
config.add(value)
then:
tc.coerce(value, Runnable) >> value
collection == [value]
}
def "contributed value may be coerced"() {
Runnable value = Mock()
Runnable coerced = Mock()
Configuration config = new ValidatingConfigurationWrapper(Runnable, null, tc, collection, "Baz")
when:
config.add(value)
then:
tc.coerce(value, Runnable) >> coerced
collection == [coerced]
}
def "an instance of a class may be contributed"() {
HashMap contributed = new HashMap()
Map coerced = Mock()
Configuration config = new ValidatingConfigurationWrapper(Map, locator, tc, collection, "Baz")
when:
config.addInstance(HashMap)
then:
locator.autobuild(HashMap) >> contributed
tc.coerce(contributed, Map) >> coerced
collection == [coerced]
}
def "null may not be contributed"() {
Configuration config = new ValidatingConfigurationWrapper(Runnable, null, tc, collection, "Baz")
when:
config.add(null)
then:
NullPointerException e = thrown()
e.message == "Service contribution (to service 'Baz') was null."
}
}