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 -~----------~----~----~----~------~----~------~--~---
