Skip to content

Instantly share code, notes, and snippets.

@supermanue
Created March 26, 2022 18:31
Show Gist options
  • Save supermanue/f5fc13e50be9a6de0ec644097f250ba0 to your computer and use it in GitHub Desktop.
Save supermanue/f5fc13e50be9a6de0ec644097f250ba0 to your computer and use it in GitHub Desktop.
UserTesting
object UserServiceTest extends DefaultRunnableSpec with DomainFixtures {
def spec: ZSpec[TestEnvironment, Failure] =
suite("UserService unit test")(
testM("get a non existing user should fail") {
assertM(getUser(100).run)(fails(anything))
},
testM("create a user then get it should return the same user ") {
checkM(userGen) { user =>
for {
created <- createUser(user.id.value, user.name.value)
retrieved <- getUser(user.id.value)
} yield assert(created)(equalTo(user)) &&
assert(retrieved)(equalTo(user))
}
},
testM("delete user should return true if it is deleted") {
for {
deleted <- deleteUser(14).either
notFound <- getUser(14).either
} yield assert(deleted)(isRight(isTrue)) &&
assert(notFound.left.getOrElse(false).isInstanceOf[UserNotFound])(isTrue)
}
).provideSomeLayer[TestEnvironment](TestDB.layer)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment