Trying this out now - is there an easy way to start a project from the latest snapshot. Changing the version in the archetype to 1.1-SNAPSHOT didn't work, but that was just wishful thinking. I will compile the source and give this a try, but making a nightly snapshot available wouldn't be a bad idea.
-Dustin On Thu, Sep 10, 2009 at 12:07 PM, David Pollak < [email protected]> wrote: > > > On Thu, Sep 10, 2009 at 9:05 AM, <[email protected]> wrote: > >> Cool, thanks! And this all works in 1.0.1? >> > > No, it's brand new in 1.1-SNAPSHOT. > > I discourage using 1.0/1.0.1 While we're fixing bugs in 1.0, we're not > actively adding features to this version and Lift has matured quite a bit in > the last 6 months in terms of developer friendliness. > > >> >> -Dustin >> >> On Sep 9, 2009 9:35pm, David Pollak <[email protected]> >> wrote: >> > Dustin, >> > >> > I've updated the Basic archetype to include a couple of things: >> > An example of Lift's new Factory support which blends the best of >> dependency injection and and highly configurable, type-safe factories >> > An example of how to set up a session to test a snippetAn example of >> injecting a test value into the snippet test via the factoryThe test that >> you asked about looks like: >> > >> > >> > >> > object HelloWorldTestSpecs extends Specification { >> > >> > val session = new LiftSession("", randomString(20), Empty) >> > >> > >> > "HelloWorld Snippet" should { >> > "Put the time in the node" in { >> > >> > S.initIfUninitted(session) { >> > val stableTime = now >> > >> > DependencyFactory.time.doWith(stableTime) { >> > val hello = new HelloWorld >> > >> > Thread.sleep(1000) // make sure the time changes >> >> > >> > >> > val str = hello.howdy(Hello at ).toString >> > >> > >> > str.indexOf(stableTime.toString) must be >= 0 >> > >> > str.indexOf("Hello at") must be >= 0 >> > } >> > >> > } >> > } >> > } >> > >> > } >> > >> > This demonstrates creating a mock LiftSession and setting up S with >> "initIfUnitted". >> > >> > >> > >> > The DepencyFactory.time.doWith sets up a new value to be generated from >> the DepencyFactory.time object (rather than using the global default >> function, the stableTime value is used.) >> > >> > >> > >> > In the HelloWord snippet, we inject the value of the time object: >> > >> > >> > >> > >> > class HelloWorld { >> > >> > import DependencyFactory._ // Import the Dependency Injector >> >> > >> > >> > val date = inject[Date] // inject the date >> >> > >> > // lazy val date = DependencyFactory.time.make // create the date via >> factory >> > >> > >> >> > >> > def howdy(in: NodeSeq): NodeSeq = >> > Helpers.bind("b", in, "time" -> date.map(d => Text(d.toString))) >> > >> > } >> > >> > Note there are two ways of getting the time. The inject method will >> locate a Maker for a java.util.Date. This is a whole lot less (in my >> opinion) optimal than the second option, which explicitly calls the time >> factory. In either case, the current time Maker (global, session-specific, >> request-specific, and stack-specific) is consulted. >> > >> > >> > >> > To build the Factory itself: >> > >> > >> > >> > >> > >> > object DependencyFactory extends Factory { >> > >> > implicit object time extends FactoryMaker(Helpers.now _) >> > } >> > >> > >> > I hope this answers you question about testing snippets and more broadly >> addresses some of the recent discussions on the list about Dependency >> Injection, Factories, mocks, and testing. >> > >> > >> > >> > Thanks, >> > >> > >> > David >> > >> > >> > >> > >> > >> > >> > On Wed, Sep 9, 2009 at 1:05 PM, Dustin Whitney [email protected]> >> wrote: >> > >> > All, >> > >> > I am having trouble finding any literature on how to test a Lift >> app. I've got a snippet. I'd like to mock a request and test the NodeSeq >> that comes back from the render method in my snippet. Can anyone point me >> to some code that's doing that? >> > >> > >> > >> > Thanks, >> > Dustin >> > >> > >> > >> > >> > >> > >> > >> > -- >> > Lift, the simply functional web framework http://liftweb.net >> > Beginning Scala http://www.apress.com/book/view/1430219890 >> > >> > Follow me: http://twitter.com/dpp >> > Git some: http://github.com/dpp >> > >> > >> > >> > >> > >> > Beginning Scala http://www.apress.com/book/view/1430219890 >> Follow me: http://twitter.com/dpp >> Git some: http://github.com/dpp >> >> >> >> --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~----------~----~----~----~------~----~------~--~---
