If you want to retrieve a user from an existing database, you can do the following:
"Given the following user: ${Mik}" ^ user ^
val user: Given[User] = (name: String) => database.getUserByName(name)
Now you might want to populate your database with users before doing that. One possibility is indeed to use Datatables:
def populateDatabase =
"name" || "job" | "e-mail" |
"mik" !! "engineer" ! "mik@mik.com" |
"eric" !! "engineer" ! "eric@eric.com" | { (name, job, email) =>
database.saveUser(User(name, job, email)) must not(throwAn[Exception])
}
and put this in a Step
before your G/W/T group:
Step(populateDatabase) ^
"Given the following user: ${Mik}" ^ user ^
"This user should be an ${engineer} ^ jobOk ^
end
val user: Given[User] = (name: String) => database.getUserByName(name)
val jobOk: Then[User] = (user: User) => (job: String) => user.job must_== job