mirror of
https://github.com/dyrkin/luxmed-bot.git
synced 2025-12-24 06:28:37 +01:00
#3 Refactored tests
This commit is contained in:
11
server/src/test/scala/com/lbs/server/actor/AkkaTestKit.scala
Normal file
11
server/src/test/scala/com/lbs/server/actor/AkkaTestKit.scala
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
package com.lbs.server.actor
|
||||||
|
|
||||||
|
import akka.actor.ActorSystem
|
||||||
|
import akka.testkit.{ImplicitSender, TestKit}
|
||||||
|
import org.scalatest.{BeforeAndAfterAll, WordSpecLike}
|
||||||
|
|
||||||
|
abstract class AkkaTestKit extends TestKit(ActorSystem()) with ImplicitSender with WordSpecLike with BeforeAndAfterAll {
|
||||||
|
override def afterAll(): Unit = {
|
||||||
|
TestKit.shutdownActorSystem(system)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,30 +1,18 @@
|
|||||||
package com.lbs.server.actor
|
package com.lbs.server.actor
|
||||||
|
|
||||||
import akka.actor.{ActorRef, ActorSystem}
|
|
||||||
import akka.testkit.{ImplicitSender, TestKit, TestProbe}
|
|
||||||
import com.lbs.bot.model.{Command, Message, MessageSource, TelegramMessageSourceSystem}
|
import com.lbs.bot.model.{Command, Message, MessageSource, TelegramMessageSourceSystem}
|
||||||
import com.lbs.server.actor.Chat.Init
|
import com.lbs.server.actor.Chat.Init
|
||||||
import com.lbs.server.actor.Login.{ForwardCommand, LoggedIn, UserId}
|
import com.lbs.server.actor.Login.{ForwardCommand, LoggedIn, UserId}
|
||||||
import com.lbs.server.service.DataService
|
import com.lbs.server.service.DataService
|
||||||
import org.mockito.Mockito._
|
import org.mockito.Mockito._
|
||||||
import org.scalatest.{BeforeAndAfterAll, WordSpecLike}
|
|
||||||
|
|
||||||
class AuthSpec extends TestKit(ActorSystem()) with ImplicitSender with WordSpecLike with BeforeAndAfterAll {
|
class AuthSpec extends AkkaTestKit with Mocks {
|
||||||
override def afterAll(): Unit = {
|
|
||||||
TestKit.shutdownActorSystem(system)
|
|
||||||
}
|
|
||||||
|
|
||||||
"An Auth actor " when {
|
"An Auth actor " when {
|
||||||
val source = MessageSource(TelegramMessageSourceSystem, "1")
|
val source = MessageSource(TelegramMessageSourceSystem, "1")
|
||||||
val userId = UserId(1L, source)
|
val userId = UserId(1L, source)
|
||||||
|
|
||||||
"user is unauthorized" must {
|
"user is unauthorized" must {
|
||||||
val unauthorizedHelpActor = TestProbe()
|
|
||||||
val loginActor = TestProbe()
|
|
||||||
val chatActor = TestProbe()
|
|
||||||
val unauthorizedHelpFactory: MessageSource => ActorRef = _ => unauthorizedHelpActor.ref
|
|
||||||
val loginActorFactory: (MessageSource, ActorRef) => ActorRef = (_, _) => loginActor.ref
|
|
||||||
val chatActorFactory: UserId => ActorRef = _ => chatActor.ref
|
|
||||||
val dataService = mock(classOf[DataService])
|
val dataService = mock(classOf[DataService])
|
||||||
val auth = system.actorOf(Auth.props(source, dataService, unauthorizedHelpFactory, loginActorFactory, chatActorFactory))
|
val auth = system.actorOf(Auth.props(source, dataService, unauthorizedHelpFactory, loginActorFactory, chatActorFactory))
|
||||||
|
|
||||||
@@ -75,12 +63,6 @@ class AuthSpec extends TestKit(ActorSystem()) with ImplicitSender with WordSpecL
|
|||||||
}
|
}
|
||||||
|
|
||||||
"user is authorized" must {
|
"user is authorized" must {
|
||||||
val unauthorizedHelpActor = TestProbe()
|
|
||||||
val loginActor = TestProbe()
|
|
||||||
val chatActor = TestProbe()
|
|
||||||
val unauthorizedHelpFactory: MessageSource => ActorRef = _ => unauthorizedHelpActor.ref
|
|
||||||
val loginActorFactory: (MessageSource, ActorRef) => ActorRef = (_, _) => loginActor.ref
|
|
||||||
val chatActorFactory: UserId => ActorRef = _ => chatActor.ref
|
|
||||||
val dataService = mock(classOf[DataService])
|
val dataService = mock(classOf[DataService])
|
||||||
val auth = system.actorOf(Auth.props(source, dataService, unauthorizedHelpFactory, loginActorFactory, chatActorFactory))
|
val auth = system.actorOf(Auth.props(source, dataService, unauthorizedHelpFactory, loginActorFactory, chatActorFactory))
|
||||||
|
|
||||||
|
|||||||
18
server/src/test/scala/com/lbs/server/actor/Mocks.scala
Normal file
18
server/src/test/scala/com/lbs/server/actor/Mocks.scala
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
package com.lbs.server.actor
|
||||||
|
|
||||||
|
import akka.actor.{ActorRef, ActorSystem}
|
||||||
|
import akka.testkit.TestProbe
|
||||||
|
import com.lbs.bot.model.MessageSource
|
||||||
|
import com.lbs.server.actor.Login.UserId
|
||||||
|
|
||||||
|
trait Mocks {
|
||||||
|
|
||||||
|
protected implicit val system: ActorSystem
|
||||||
|
|
||||||
|
protected val unauthorizedHelpActor = TestProbe()
|
||||||
|
protected val loginActor = TestProbe()
|
||||||
|
protected val chatActor = TestProbe()
|
||||||
|
protected val unauthorizedHelpFactory: MessageSource => ActorRef = _ => unauthorizedHelpActor.ref
|
||||||
|
protected val loginActorFactory: (MessageSource, ActorRef) => ActorRef = (_, _) => loginActor.ref
|
||||||
|
protected val chatActorFactory: UserId => ActorRef = _ => chatActor.ref
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user