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



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

Reply via email to