Sweet!!! Thanks Bill for adding a ScalaTest version.  I wanted to but
just did not find the time yesterday. I also don't know ScalaTest very
well but will be working with it shortly.

On Oct 2, 12:37 am, Bill Venners <b...@artima.com> wrote:
> Hi Ryan, David, Eric,
>
> I added a ScalaTest version to your wiki page:
>
> http://wiki.github.com/dpp/liftweb/how-to-unit-test-lift-snippets-wit...
>
> Eric you may want to add a specs version.
>
> Bill
>
>
>
> On Thu, Oct 1, 2009 at 3:03 PM, rstradling <ryanstradl...@gmail.com> wrote:
>
> > Awesome!!! Thanks guys for the help.  It now works.
>
> > I put a how-to wiki document up on github.  For me this was one of
> > those times where my google searches did not seem to turn up anything
> > fruitful, so I thought this how-to would be helpful.  If it is not
> > helpful, then no hard feelings if the page is deleted.  I just wanted
> > to give back.
>
> > Wiki page
> >http://wiki.github.com/dpp/liftweb/how-to-unit-test-lift-snippets-wit...
>
> > On Oct 1, 4:53 pm, David Pollak <feeder.of.the.be...@gmail.com> wrote:
> >> Bill,
> >> Thanks for posting this.  I am, by experience (I started using it, I can 
> >> use
> >> it enough to write basic tests, I know no more) using Specs.  I would
> >> welcome and encourage some sample tests in Lift archetypes that use
> >> ScalaTest.  I want to make sure that folks who pick up Lift get to
> >> experience ScalaTest as well as Specs... that way, folks who have a better
> >> understanding of tests can make better choices.
>
> >> Thanks,
>
> >> David
>
> >> On Thu, Oct 1, 2009 at 1:27 PM, Bill Venners <b...@artima.com> wrote:
>
> >> > Hi Ryan,
>
> >> > It looks like you're currently using a JUnit TestCase. If you want an
> >> > easier port to something that would work you could use a ScalaTest
> >> > Suite like this:
>
> >> > import org.scalatest.Suite
>
> >> > class YourSuite extends Suite {
>
> >> >  val session = new LiftSession("", randomString(20), Empty)
> >> >  val stableTime = now
>
> >> >   override def withFixture(test: NoArgTest) {
>
> >> >    S.initIfUninitted(session) {
> >> >       val user = User.create
> >> >      user.firstName("XXX")
> >> >      user.lastName("YYY")
> >> >      user.save
> >> >      User.logUserIn(user)
> >> >       test()
> >> >     }
> >> >  }
>
> >> >  def testValue() {
> >> >   val xml =
> >> >       <xml:group>
> >> >         <tr>
> >> >             <td>
> >> >                 <p:fullName>My Name</p:fullName>
> >> >             </td>
> >> >             <td>
> >> >                 <p:style>Fighter Style</p:style>
> >> >             </td>
> >> >             <td>
> >> >                 <p:weight>Weight</p:weight>
> >> >             </td>
> >> >         </tr>
> >> >       </xml:group>
> >> >    val trainer = new Trainer()
> >> >    val output = trainer.showPeople(xml)
> >> >     // seems like you need an assertion here...
> >> >  }
> >> > }
>
> >> > A Suite considers methods that start with "test" as tests, like JUnit
> >> > 3, except they don't need to result in Unit so you don't need an extra
> >> > () at the end. The withFixture method is an alternative to
> >> > beforeEach/afterEach, which are like JUnit 3's setUp/tearDown methods.
> >> > Each test gets passed as a function to withFixture, which is
> >> > responsible for executing the test by invoking the function. In this
> >> > case, it is executed in the context created by S. initIfUninitted.
> >> > This is ScalaTest 1.0, which is available as a SNAPSHOT right now but
> >> > should be released proper a week from Monday.
>
> >> >http://www.artima.com/scalatest
>
> >> > Bill
>
> >> > On Thu, Oct 1, 2009 at 9:50 AM, David Pollak
> >> > <feeder.of.the.be...@gmail.com> wrote:
> >> > > Using Specs 1.6:
>
> >> > > object HelloWorldTestSpecs extends Specification {
> >> > >   val session = new LiftSession("", randomString(20), Empty)
> >> > >   val stableTime = now
> >> > >   override def executeExpectations(ex: Examples, t: =>Any): Any = {
> >> > >     S.initIfUninitted(session) {
> >> > >       ... put your User init here.  The User.logUserIn will be within 
> >> > > the
> >> > > context of a session and thus session (and request) vars will be valid
> >> > >     }
> >> > >   }
> >> > >   "HelloWorld Snippet" should {
> >> > >     "Put the time in the node" in {
> >> > >       ... do testing here
> >> > >     }
> >> > >   }
> >> > > }
>
> >> > > Hope this helps.
> >> > > On Thu, Oct 1, 2009 at 8:55 AM, rstradling <ryanstradl...@gmail.com>
> >> > wrote:
>
> >> > >> I have a class called
> >> > >> class Trainer {
> >> > >>   def showPeople(xhtml : Group) : NodeSeq = {
> >> > >>      val user : User = User.currentUser.open_!
> >> > >>      ...
> >> > >>   }
> >> > >> }
>
> >> > >> I then want to write a unit test to test that returns proper xml.
>
> >> > >> The test is written as so
> >> > >>  def testValue() = {
> >> > >>    val xml =
> >> > >>        <xml:group>
> >> > >>          <tr>
> >> > >>              <td>
> >> > >>                  <p:fullName>My Name</p:fullName>
> >> > >>              </td>
> >> > >>              <td>
> >> > >>                  <p:style>Fighter Style</p:style>
> >> > >>              </td>
> >> > >>              <td>
> >> > >>                  <p:weight>Weight</p:weight>
> >> > >>              </td>
> >> > >>          </tr>
> >> > >>        </xml:group>
> >> > >>    val trainer = new Trainer()
> >> > >>    val output = trainer.showPeople(xml)
> >> > >>    ()
> >> > >>  }
>
> >> > >> The User object inherits from MegaProtoUser.
>
> >> > >> The problem is I am not sure how to create a mock user and sign them
> >> > >> in.
> >> > >> I have tried in my unit test
> >> > >> override def setUp : Unit = {
> >> > >>   val user = User.create
> >> > >>   user.firstName("XXX")
> >> > >>   user.lastName("YYY")
> >> > >>   user.save
> >> > >>   User.logUserIn(user)
> >> > >> }
>
> >> > >> The mock user log-in *seems* to work fine but when
> >> > >> User.currentUser.open_! is called it throws an exception on trying to
> >> > >> open an empty box.
>
> >> > >> So either how do I do this or how do others do this type of testing.
> >> > >> I am sure I am missing something simple.
>
> >> > >> Thanks,
> >> > >> ryan
>
> >> > > --
> >> > > Lift, the simply functional web frameworkhttp://liftweb.net
> >> > > Beginning Scalahttp://www.apress.com/book/view/1430219890
> >> > > Follow me:http://twitter.com/dpp
> >> > > Surf the harmonics
>
> >> > --
> >> > Bill Venners
> >> > Artima, Inc.
> >> >http://www.artima.com
>
> >> --
> >> Lift, the simply functional web frameworkhttp://liftweb.net
> >> Beginning Scalahttp://www.apress.com/book/view/1430219890
> >> Follow me:http://twitter.com/dpp
> >> Surf the harmonics
>
> --
> Bill Venners
> Artima, Inc.http://www.artima.com
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to