Skip to content

Instantly share code, notes, and snippets.

@agnaldo4j
Created January 12, 2016 01:33
Show Gist options
  • Save agnaldo4j/5aafa7eea0f4203557be to your computer and use it in GitHub Desktop.
Save agnaldo4j/5aafa7eea0f4203557be to your computer and use it in GitHub Desktop.
Exemplo de teste usando specs2 e arquitetura limpa
/**
* https://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html
* https://vimeo.com/43612849
* https://etorreborre.github.io/specs2/guide/SPECS2-3.7/org.specs2.guide.Matchers.html
*
**/
package com.opportunity.objectives.usecases.user
import com.opportunity.objectives.exceptions.UserInvalidException
import com.opportunity.objectives.model.{Friend, User}
import com.opportunity.objectives.persistence.adapter.user.NewUserPersistenceAdapterMock
import org.specs2.mutable.Specification
class SaveNewFriendsUsecaseSpec extends Specification {
"The save new friends usecase" should {
args(sequential=true)
"Save all new friends" ! usecaseForTest().saveAllNewFriends()
"Try save friends with invalid user" ! usecaseForTest().trySaveFriendsWithInvalidUser()
}
case class usecaseForTest() {
def saveAllNewFriends() = {
val persistenceMock = new NewUserPersistenceAdapterMock()
val usecase = new SaveNewFriendsUsecase(persistenceMock)
val user = User(Map[String,Object]())
val friends = List[Friend]()
val savedUser = usecase.save(user, friends)
val savedFriends = persistenceMock.findAllFriendsOf(savedUser)
savedFriends.size must be equalTo 1
}
def trySaveFriendsWithInvalidUser() = {
val persistenceMock = new NewUserPersistenceAdapterMock()
val usecase = new SaveNewFriendsUsecase(persistenceMock)
val user = User(Map[String,Object]())
val friends = List[Friend]()
usecase.save(user, friends) must throwA[UserInvalidException]
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment