sounds like both of these are internal tests - not something that is valid for user-land. like i said, factor out those things that replace the providers into an overridable method - and in those tests override it to do nothing...
-igor On Sun, Jun 5, 2011 at 9:23 AM, Martin Grigorov <[email protected]> wrote: > On Sun, Jun 5, 2011 at 7:14 PM, Igor Vaynberg <[email protected]> wrote: >> On Sun, Jun 5, 2011 at 9:01 AM, Martin Grigorov <[email protected]> wrote: >>> Currently MockApplication overrides #internalInit() (why not #init() >>> ?!) and setups almost similar inmemory/mock impls like the ones >>> BaseWicketTester overrides later. >> >> it does, but it is a very common scenario when components under test >> need to access something in application or session which is why we >> tell the users to use their own application class with tester. >> >>> I find it confusing that in my app I have to use #init() { >>> setXYZProvider(...)} but in tests this provider is overridden silently >>> by something else. >> >> which provider is causing you grief specifically? these things are >> mostly wicket internals and transparent to the application. if you >> wanted to test them i doubt you would do it through the wickettester >> itself. > > The first one was ISessionStore - I needed to use HttpSessionStore > (the default one) for WicketSessionFilterTest. > I had to rework BaseWicketTester to be able to actually setup > HttpSessionStore. See commit #1131149. > > Today I needed to setup custom IPageManager and again I needed to > debug why it is ignored/overridden. > Looking at BaseWicketTester I see no other providers that override > silently. I just need to touch the one for IPageManager. > >> >>> Using boolean flag for all providers doesn't seem OK to me. Maybe we >>> can provide BaseWicketTester#newXYZProvider() for all which can be >>> overridden and if this method returns 'null' then don't override. This >>> way the user can allow one inmemory impl but ignore another. >> >> either way works, as long as the default is not changed - eg tests run >> with in-memory store and run fast. >> > I agree with 'fast'. I just didn't like that it is not possible to run > with any other impl. > >> -igor >> >>> >>> On Sun, Jun 5, 2011 at 6:46 PM, Igor Vaynberg <[email protected]> >>> wrote: >>>> i think the memory/mock things should be there by default because they >>>> make the tests run faster. if you want to control it make it a boolean >>>> on the tester itself. putting this kind of logic into application >>>> class seems a little dirty. >>>> >>>> -igor >>>> >>>> On Sun, Jun 5, 2011 at 7:36 AM, Martin Grigorov <[email protected]> >>>> wrote: >>>>> Hi, >>>>> >>>>> I had some troubles recently to setup custom ISessionStore and >>>>> IPageManager for some tests. >>>>> The problem is that BaseWicketTester overrides anything already setup >>>>> in MyApp#init() with the inmemory/mock impls. >>>>> I suggest to move all these inmemory/mock impls in >>>>> MockApplication#init() and all tests that use "new WicketTester()" >>>>> will use those. All user's tests will have to override UserApp#init() >>>>> for the tests if they prefer any inmemory/mock impl, otherwise they >>>>> will use the default impl provided by Wicket (depends on DEPLOYMENT or >>>>> DEVELOPMENT mode). This way they will be more close to the real >>>>> environment and can setup inmemory impl *only* if they decide so. >>>>> >>>>> The only exception are IPageRendererProvider and IRequestCycleProvider >>>>> which has to be special for WicketTester. >>>>> >>>>> WDYT ? >>>>> >>>>> -- >>>>> Martin Grigorov >>>>> jWeekend >>>>> Training, Consulting, Development >>>>> http://jWeekend.com >>>>> >>>> >>> >>> >>> >>> -- >>> Martin Grigorov >>> jWeekend >>> Training, Consulting, Development >>> http://jWeekend.com >>> >> > > > > -- > Martin Grigorov > jWeekend > Training, Consulting, Development > http://jWeekend.com >
