Skip to content

Commit

Permalink
WIP ->> scala3: Move to scalatestplus-mockito
Browse files Browse the repository at this point in the history
Since `mockito-scala` seems to be non-active, lets try another mockito
wrapper.

Source: mockito/mockito-scala#364 (comment)
  • Loading branch information
jnatten committed Feb 22, 2023
1 parent 54f5107 commit ba61d9e
Show file tree
Hide file tree
Showing 19 changed files with 41 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import no.ndla.network.NdlaClient
import no.ndla.network.clients.{FeideApiClient, RedisClient}
import no.ndla.network.scalatra.{NdlaControllerBase, NdlaSwaggerSupport}
import no.ndla.search.{BaseIndexService, Elastic4sClient, NdlaE4sClient}
import org.mockito.scalatest.MockitoSugar
import org.scalatestplus.mockito.MockitoSugar

trait TestEnvironment
extends Elastic4sClient
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
package no.ndla.articleapi.caching

import no.ndla.articleapi.UnitSuite
import org.mockito.Mockito.{times, verify, when}

class MemoizeTest extends UnitSuite {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ import no.ndla.articleapi.{TestEnvironment, UnitSuite}
import no.ndla.common.model.domain.Availability
import org.json4s.ext.EnumNameSerializer
import org.json4s.{DefaultFormats, Formats}
import org.mockito.ArgumentMatchers._
import org.mockito.ArgumentMatchers.{eq => eqTo, _}
import org.mockito.Mockito.{reset, times, verify, when}
import org.scalatra.test.scalatest.ScalatraFunSuite

import scala.util.{Failure, Success}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ import no.ndla.common.model.domain.{ArticleType, Author, Availability}
import org.json4s.{DefaultFormats, Formats}
import org.json4s.ext.{EnumNameSerializer, JavaTimeSerializers}
import org.json4s.native.Serialization._
import org.mockito.ArgumentMatchers.any
import org.mockito.Mockito.{doReturn, never, reset, verify, verifyNoMoreInteractions, when}
import org.scalatra.test.scalatest.ScalatraFunSuite

import scala.util.{Failure, Success}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ package no.ndla.articleapi.db.migration

import no.ndla.articleapi.db.migration.{BrightcoveApiClient, BrightcoveData, V31__ConvertBrightcoveIds}
import no.ndla.articleapi.{TestEnvironment, UnitSuite}
import org.mockito.Mockito.{lenient, spy, when}

import scala.util.Success

Expand All @@ -31,7 +32,7 @@ class V31__ConvertBrightcoveIdsTest extends UnitSuite with TestEnvironment {
val topicArticleAfter1 =
"""{"id":932,"tags":[{"tags":["handlemønstre","kommunikasjonsprosessen","kundebehov","markedsføre","markedsplan","markedsføring","medievaner","verdikjede"],"language":"nb"},{"tags":["handlemønster","kommunikasjonsprosessen","marknadsføre","marknadsplan","marknadsføring","medievanar","verdikjede"],"language":"nn"}],"notes":[{"note":"Embed plassert før første tekst har blitt slettet og gjort om til visuelt element, dersom det var mulig. Status har blitt endret til 'Til kvalitetssikring'.","user":"System","status":{"other":["IMPORTED"],"current":"PUBLISHED"},"timestamp":"2019-03-29T13:17:08Z"}],"title":[{"title":"Markedsføring og kommunikasjon","language":"nb"},{"title":"Marknadsføring og kommunikasjon","language":"nn"}],"status":{"other":["IMPORTED"],"current":"AWAITING_QUALITY_ASSURANCE"},"content":[{"content":"<section><h2>Hva er markedsføring?</h2><p>Markedsføring som begrep defineres slik i <em>Store norske leksikon</em>:</p><blockquote>Markedsføring dreier seg ikke bare om «kunsten å selge varer, tjenester og ideer», men også om «kunsten å investere i fornøyde kunder».</blockquote><p>Vi kan derfor si at markedsføring handler om:</p><ul><li>å velge ut de produktene kundene ønsker og trenger</li> <li>å bestemme deg for hvilke kunder du vil satse på (målgruppe)</li> <li>å finne ut hvordan produktet skal selges (i butikk, på Internett, fra dør til dør og så videre)</li> <li>å finne ut hvordan du kan yte best mulig kundeservice</li></ul><p>Innenfor emnet markedsføring vil du lære mer om markedsplanen, handlemønster og medievaner, verdikjeden, kommunikasjonsprosessen og ikke minst få tips til utforming av skriftlig informasjon og materiell.</p></section><section><div data-type=\"related-content\"><embed data-article-id=\"933\" data-resource=\"related-content\"></div></section>","language":"nb"},{"content":"<section><h2>Kva er marknadsføring?</h2><p>Marknadsføring som omgrep blir definert slik i <em>Store norske leksikon</em>:</p><blockquote>Markedsføring dreier seg ikke bare om «kunsten å selge varer, tjenester og ideer», men også om «kunsten å investere i fornøyde kunder».</blockquote><p>Vi kan derfor seie at marknadsføring handlar om:</p><ul><li>å velje ut dei produkta kundane ønskjer og treng</li> <li>å bestemme deg for kva slags kundar du vil satse på</li> <li>å finne ut korleis produktet skal seljast (i butikk, på Internett, frå dør til dør og så bortetter)</li> <li>å finne ut korleis du kan yte best mogleg kundeservice</li></ul><p>Innanfor emnet marknadsføring vil du lære meir om marknadsplanen, handlemønster og medievanar, verdikjeda, kommunikasjonsprosessen og ikkje minst få tips til utforming av skriftleg informasjon og materiell.</p></section><section><div data-type=\"related-content\"><embed data-article-id=\"933\" data-resource=\"related-content\"></div></section>","language":"nn"}],"created":"2011-10-24T06:47:03Z","updated":"2018-03-21T09:19:21Z","revision":1,"copyright":{"license":"CC-BY-SA-4.0","creators":[{"name":"Oddvar Torgersen","type":"Writer"},{"name":"Hanne-Lisbet Løite","type":"Writer"}],"processors":[],"rightsholders":[{"name":"Amendor AS","type":"Supplier"},{"name":"NKI Forlaget","type":"Publisher"}]},"metaImage":[{"altText":"Salg i utstillingsvindu. Foto.","imageId":"3258","language":"nb"},{"altText":"Salg i utstillingsvindu. Foto.","imageId":"3258","language":"nn"}],"published":"2018-03-21T09:19:21Z","updatedBy":"r0gHb9Xg3li4yyXv0QSGQczV3bviakrT","articleType":"topic-article","editorLabels":[],"introduction":[{"language":"nb","introduction":"Mange forbinder markedsføring med salg og reklame, men markedsføring handler også om å forstå kundens behov og tilpasse seg en bestemt kundegruppe."},{"language":"nn","introduction":"Mange knyter marknadsføring til sal og reklame, men marknadsføring handlar også om å forstå kunden sine behov og tilpasse seg ei bestemt kundegruppe."}],"visualElement":[{"language":"nb","resource":"<embed data-account=\"4806596774001\" data-caption=\"Markedsføring på fem minutt\" data-player=\"BkLm8fT\" data-resource=\"brightcove\" data-videoid=\"5796444576001\">"},{"language":"nn","resource":"<embed data-account=\"4806596774001\" data-caption=\"Marknadsføring på fem minutt\" data-player=\"BkLm8fT\" data-resource=\"brightcove\" data-videoid=\"5796440234001\">"}],"metaDescription":[{"content":"Hva er markedsføring? Markedsføring er alle de fasene i et arbeid som går ut på å tilfredsstille kundens behov slik at vi tjener penger på det.","language":"nb"},{"content":"Kva er marknadsføring? Marknadsføring er alle dei fasane i eit arbeid som går ut på å tilfredsstille kundebehova slik at vi tener pengar på det.","language":"nn"}],"requiredLibraries":[],"previousVersionsNotes":[]}"""

val migration = spy(new V31__ConvertBrightcoveIds, lenient = true)
val migration = spy(new V31__ConvertBrightcoveIds)
val BcMock = mock[BrightcoveApiClient]

when(migration.Brightcove).thenReturn(BcMock)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,9 @@ import no.ndla.articleapi.model.api.ImportException
import no.ndla.articleapi.{TestEnvironment, UnitSuite}
import no.ndla.common.model.{api => commonApi}
import no.ndla.common.model.RelatedContentLink
import no.ndla.common.model.domain.{Description, Author, Availability, RequiredLibrary, Tag, Title}
import no.ndla.common.model.domain.{Author, Availability, Description, RequiredLibrary, Tag, Title}
import no.ndla.common.model.domain.article.Copyright
import org.mockito.Mockito.when

import java.time.LocalDateTime
import scala.util.Success
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ import no.ndla.common.errors.ValidationException
import no.ndla.common.model.domain.{ArticleContent, ArticleType, Availability, VisualElement}
import no.ndla.network.clients.FeideExtendedUserInfo
import no.ndla.validation.{ResourceType, TagAttributes}
import org.mockito.ArgumentMatchers.any
import org.mockito.Mockito.{reset, times, verify, when}
import scalikejdbc.DBSession

import scala.util.{Failure, Success, Try}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ package no.ndla.articleapi.service

import no.ndla.articleapi.{TestEnvironment, UnitSuite}
import no.ndla.common.model.domain.article.Article
import org.mockito.ArgumentMatchers.{any, anyList}
import org.mockito.Mockito.{reset, times, verify, when}
import org.mockito.invocation.InvocationOnMock
import org.mockito.{ArgumentCaptor, Mockito}
import scalikejdbc.DBSession
Expand Down Expand Up @@ -54,7 +56,7 @@ class WriteServiceTest extends UnitSuite with TestEnvironment {
.copy(revision = articleToUpdate.revision.map(_ + 1), updated = today)

when(articleRepository.withId(10)).thenReturn(Some(toArticleRow(articleToUpdate)))
when(articleRepository.updateArticleFromDraftApi(any[Article], anyList)(any[DBSession]))
when(articleRepository.updateArticleFromDraftApi(any[Article], any)(any[DBSession]))
.thenReturn(Success(updatedAndInserted))

when(articleIndexService.indexDocument(any[Article])).thenReturn(Success(updatedAndInserted))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ import no.ndla.articleapi.{TestEnvironment, UnitSuite}
import no.ndla.common.model.domain.article.Article
import no.ndla.common.model.domain.{ArticleContent, Tag, Title}
import no.ndla.search.model.{SearchableLanguageList, SearchableLanguageValues}
import org.mockito.ArgumentMatchers.any
import org.mockito.Mockito.when
import org.mockito.invocation.InvocationOnMock

class ArticleSearchConverterServiceTest extends UnitSuite with TestEnvironment {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import no.ndla.common.model.domain.{
}
import no.ndla.common.model.domain.article.Copyright
import no.ndla.mapping.License.{CC_BY_SA, NA}
import org.mockito.Mockito.when

import scala.util.Failure

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ import no.ndla.oembedproxy.caching.MemoizeHelpers
import no.ndla.oembedproxy.controller.{HealthController, OEmbedProxyController}
import no.ndla.oembedproxy.model.ErrorHelpers
import no.ndla.oembedproxy.service.{OEmbedServiceComponent, ProviderService}
import org.mockito.scalatest.MockitoSugar
import org.mockito.Mockito.reset
import org.scalatestplus.mockito.MockitoSugar

trait TestEnvironment
extends OEmbedProxyController
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@

package no.ndla.oembedproxy

import org.mockito.scalatest.MockitoSugar
import org.scalatest._
import org.scalatest.funsuite.AnyFunSuite
import org.scalatest.matchers.should.Matchers
import org.scalatestplus.mockito.MockitoSugar

abstract class UnitSuite
extends AnyFunSuite
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ package no.ndla.oembedproxy.caching

import no.ndla.oembedproxy.UnitSuite
import no.ndla.oembedproxy.model.DoNotUpdateMemoizeException
import org.mockito.Mockito._

class MemoizeTest extends UnitSuite {

Expand Down Expand Up @@ -62,7 +63,7 @@ class MemoizeTest extends UnitSuite {

when(targetMock.targetMethod())
.thenReturn("Hello from mock")
.andThenThrow(new DoNotUpdateMemoizeException("Woop"))
.thenThrow(new DoNotUpdateMemoizeException("Woop"))

memoizedTarget() should equal("Hello from mock")
Thread.sleep(cacheMaxAgeInMs)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ package no.ndla.oembedproxy.controller
import no.ndla.network.model.HttpRequestException
import no.ndla.oembedproxy.model.OEmbed
import no.ndla.oembedproxy.{TestEnvironment, UnitSuite}
import org.mockito.ArgumentMatchers.anyString
import org.mockito.ArgumentMatchers.{any, anyString}
import org.mockito.Mockito.when
import org.scalatra.test.scalatest.ScalatraFunSuite

import scala.util.{Failure, Success}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ import no.ndla.network.model.{HttpRequestException, NdlaRequest}
import no.ndla.oembedproxy.caching.Memoize
import no.ndla.oembedproxy.model._
import no.ndla.oembedproxy.{TestEnvironment, UnitSuite}
import org.mockito.ArgumentMatchers.any
import org.mockito.Mockito._
import org.scalatest.TryValues._

import scala.util.{Failure, Success}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ package no.ndla.oembedproxy.service
import no.ndla.network.model.{HttpRequestException, NdlaRequest}
import no.ndla.oembedproxy.model._
import no.ndla.oembedproxy.{TestEnvironment, UnitSuite}
import org.mockito.ArgumentMatchers.any
import org.mockito.Mockito.when
import sttp.client3.quick._

import scala.util.{Failure, Success}
Expand Down
16 changes: 8 additions & 8 deletions project/Dependencies.scala
Original file line number Diff line number Diff line change
Expand Up @@ -56,18 +56,18 @@ object Dependencies {
hikari
)

private lazy val scalaTestAndMockitoBase: Seq[ModuleID] = Seq(
"org.scalatest" %% "scalatest" % ScalaTestV,
"org.mockito" %% "mockito-scala" % MockitoV,
"org.mockito" %% "mockito-scala-scalatest" % MockitoV
)

/** This should only be used if we want to include scalatest and mockito in the main build (not only tests).
* Otherwise use [[scalaTestAndMockito]]
*/
lazy val scalaTestAndMockitoInMain = scalaTestAndMockitoBase.map(_ cross CrossVersion.for3Use2_13)
lazy val scalaTestAndMockitoInMain = Seq(
"org.scalatest" %% "scalatest" % ScalaTestV,
"org.scalatestplus" %% "mockito-4-6" % "3.2.15.0"
)

lazy val scalaTestAndMockito = scalaTestAndMockitoInMain.map(_ % "test" cross CrossVersion.for3Use2_13)
lazy val scalaTestAndMockito = Seq(
"org.scalatest" %% "scalatest" % ScalaTestV % "test",
"org.scalatestplus" %% "mockito-4-6" % "3.2.15.0" % "test"
)

lazy val scalaTsi = "com.scalatsi" %% "scala-tsi" % ScalaTsiV

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
package no.ndla.scalatestsuite

import com.zaxxer.hikari.{HikariConfig, HikariDataSource}
import org.mockito.ArgumentMatchers.any
import org.mockito.Mockito.when
import org.testcontainers.containers.{GenericContainer, PostgreSQLContainer}
import org.testcontainers.containers.wait.strategy.HostPortWaitStrategy
import org.testcontainers.elasticsearch.ElasticsearchContainer
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@

package no.ndla.scalatestsuite

import org.mockito.scalatest.MockitoSugar
import org.scalatest._
import org.scalatest.funsuite.AnyFunSuite
import org.scalatest.matchers.should.Matchers
import org.scalatestplus.mockito.MockitoSugar

import java.io.IOException
import java.net.ServerSocket
import scala.util.Properties.{propOrNone, setProp}
import scala.util.{Try, Success, Failure}
import scala.util.{Failure, Success, Try}

abstract class UnitTestSuite
extends AnyFunSuite
Expand Down

0 comments on commit ba61d9e

Please sign in to comment.