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. > You did *the right thing*. I owe you a beer (or other food or beverage of your choice)! > > 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 <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 > > > > -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://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 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 -~----------~----~----~----~------~----~------~--~---