diff --git a/modules/core/shared/src/test/scala/scaladex/core/test/Values.scala b/modules/core/shared/src/test/scala/scaladex/core/test/Values.scala index f74e3d489..eb8d18d44 100644 --- a/modules/core/shared/src/test/scala/scaladex/core/test/Values.scala +++ b/modules/core/shared/src/test/scala/scaladex/core/test/Values.scala @@ -36,6 +36,8 @@ object Values { val `2.7.0` = PatchVersion(2, 7, 0) val `7.0.0` = PatchVersion(7, 0, 0) val `7.1.0` = PatchVersion(7, 1, 0) + val `7.2.0-PREVIEW1` = SemanticVersion.parse("7.2.0-PREVIEW.1").get + val `7.2.0-PREVIEW2` = SemanticVersion.parse("7.2.0-PREVIEW.2").get val `7.2.0` = PatchVersion(7, 2, 0) val `7.3.0` = PatchVersion(7, 3, 0) diff --git a/modules/server/src/test/scala/scaladex/server/route/BadgesTests.scala b/modules/server/src/test/scala/scaladex/server/route/BadgesTests.scala index e59e20d72..764188a0e 100644 --- a/modules/server/src/test/scala/scaladex/server/route/BadgesTests.scala +++ b/modules/server/src/test/scala/scaladex/server/route/BadgesTests.scala @@ -3,15 +3,17 @@ package scaladex.server.route import scala.concurrent.Await import scala.concurrent.Future import scala.concurrent.duration.Duration - import akka.http.scaladsl.model.StatusCodes import akka.http.scaladsl.model.Uri import akka.http.scaladsl.model.headers.Location import akka.http.scaladsl.server.Route import org.scalatest.BeforeAndAfterAll +import org.scalatest.funspec.AnyFunSpec +import org.scalatest.matchers.should.Matchers import scaladex.core.model.Scala._ -import scaladex.core.test.Values._ +import scaladex.core.test.Values.{`7.2.0`, _} import scaladex.core.util.ScalaExtensions._ +import scaladex.server.route.Badges.summaryOfLatestVersions class BadgesTests extends ControllerBaseSuite with BeforeAndAfterAll { @@ -22,17 +24,6 @@ class BadgesTests extends ControllerBaseSuite with BeforeAndAfterAll { def insertCats(): Future[Unit] = Cats.allArtifacts.map(database.insertArtifact(_, Seq.empty, now)).sequence.map(_ => ()) - it("should provide a concise summary of latest versions") { - Badges.summaryOfLatestVersions( - Map( - `2.11` -> Seq(`7.0.0`, `7.1.0`), - `2.12` -> Seq(`7.0.0`, `7.1.0`, `7.2.0`), - `2.13` -> Seq(`7.0.0`, `7.1.0`, `7.2.0`, `7.3.0`), - `3` -> Seq(`7.2.0`, `7.3.0`) - ) - ) shouldBe "7.3.0 (Scala 3.x, 2.13), 7.2.0 (Scala 2.12), 7.1.0 (Scala 2.11)" - } - it("should fallback to JVM artifacts") { Get(s"/${Cats.reference}/cats-core/latest-by-scala-version.svg") ~> badgesRoute ~> check { status shouldEqual StatusCodes.TemporaryRedirect @@ -73,3 +64,25 @@ class BadgesTests extends ControllerBaseSuite with BeforeAndAfterAll { } } } + +class BadgesUnitTests extends AnyFunSpec with Matchers { + it("should provide a concise summary of latest versions") { + summaryOfLatestVersions( + Map( + `2.11` -> Seq(`7.0.0`, `7.1.0`), + `2.12` -> Seq(`7.0.0`, `7.1.0`, `7.2.0`), + `2.13` -> Seq(`7.0.0`, `7.1.0`, `7.2.0`, `7.3.0`), + `3` -> Seq(`7.2.0`, `7.3.0`) + ) + ) shouldBe "7.3.0 (Scala 3.x, 2.13), 7.2.0 (Scala 2.12), 7.1.0 (Scala 2.11)" + } + + it("should prefer releases to pre-releases if both are available") { + summaryOfLatestVersions(Map(`2.13` -> Seq(`7.0.0`, `7.1.0`, `7.2.0-PREVIEW1`))) shouldBe "7.1.0 (Scala 2.13)" + } + + it("should display latest pre-release if no full release is available") { + summaryOfLatestVersions(Map(`2.13` -> Seq(`7.2.0-PREVIEW1`, `7.2.0-PREVIEW2`))) shouldBe s"${`7.2.0-PREVIEW2`} (Scala 2.13)" + } + +}