Thanks! working like a charm! -Dustin
On Fri, Sep 11, 2009 at 1:29 PM, David Pollak <[email protected] > wrote: > > > On Fri, Sep 11, 2009 at 10:04 AM, Dustin Whitney <[email protected] > > wrote: > >> 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. > > > What "didn't work"? Changing to 1.1-SNAPSHOT in the pom.xml file and > updating the Scala version to 2.7.5 should give you all these features. > > >> I will compile the source and give this a try, but making a nightly >> snapshot available wouldn't be a bad idea. >> > > The nightly snapshot is available. Everything is that goes into GitHub > gets built by Hudson and deployed out to Scala-tools.org within an hour or > two. > > >> >> -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 >>>> >>>> >>>> >> >> >> > > > -- > 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 > > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
