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

Reply via email to