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

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