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-with-a-logged-in-user On Oct 1, 4:53 pm, David Pollak <[email protected]> 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 <[email protected]> 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 > > <[email protected]> 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 <[email protected]> > > 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 --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
