From 8c43d97d1ba1dd425dc429146319b74ddd617f8a Mon Sep 17 00:00:00 2001 From: Grigorii Berezin Date: Wed, 29 May 2024 11:59:10 +0300 Subject: [PATCH 1/3] feat: add zio http test with payload --- .github/workflows/ci.yml | 1 + .scalafmt.conf | 2 +- build.sbt | 3 +- zio-quickstart-restful-webservice/build.sbt | 16 ++++--- .../dev/zio/quickstart/UserRouteSpec.scala | 43 +++++++++++++++++++ 5 files changed, 57 insertions(+), 8 deletions(-) create mode 100644 zio-quickstart-restful-webservice/src/test/scala/dev/zio/quickstart/UserRouteSpec.scala diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0bdada6..e9ea52a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -73,6 +73,7 @@ jobs: - ++2.13.8 zio-quickstart-encode-decode-json - ++2.13.13 zio-quickstart-sql - ++2.13.13 zio-quickstart-prelude + - ++3.3.1 zio-quickstart-restful-webservice steps: - name: Install libuv run: sudo apt-get update && sudo apt-get install -y libuv1-dev diff --git a/.scalafmt.conf b/.scalafmt.conf index 69584ad..fa60697 100644 --- a/.scalafmt.conf +++ b/.scalafmt.conf @@ -3,7 +3,7 @@ align.preset = "more" runner.dialect = scala213 fileOverride { - "glob:**/zio-quickstart-restful-webservice/src/main/scala/**" { + "glob:**/zio-quickstart-restful-webservice**" { runner.dialect = scala3 } } diff --git a/build.sbt b/build.sbt index 509d01a..3873e3e 100644 --- a/build.sbt +++ b/build.sbt @@ -12,7 +12,8 @@ inThisBuild( ciTargetScalaVersions := makeTargetScalaMap( `zio-quickstart-encode-decode-json`, `zio-quickstart-sql`, - `zio-quickstart-prelude` + `zio-quickstart-prelude`, + `zio-quickstart-restful-webservice` ).value, ciDefaultTargetJavaVersions := Seq("8"), semanticdbEnabled := true, diff --git a/zio-quickstart-restful-webservice/build.sbt b/zio-quickstart-restful-webservice/build.sbt index 9cae580..72d34d4 100644 --- a/zio-quickstart-restful-webservice/build.sbt +++ b/zio-quickstart-restful-webservice/build.sbt @@ -1,12 +1,16 @@ scalaVersion := "3.3.1" +Test / fork := true libraryDependencies ++= Seq( - "dev.zio" %% "zio" % "2.0.22", - "dev.zio" %% "zio-json" % "0.6.2", - "dev.zio" %% "zio-http" % "3.0.0-RC6+36-d283e073-SNAPSHOT", - "io.getquill" %% "quill-zio" % "4.7.0", - "io.getquill" %% "quill-jdbc-zio" % "4.7.0", - "com.h2database" % "h2" % "2.2.224" + "dev.zio" %% "zio" % "2.0.22", + "dev.zio" %% "zio-json" % "0.6.2", + "dev.zio" %% "zio-http" % "3.0.0-RC8", + "io.getquill" %% "quill-zio" % "4.7.0", + "io.getquill" %% "quill-jdbc-zio" % "4.7.0", + "com.h2database" % "h2" % "2.2.224", + "dev.zio" %% "zio-test" % "2.1.0" % Test, + "dev.zio" %% "zio-http-testkit" % "3.0.0-RC8" % Test, + "dev.zio" %% "zio-test-sbt" % "2.1.1" % Test ) resolvers ++= Resolver.sonatypeOssRepos("snapshots") diff --git a/zio-quickstart-restful-webservice/src/test/scala/dev/zio/quickstart/UserRouteSpec.scala b/zio-quickstart-restful-webservice/src/test/scala/dev/zio/quickstart/UserRouteSpec.scala new file mode 100644 index 0000000..f20bc61 --- /dev/null +++ b/zio-quickstart-restful-webservice/src/test/scala/dev/zio/quickstart/UserRouteSpec.scala @@ -0,0 +1,43 @@ +package dev.zio.quickstart + +import dev.zio.quickstart.users.* +import zio.* +import zio.http.* +import zio.http.netty.NettyConfig +import zio.http.netty.server.NettyDriver +import zio.schema.codec.JsonCodec.schemaBasedBinaryCodec +import zio.test.* + +import java.util.UUID + +object UserRouteSpec extends ZIOSpecDefault: + override def spec: Spec[Any, Any] = suite("UserRoutes")( + test("create and get user by id") { + for { + client <- ZIO.service[Client] + _ <- TestServer.addRoutes(UserRoutes()) + port <- ZIO.serviceWith[Server](_.port) + url = URL.root.port(port) + testUser = User("Adam", 28) + createResponse <- client( + Request.post(url / "users", Body.from[User](testUser)) + ) + userId <- createResponse.body.asString(Charsets.Utf8) + getResponse <- client(Request.get(url / "users" / userId)) + result <- getResponse.body.to[User] + } yield assertTrue(result == testUser) + }.provideSome[Client with Driver with UserRepo]( + TestServer.layer, + Scope.default, + InmemoryUserRepo.layer + ) + ).provide( + ZLayer.succeed(Server.Config.default.onAnyOpenPort), + Client.default, + NettyDriver.customized, + ZLayer.succeed(NettyConfig.defaultWithFastShutdown), + InmemoryUserRepo.layer + ) + + override def aspects: Chunk[TestAspectPoly] = + Chunk(TestAspect.timeout(60.seconds), TestAspect.timed) From d81a59d9c5ea36be189feeb54cfda842deda1784 Mon Sep 17 00:00:00 2001 From: Grigorii Berezin Date: Wed, 29 May 2024 12:22:34 +0300 Subject: [PATCH 2/3] feat: add scala3 tests for webservice module --- .github/workflows/ci.yml | 2 +- .scalafmt.conf | 5 ++++- build.sbt | 7 ++++--- zio-quickstart-restful-webservice/build.sbt | 8 ++++---- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e9ea52a..425eeec 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -73,7 +73,7 @@ jobs: - ++2.13.8 zio-quickstart-encode-decode-json - ++2.13.13 zio-quickstart-sql - ++2.13.13 zio-quickstart-prelude - - ++3.3.1 zio-quickstart-restful-webservice + - ++3.3.3 zio-quickstart-restful-webservice steps: - name: Install libuv run: sudo apt-get update && sudo apt-get install -y libuv1-dev diff --git a/.scalafmt.conf b/.scalafmt.conf index fa60697..4e5160e 100644 --- a/.scalafmt.conf +++ b/.scalafmt.conf @@ -3,7 +3,10 @@ align.preset = "more" runner.dialect = scala213 fileOverride { - "glob:**/zio-quickstart-restful-webservice**" { + "glob:**/zio-quickstart-restful-webservice/src/main/scala/**" { runner.dialect = scala3 } + "glob:**/zio-quickstart-restful-webservice/test/main/scala/**" { + runner.dialect = scala3 + } } diff --git a/build.sbt b/build.sbt index 3873e3e..586e415 100644 --- a/build.sbt +++ b/build.sbt @@ -45,9 +45,10 @@ lazy val root = testFrameworks += new TestFramework("zio.test.sbt.ZTestFramework") ) -lazy val `zio-quickstart-hello-world` = project -lazy val `zio-quickstart-junit-integration` = project -lazy val `zio-quickstart-restful-webservice` = project +lazy val `zio-quickstart-hello-world` = project +lazy val `zio-quickstart-junit-integration` = project +lazy val `zio-quickstart-restful-webservice` = + project.settings(scalaVersion := "3.3.3") lazy val `zio-quickstart-restful-webservice-configurable-app` = project lazy val `zio-quickstart-restful-webservice-custom-logger` = project lazy val `zio-quickstart-restful-webservice-dockerize` = project diff --git a/zio-quickstart-restful-webservice/build.sbt b/zio-quickstart-restful-webservice/build.sbt index 72d34d4..b55e053 100644 --- a/zio-quickstart-restful-webservice/build.sbt +++ b/zio-quickstart-restful-webservice/build.sbt @@ -1,12 +1,12 @@ -scalaVersion := "3.3.1" +scalaVersion := "3.3.3" Test / fork := true libraryDependencies ++= Seq( - "dev.zio" %% "zio" % "2.0.22", + "dev.zio" %% "zio" % "2.1.1", "dev.zio" %% "zio-json" % "0.6.2", "dev.zio" %% "zio-http" % "3.0.0-RC8", - "io.getquill" %% "quill-zio" % "4.7.0", - "io.getquill" %% "quill-jdbc-zio" % "4.7.0", + "io.getquill" %% "quill-zio" % "4.8.5", + "io.getquill" %% "quill-jdbc-zio" % "4.8.4", "com.h2database" % "h2" % "2.2.224", "dev.zio" %% "zio-test" % "2.1.0" % Test, "dev.zio" %% "zio-http-testkit" % "3.0.0-RC8" % Test, From ff70b38aec67ec3be2f75156179f5099fb605971 Mon Sep 17 00:00:00 2001 From: Grigorii Berezin Date: Wed, 29 May 2024 12:45:34 +0300 Subject: [PATCH 3/3] fix: formatting --- .github/workflows/ci.yml | 4 ++-- .scalafmt.conf | 5 +---- build.sbt | 11 +++++------ zio-quickstart-restful-webservice/build.sbt | 10 +++++----- 4 files changed, 13 insertions(+), 17 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 425eeec..3a48a64 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -68,12 +68,12 @@ jobs: fail-fast: false matrix: java: - - '8' + - '17' scala-project: - ++2.13.8 zio-quickstart-encode-decode-json - ++2.13.13 zio-quickstart-sql - ++2.13.13 zio-quickstart-prelude - - ++3.3.3 zio-quickstart-restful-webservice + - ++3.3.1 zio-quickstart-restful-webservice steps: - name: Install libuv run: sudo apt-get update && sudo apt-get install -y libuv1-dev diff --git a/.scalafmt.conf b/.scalafmt.conf index 4e5160e..a6c4b60 100644 --- a/.scalafmt.conf +++ b/.scalafmt.conf @@ -3,10 +3,7 @@ align.preset = "more" runner.dialect = scala213 fileOverride { - "glob:**/zio-quickstart-restful-webservice/src/main/scala/**" { - runner.dialect = scala3 - } - "glob:**/zio-quickstart-restful-webservice/test/main/scala/**" { + "glob:**/zio-quickstart-restful-webservice/src/**/scala/**" { runner.dialect = scala3 } } diff --git a/build.sbt b/build.sbt index 586e415..7c02c9e 100644 --- a/build.sbt +++ b/build.sbt @@ -8,14 +8,14 @@ inThisBuild( ciReleaseJobs := Seq.empty, ciPostReleaseJobs := Seq.empty, ciCheckWebsiteBuildProcess := Seq.empty, - scalaVersion := "2.13.8", + scalaVersion := scala213.value, ciTargetScalaVersions := makeTargetScalaMap( `zio-quickstart-encode-decode-json`, `zio-quickstart-sql`, `zio-quickstart-prelude`, `zio-quickstart-restful-webservice` ).value, - ciDefaultTargetJavaVersions := Seq("8"), + ciDefaultTargetJavaVersions := Seq("17"), semanticdbEnabled := true, semanticdbVersion := scalafixSemanticdb.revision ) @@ -45,10 +45,9 @@ lazy val root = testFrameworks += new TestFramework("zio.test.sbt.ZTestFramework") ) -lazy val `zio-quickstart-hello-world` = project -lazy val `zio-quickstart-junit-integration` = project -lazy val `zio-quickstart-restful-webservice` = - project.settings(scalaVersion := "3.3.3") +lazy val `zio-quickstart-hello-world` = project +lazy val `zio-quickstart-junit-integration` = project +lazy val `zio-quickstart-restful-webservice` = project lazy val `zio-quickstart-restful-webservice-configurable-app` = project lazy val `zio-quickstart-restful-webservice-custom-logger` = project lazy val `zio-quickstart-restful-webservice-dockerize` = project diff --git a/zio-quickstart-restful-webservice/build.sbt b/zio-quickstart-restful-webservice/build.sbt index b55e053..caeb664 100644 --- a/zio-quickstart-restful-webservice/build.sbt +++ b/zio-quickstart-restful-webservice/build.sbt @@ -1,16 +1,16 @@ -scalaVersion := "3.3.3" +scalaVersion := "3.3.1" Test / fork := true libraryDependencies ++= Seq( "dev.zio" %% "zio" % "2.1.1", "dev.zio" %% "zio-json" % "0.6.2", "dev.zio" %% "zio-http" % "3.0.0-RC8", - "io.getquill" %% "quill-zio" % "4.8.5", - "io.getquill" %% "quill-jdbc-zio" % "4.8.4", + "io.getquill" %% "quill-zio" % "4.7.0", + "io.getquill" %% "quill-jdbc-zio" % "4.7.0", "com.h2database" % "h2" % "2.2.224", - "dev.zio" %% "zio-test" % "2.1.0" % Test, + "dev.zio" %% "zio-test" % "2.1.0" % Test, "dev.zio" %% "zio-http-testkit" % "3.0.0-RC8" % Test, - "dev.zio" %% "zio-test-sbt" % "2.1.1" % Test + "dev.zio" %% "zio-test-sbt" % "2.1.1" % Test ) resolvers ++= Resolver.sonatypeOssRepos("snapshots")