blob: d429b0bc3a09b2e6a3b088cf977ebc94b7497953 [file] [log] [blame]
package ioc.specs
import org.apache.tapestry5.ioc.BarneyModule;
import org.apache.tapestry5.ioc.CatchAllServiceConfigurationListener;
import org.apache.tapestry5.ioc.Greeter
import org.apache.tapestry5.ioc.FredModule
import org.apache.tapestry5.ioc.GreeterModule
import org.apache.tapestry5.ioc.HelterModule
import org.apache.tapestry5.ioc.NameListHolder;
import org.apache.tapestry5.ioc.StringLookup;
import org.apache.tapestry5.ioc.internal.services.StartupModule2
class RegistrySpec extends AbstractRegistrySpecification {
def "symbol in Registry.getService() is expanded"() {
buildRegistry GreeterModule
when:
def greeter = getService '${greeter}', Greeter
then:
greeter.greeting == "Hello"
greeter.toString() == "<Proxy for HelloGreeter(org.apache.tapestry5.ioc.Greeter)>"
}
def "circular module references are ignored"() {
buildRegistry HelterModule
when:
def helter = getService "Helter", Runnable
def skelter = getService "Skelter", Runnable
then:
!helter.is(skelter)
}
def "@Startup annotation support"() {
when:
buildRegistry StartupModule2
then:
!StartupModule2.staticStartupInvoked
!StartupModule2.instanceStartupInvoked
when:
performRegistryStartup()
then:
StartupModule2.staticStartupInvoked
StartupModule2.instanceStartupInvoked
}
def "ServiceConfigurationListener"() {
buildRegistry FredModule, BarneyModule
// for a given service, its configuration is only notified to the ServiceConfigurationListeners
// when the service itself is realized, so we call one method of each to force their realization.
getService(StringLookup).keys()
getService("OrderedNames", NameListHolder).getNames()
getService("UnorderedNames", NameListHolder).getNames()
when:
def listener = getService CatchAllServiceConfigurationListener
def mappedConfiguration = listener.getMappedConfigurations().get("StringLookup")
def orderedConfiguration = listener.getOrderedConfigurations().get("OrderedNames");
def unorderedConfiguration = listener.getUnorderedConfigurations().get("UnorderedNames");
then:
mappedConfiguration.size() == 4
mappedConfiguration.get("fred").equals("FRED")
mappedConfiguration.get("wilma").equals("WILMA")
mappedConfiguration.get("barney").equals("BARNEY")
mappedConfiguration.get("betty").equals("BETTY")
orderedConfiguration == ['BARNEY', 'FRED']
unorderedConfiguration.size() == 3
unorderedConfiguration.contains 'UnorderedNames'
unorderedConfiguration.contains 'Beta'
unorderedConfiguration.contains 'Gamma'
}
}