package com.github.j5ik2o.dddbase.example.repository.skinny import java.time.ZonedDateTime import com.github.j5ik2o.dddbase.example.model._ import com.github.j5ik2o.dddbase.example.repository.{ IdGenerator, SpecSupport } import com.github.j5ik2o.dddbase.example.repository.util.{ FlywayWithMySQLSpecSupport, SkinnySpecSupport } import monix.execution.Scheduler.Implicits.global import org.scalatest.{ FreeSpecLike, Matchers } import scalikejdbc.AutoSession class UserAccountRepositoryBySkinnyImplSpec extends FreeSpecLike with FlywayWithMySQLSpecSupport with SkinnySpecSupport with Matchers with SpecSupport { val repository = new UserAccountRepositoryBySkinnyImpl override val tables: Seq[String] = Seq("user_account") val userAccount = UserAccount( id = UserAccountId(IdGenerator.generateIdValue), status = Status.Active, emailAddress = EmailAddress("[email protected]"), password = HashedPassword("aaa"), firstName = "Junichi", lastName = "Kato", createdAt = ZonedDateTime.now, updatedAt = None ) val userAccounts = for (idx <- 1L to 10L) yield UserAccount( id = UserAccountId(IdGenerator.generateIdValue), status = Status.Active, emailAddress = EmailAddress(s"user${idx}@gmail.com"), password = HashedPassword("aaa"), firstName = "Junichi", lastName = "Kato", createdAt = ZonedDateTime.now, updatedAt = None ) "UserAccountRepositoryBySkinny" - { "store" in { val result = (for { _ <- repository.store(userAccount) r <- repository.resolveById(userAccount.id) } yield r).run(AutoSession).runToFuture.futureValue result shouldBe userAccount } "storeMulti" in { val result = (for { _ <- repository.storeMulti(userAccounts) r <- repository.resolveMulti(userAccounts.map(_.id)) } yield r).run(AutoSession).runToFuture.futureValue sameAs(result, userAccounts) shouldBe true } } }