package ioc.specs

import org.apache.tapestry5.ioc.Greeter
import org.apache.tapestry5.ioc.ServiceBuilderModule

class ServiceBinderSpec extends AbstractRegistrySpecification {

  def "a service implementation may be created via a ServiceBuilder callback"() {
    buildRegistry ServiceBuilderModule

    when:

    def g = getService "Greeter", Greeter

    then:
    g.greeting == "Greetings from service Greeter."
  }

  def "verify exception reporting for ServiceBuilder that throws an exception"() {

    buildRegistry ServiceBuilderModule

    def g = getService "BrokenGreeter", Greeter

    when:

    g.greeting

    then:

    Exception e = thrown()

    e.message.contains "Exception constructing service 'BrokenGreeter'"
    e.message.contains "Failure inside ServiceBuilder callback."
  }

}
