It looks like .toAbsolute is null, but without it I can not return a
String. hmm Any thoughts?

On Wed, Sep 10, 2014 at 2:43 PM, George Christman <gchrist...@cardaddy.com>
wrote:

> Lance, I think I'm really close lol. I think my struggles have to do with
> the concept of having to mock a service.
>
> Anyhow I have the following mock
>
> public static PageRenderLinkSource buildPageRenderLinkSource() {
>         PageRenderLinkSource pageRenderLinkSource =
> Mockito.mock(PageRenderLinkSource.class);
>
> when(pageRenderLinkSource.createPageRenderLinkWithContext(TimeSheet.class,
> ETSSEnum.SUPERVISOR, 1L).toAbsoluteURI()).thenReturn("http://test1";);
>
> when(pageRenderLinkSource.createPageRenderLinkWithContext(TimeSheet.class,
> ETSSEnum.SUPERVISOR, 2L).toAbsoluteURI()).thenReturn("http://test2";);
>
> when(pageRenderLinkSource.createPageRenderLinkWithContext(TimeSheet.class,
> ETSSEnum.SUPERVISOR, 3L).toAbsoluteURI()).thenReturn("http://test3";);
>
> when(pageRenderLinkSource.createPageRenderLinkWithContext(TimeSheet.class,
> ETSSEnum.SUPERVISOR, 4L).toAbsoluteURI()).thenReturn("http://test4";);
>
> when(pageRenderLinkSource.createPageRenderLinkWithContext(TimeSheet.class,
> ETSSEnum.SUPERVISOR, 5L).toAbsoluteURI()).thenReturn("http://test5";);
>         return pageRenderLinkSource;
>     }
>
> The service calls it like so
>
> @Override
>     public String getTimeSheetURL(TimeSheetEntity timeSheet, ETSSEnum
> role) {
>         System.out.println(role + " " + timeSheet.getId());
>         return linkSource.createPageRenderLinkWithContext(TimeSheet.class,
> role, timeSheet.getId()).toAbsoluteURI();
>     }
>
> And now I get the following exception, any idea what I might be missing?
>
> [TestNG] Running:
>   Command line suite
>
> [WARN ] (ConfigContext.java:257) - HSEARCH000075: Configuration setting
> hibernate.search.lucene_version was not specified, using LUCENE_CURRENT.
> [WARN ] (Config.java:360) - You should not use LUCENE_CURRENT as
> luceneMatchVersion property: if you use this setting, and then Solr
> upgrades to a newer release of Lucene, sizable changes may happen. If
> precise back compatibility is important then you should instead explicitly
> specify an actual Lucene version.
> testSendEmailReport size 5
> supervisor 1
> [ERROR] (OperationTrackerImpl.java:192) - Error invoking method public
> static org.apache.tapestry5.services.PageRenderLinkSource
> org.healthresearch.etss.services.AppModuleTest.buildPageRenderLinkSource():
> java.lang.NullPointerException
> [ERROR] (OperationTrackerImpl.java:193) - Operations trace:
> [ERROR] (OperationTrackerImpl.java:202) - [ 1] Realizing service
> PageRenderLinkSource
> [ERROR] (OperationTrackerImpl.java:202) - [ 2] Instantiating service
> PageRenderLinkSource implementation via
> org.healthresearch.etss.services.AppModuleTest.buildPageRenderLinkSource()
> (at AppModuleTest.java:155)
> [ERROR] (OperationTrackerImpl.java:202) - [ 3] Constructing service
> implementation via
> org.healthresearch.etss.services.AppModuleTest.buildPageRenderLinkSource()
> (at AppModuleTest.java:155)
> [ERROR] (RecursiveServiceCreationCheckWrapper.java:65) - Construction of
> service PageRenderLinkSource failed: Error invoking method public static
> org.apache.tapestry5.services.PageRenderLinkSource
> org.healthresearch.etss.services.AppModuleTest.buildPageRenderLinkSource():
> java.lang.NullPointerException
> org.apache.tapestry5.ioc.internal.OperationException: Error invoking
> method public static org.apache.tapestry5.services.PageRenderLinkSource
> org.healthresearch.etss.services.AppModuleTest.buildPageRenderLinkSource():
> java.lang.NullPointerException
>     at
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.logAndRethrow(OperationTrackerImpl.java:184)
>     at
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:90)
>     at
> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:72)
>     at
> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1258)
>     at
> org.apache.tapestry5.ioc.internal.util.ConstructionPlan.createObject(ConstructionPlan.java:61)
>     at
> org.apache.tapestry5.ioc.internal.ServiceBuilderMethodInvoker.createObject(ServiceBuilderMethodInvoker.java:61)
>     at
> org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:47)
>     at
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:82)
>     at
> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:72)
>     at
> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1258)
>     at
> org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:51)
>     at
> org.apache.tapestry5.ioc.internal.SingletonServiceLifecycle.createService(SingletonServiceLifecycle.java:30)
>     at
> org.apache.tapestry5.ioc.internal.LifecycleWrappedServiceCreator.createObject(LifecycleWrappedServiceCreator.java:47)
>     at
> org.apache.tapestry5.ioc.internal.AdvisorStackBuilder.createObject(AdvisorStackBuilder.java:64)
>     at
> org.apache.tapestry5.ioc.internal.InterceptorStackBuilder.createObject(InterceptorStackBuilder.java:55)
>     at
> org.apache.tapestry5.ioc.internal.RecursiveServiceCreationCheckWrapper.createObject(RecursiveServiceCreationCheckWrapper.java:61)
>     at
> org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:47)
>     at
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:82)
>     at
> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:72)
>     at
> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1258)
>     at
> org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:51)
>     at
> org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.obtainObjectFromCreator(JustInTimeObjectCreator.java:67)
>     at
> org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.createObject(JustInTimeObjectCreator.java:55)
>     at $PageRenderLinkSource_4090b27e85db6.delegate(Unknown Source)
>     at
> $PageRenderLinkSource_4090b27e85db6.createPageRenderLinkWithContext(Unknown
> Source)
>     at
> org.healthresearch.etss.services.email.impl.EmailHelperImpl.getTimeSheetURL(EmailHelperImpl.java:69)
>     at
> org.healthresearch.etss.services.email.impl.EmailHelperImpl.initiateSupervisorReminder(EmailHelperImpl.java:45)
>     at $EmailHelper_4090b27e85dbd.initiateSupervisorReminder(Unknown
> Source)
>     at $EmailHelper_4090b27e85dbc.initiateSupervisorReminder(Unknown
> Source)
>     at
> org.healthresearch.etss.services.email.impl.EmailServiceImpl.sendSupervisorReminderEmail(EmailServiceImpl.java:123)
>     at $EmailService_4090b27e85db4.sendSupervisorReminderEmail(Unknown
> Source)
>     at $EmailService_4090b27e85d95.sendSupervisorReminderEmail(Unknown
> Source)
>     at
> org.healthresearch.etss.services.email.impl.EmailServiceImplTest.testSendEmailReport(EmailServiceImplTest.java:52)
>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>     at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>     at java.lang.reflect.Method.invoke(Method.java:601)
>     at
> org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
>     at org.testng.internal.Invoker.invokeMethod(Invoker.java:702)
>     at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:894)
>     at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1219)
>     at
> org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
>     at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
>     at org.testng.TestRunner.privateRun(TestRunner.java:768)
>     at org.testng.TestRunner.run(TestRunner.java:617)
>     at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
>     at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)
>     at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
>     at org.testng.SuiteRunner.run(SuiteRunner.java:240)
>     at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53)
>     at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:87)
>     at org.testng.TestNG.runSuitesSequentially(TestNG.java:1188)
>     at org.testng.TestNG.runSuitesLocally(TestNG.java:1113)
>     at org.testng.TestNG.run(TestNG.java:1025)
>     at org.testng.TestNG.privateMain(TestNG.java:1328)
>     at org.testng.TestNG.main(TestNG.java:1297)
> Caused by: java.lang.RuntimeException: Error invoking method public static
> org.apache.tapestry5.services.PageRenderLinkSource
> org.healthresearch.etss.services.AppModuleTest.buildPageRenderLinkSource():
> java.lang.NullPointerException
>     at
> org.apache.tapestry5.ioc.internal.util.MethodInvoker.invoke(MethodInvoker.java:63)
>     at
> org.apache.tapestry5.ioc.internal.util.LoggingInvokableWrapper.invoke(LoggingInvokableWrapper.java:43)
>     at
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:82)
>     ... 54 more
> Caused by: java.lang.NullPointerException
>     at
> org.healthresearch.etss.services.AppModuleTest.buildPageRenderLinkSource(AppModuleTest.java:156)
>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>     at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>     at java.lang.reflect.Method.invoke(Method.java:601)
>     at
> org.apache.tapestry5.ioc.internal.util.MethodInvoker.invoke(MethodInvoker.java:52)
>     ... 56 more
>
>
>
> On Wed, Sep 10, 2014 at 1:14 PM, Lance Java <lance.j...@googlemail.com>
> wrote:
>
>> Ah, ok..
>>
>> Adding the tapestry web module will cause headaches. I suggest you add
>> builder methods to your test module for the specific web dependencies
>> required for the service under test. Similar to how the Request is
>> currently mocked.
>>  On 10 Sep 2014 18:09, "George Christman" <gchrist...@cardaddy.com>
>> wrote:
>>
>> > Integration testing.
>> >
>> > On Wed, Sep 10, 2014 at 1:06 PM, Lance Java <lance.j...@googlemail.com>
>> > wrote:
>> >
>> > > There's 2 types of tests that I feel are getting blurred here
>> > >
>> > > 1. Unit test - tests a single class. All dependencies are mocked
>> > >
>> > > 2. Integration test - tests 2 or more services in concert (might
>> involve
>> > a
>> > > tapestry module and an in memory database)
>> > >
>> > > Which test are you trying to achieve here?
>> > >  On 10 Sep 2014 17:53, "Lance Java" <lance.j...@googlemail.com>
>> wrote:
>> > >
>> > > > Unit tests don't need a module at all. Your colleague could mock the
>> > > > PageRenderLinkSource using Mockito and pass it to the EmailService
>> > > > constructor. Then test the hell out of it!
>> > > > On 10 Sep 2014 17:41, "George Christman" <gchrist...@cardaddy.com>
>> > > wrote:
>> > > >
>> > > >> Thanks Lance, I figured out the DAO issue :) Anyhow this happens
>> to be
>> > > my
>> > > >> day job project and my co-worker is looking to test his generated
>> > > emails.
>> > > >> So if I understand you correctly, I need to include the
>> tapestry-core?
>> > > If
>> > > >> so, is that just a mater of including TapestryModule or no?
>> > > >>
>> > > >> On Wed, Sep 10, 2014 at 12:29 PM, Lance Java <
>> > lance.j...@googlemail.com
>> > > >
>> > > >> wrote:
>> > > >>
>> > > >> > Hi George, PageRenderLinkSource is a part of the web framework.
>> > > >> >
>> > > >> > I mentioned before that you could split your app into 2 modules:
>> > > >> > api - depends on tapestry-ioc
>> > > >> > web - depends on tapestry-core
>> > > >> >
>> > > >> > The test case I setup for you only tests the api stuff
>> > (tapestry-ioc).
>> > > >> If
>> > > >> > you split into 2 modules this would be easy to see (since
>> > > >> > PageRenderLinkSource would not be on the test classpath).
>> > > >> >
>> > > >>
>> > > >>
>> > > >>
>> > > >> --
>> > > >> George Christman
>> > > >> www.CarDaddy.com
>> > > >> P.O. Box 735
>> > > >> Johnstown, New York
>> > > >>
>> > > >
>> > >
>> >
>> >
>> >
>> > --
>> > George Christman
>> > www.CarDaddy.com
>> > P.O. Box 735
>> > Johnstown, New York
>> >
>>
>
>
>
> --
> George Christman
> www.CarDaddy.com
> P.O. Box 735
> Johnstown, New York
>
>


-- 
George Christman
www.CarDaddy.com
P.O. Box 735
Johnstown, New York

Reply via email to