Hi David,

Thanks. I appreciate that. I was actually already planning to request
getting some ScalaTest examples in the Lift archetypes right after
ScalaTest 1.0 comes out (on Oct 12, if all goes as planned), and have
already arranged with David Bernard to put ScalaTest examples into
simple-archetype-simple.

I think it is great that we have three decent Scala-specific testing
tools already, specs, ScalaTest, and ScalaCheck, plus the trusty Java
tools JUnit and TestNG. People have a lot of choice, so it is good
that the archetypes would show some of the options. I would also
suggest we include a ScalaCheck example in the archetypes as well. I
can use ScalaCheck from one of the ScalaTest examples I submit if you
like that idea. The downside is that it would add one more dependency,
but really I think people should find out about ScalaCheck.

Bill


On Thu, Oct 1, 2009 at 1: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 framework http://liftweb.net
>> > Beginning Scala http://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 framework http://liftweb.net
> Beginning Scala http://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