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

Reply via email to