Skip to content

Commit cfd6c2d

Browse files
[DC-7958] - PR-Commenter Recommendations and update dependencies (#1262)
* [DC-7958] Update build.sbt config to fix the repeatedly, routes and unused imports * [DC-7958] Update libraries' version * [DC-7958] Remove deprecated ApplicationCrypto class and update Test configuration to fix warnings * [DC-7958] Remove redundant dependencies that are coming from bootstrap * [DC-7958] Update Play framework version
1 parent 453ed2e commit cfd6c2d

File tree

6 files changed

+59
-41
lines changed

6 files changed

+59
-41
lines changed

app/uk/gov/hmrc/hmrcemailrenderer/config/ErrorHandler.scala

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
package uk.gov.hmrc.hmrcemailrenderer.config
1818

1919
import play.api.i18n.{ I18nSupport, MessagesApi }
20-
import play.api.mvc.Request
2120
import play.twirl.api.Html
2221
import uk.gov.hmrc.play.bootstrap.frontend.http.FrontendErrorHandler
2322
import preview.views.html.error_template

app/uk/gov/hmrc/hmrcemailrenderer/connectors/PreferencesConnector.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ package uk.gov.hmrc.hmrcemailrenderer.connectors
1818

1919
import com.google.inject.{ Inject, Singleton }
2020
import play.api.libs.json.{ Json, OFormat }
21-
import uk.gov.hmrc.crypto.{ ApplicationCrypto, PlainText }
21+
import uk.gov.hmrc.crypto.PlainText
22+
import uk.gov.hmrc.play.bootstrap.frontend.filters.crypto.ApplicationCrypto
2223
import uk.gov.hmrc.hmrcemailrenderer.model.Language
2324
import uk.gov.hmrc.http.HeaderCarrier
2425
import uk.gov.hmrc.http.client.HttpClientV2

build.sbt

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@ import uk.gov.hmrc.versioning.SbtGitVersioning.autoImport.majorVersion
44
val appName = "hmrc-email-renderer"
55

66
ThisBuild / majorVersion := 3
7-
ThisBuild / scalaVersion := "3.4.2"
7+
ThisBuild / scalaVersion := "3.6.3"
88

99
val appDependencies: Seq[ModuleID] = AppDependencies()
1010

1111
lazy val playSettings: Seq[Setting[?]] = Seq.empty
1212

1313
lazy val microservice = Project(appName, file("."))
1414
.enablePlugins(play.sbt.PlayScala, SbtDistributablesPlugin)
15-
.disablePlugins(JUnitXmlReportPlugin) //Required to prevent https://github.com/scalatest/scalatest/issues/1427
15+
.disablePlugins(JUnitXmlReportPlugin) // Required to prevent https://github.com/scalatest/scalatest/issues/1427
1616
.settings(playSettings *)
1717
.settings(scalaSettings *)
1818
.settings(defaultSettings() *)
@@ -21,17 +21,32 @@ lazy val microservice = Project(appName, file("."))
2121
retrieveManaged := true
2222
)
2323
.settings(routesGenerator := InjectedRoutesGenerator)
24+
.settings(
25+
scalacOptions := scalacOptions.value.diff(Seq("-Wunused:all")),
26+
scalacOptions += "-language:implicitConversions",
27+
scalacOptions ++= List(
28+
"-Wconf:msg=Flag.*repeatedly:s",
29+
"-Wconf:src=routes/.*:s",
30+
"-Wconf:src=templates/.*:s",
31+
"-Wconf:src=preview/.*:s"
32+
)
33+
)
2434
.settings(ScoverageSettings())
2535

2636
lazy val it = Project(id = "it", base = file("it"))
2737
.enablePlugins(PlayScala, ScalafmtPlugin)
2838
.dependsOn(microservice % "test->test") // the "test->test" allows reusing test code and test dependencies
29-
.settings(libraryDependencies ++= appDependencies ++ AppDependencies.it)
39+
.settings(
40+
libraryDependencies ++= appDependencies ++ AppDependencies.it,
41+
scalacOptions ++= List("-Wconf:msg=Flag.*repeatedly:s")
42+
)
43+
44+
Test / scalacOptions ++= List("-Wconf:src=services/.*:s")
3045

3146
Test / test := (Test / test)
3247
.dependsOn(scalafmtCheckAll)
3348
.value
3449

3550
it / test := (it / Test / test)
36-
.dependsOn(scalafmtCheckAll, it/scalafmtCheckAll)
51+
.dependsOn(scalafmtCheckAll, it / scalafmtCheckAll)
3752
.value

project/AppDependencies.scala

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,26 @@ import sbt.*
22
import play.sbt.PlayImport.*
33

44
private object AppDependencies {
5-
private val bootstrapVersion = "9.19.0"
5+
private val bootstrapVersion = "10.3.0"
66

77
def apply(): Seq[ModuleID] = Seq(
88
ws,
9-
"uk.gov.hmrc" %% "bootstrap-frontend-play-30" % bootstrapVersion,
10-
"uk.gov.hmrc" %% "domain-play-30" % "10.0.0",
11-
"net.codingwell" %% "scala-guice" % "6.0.0",
12-
"org.jsoup" % "jsoup" % "1.13.1" % Test,
13-
"uk.gov.hmrc" %% "bootstrap-test-play-30" % bootstrapVersion % Test,
14-
"org.scalatestplus.play" %% "scalatestplus-play" % "7.0.1" % Test,
15-
"org.mockito" % "mockito-core" % "4.7.0" % Test,
16-
"org.scalatestplus" %% "mockito-4-11" % "3.2.17.0" % Test,
17-
"com.github.tomakehurst" % "wiremock" % "2.27.2" % Test,
18-
"com.vladsch.flexmark" % "flexmark-all" % "0.35.10" % Test
9+
"uk.gov.hmrc" %% "bootstrap-frontend-play-30" % bootstrapVersion,
10+
"uk.gov.hmrc" %% "domain-play-30" % "13.0.0",
11+
"net.codingwell" %% "scala-guice" % "6.0.0",
12+
"org.jsoup" % "jsoup" % "1.13.1" % Test,
13+
"uk.gov.hmrc" %% "bootstrap-test-play-30" % bootstrapVersion % Test,
14+
"org.mockito" % "mockito-core" % "4.7.0" % Test,
15+
"com.github.tomakehurst" % "wiremock" % "2.27.2" % Test
1916
)
2017

21-
val it = Seq(
22-
"uk.gov.hmrc" %% "bootstrap-test-play-30" % bootstrapVersion % "it/test",
23-
"org.scalatestplus.play" %% "scalatestplus-play" % "7.0.1" % "it/test",
24-
"org.scalatestplus" %% "mockito-4-11" % "3.2.17.0" % "it/test",
25-
"org.pegdown" % "pegdown" % "1.6.0" % "it/test",
26-
"org.mockito" % "mockito-core" % "4.7.0" % "it/test",
27-
"com.github.tomakehurst" % "wiremock" % "2.27.2" % "it/test",
28-
"com.vladsch.flexmark" % "flexmark-all" % "0.35.10" % "it/test"
18+
val it: Seq[ModuleID] = Seq(
19+
"uk.gov.hmrc" %% "bootstrap-test-play-30" % bootstrapVersion % "it/test",
20+
"org.scalatestplus.play" %% "scalatestplus-play" % "7.0.1" % "it/test",
21+
"org.scalatestplus" %% "mockito-4-11" % "3.2.17.0" % "it/test",
22+
"org.pegdown" % "pegdown" % "1.6.0" % "it/test",
23+
"org.mockito" % "mockito-core" % "4.7.0" % "it/test",
24+
"com.github.tomakehurst" % "wiremock" % "2.27.2" % "it/test",
25+
"com.vladsch.flexmark" % "flexmark-all" % "0.35.10" % "it/test"
2926
)
3027
}

project/plugins.sbt

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
resolvers += MavenRepository("HMRC-open-artefacts-maven2", "https://open.artefacts.tax.service.gov.uk/maven2")
22
resolvers += Resolver.url("HMRC-open-artefacts-ivy", url("https://open.artefacts.tax.service.gov.uk/ivy2"))(
3-
Resolver.ivyStylePatterns)
3+
Resolver.ivyStylePatterns
4+
)
45

5-
addSbtPlugin("uk.gov.hmrc" % "sbt-auto-build" % "3.24.0")
6-
addSbtPlugin("uk.gov.hmrc" % "sbt-distributables" % "2.6.0")
7-
addSbtPlugin("org.playframework" % "sbt-plugin" % "3.0.8")
8-
addSbtPlugin("org.scoverage" % "sbt-scoverage" % "2.2.2")
9-
addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2")
6+
addSbtPlugin("uk.gov.hmrc" % "sbt-auto-build" % "3.24.0")
7+
addSbtPlugin("uk.gov.hmrc" % "sbt-distributables" % "2.6.0")
8+
addSbtPlugin("org.playframework" % "sbt-plugin" % "3.0.9")
9+
addSbtPlugin("org.scoverage" % "sbt-scoverage" % "2.2.2")
10+
addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2")

test/uk/gov/hmrc/hmrcemailrenderer/connectors/PreferencesConnectorSpec.scala

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,15 @@ package uk.gov.hmrc.hmrcemailrenderer.connectors
1919
import org.mockito.Mockito.*
2020
import org.mockito.ArgumentMatchers.any
2121
import org.scalatestplus.play.guice.GuiceOneAppPerSuite
22-
import uk.gov.hmrc.crypto.{ ApplicationCrypto, PlainText }
22+
import uk.gov.hmrc.crypto.PlainText
23+
import uk.gov.hmrc.play.bootstrap.frontend.filters.crypto.ApplicationCrypto
2324
import uk.gov.hmrc.hmrcemailrenderer.model.Language
24-
import uk.gov.hmrc.http.HeaderCarrier
25+
import uk.gov.hmrc.http.{ HeaderCarrier, HttpReads }
2526
import uk.gov.hmrc.http.client.HttpClientV2
2627
import uk.gov.hmrc.http.client.RequestBuilder
2728
import uk.gov.hmrc.play.bootstrap.config.ServicesConfig
2829
import org.scalatest.OptionValues
2930

30-
import scala.concurrent.ExecutionContext.Implicits.global
3131
import scala.concurrent.{ ExecutionContext, Future }
3232
import org.scalatest.concurrent.ScalaFutures
3333
import org.scalatest.matchers.should.Matchers
@@ -41,29 +41,34 @@ class PreferencesConnectorSpec
4141

4242
"return English if preference returns English" in new TestCase {
4343
when(httpClient.get(any)(any)).thenReturn(requestBuilder)
44-
when(requestBuilder.execute(any, any))
44+
when(requestBuilder.execute(using any[HttpReads[Language]], any[ExecutionContext]))
4545
.thenReturn(Future.successful(Language.English))
46+
4647
preferencesConnector.languageByEmail(email).futureValue shouldBe (Language.English)
4748

4849
}
4950

5051
"return Welsh if preference returns Welsh" in new TestCase {
5152
when(httpClient.get(any)(any)).thenReturn(requestBuilder)
52-
when(requestBuilder.execute(any, any)).thenReturn(Future.successful(Language.Welsh))
53+
when(requestBuilder.execute(using any[HttpReads[Language]], any[ExecutionContext]))
54+
.thenReturn(Future.successful(Language.Welsh))
55+
5356
preferencesConnector.languageByEmail(email).futureValue shouldBe (Language.Welsh)
5457
}
5558
}
5659

5760
trait TestCase {
5861
implicit val headerCarrier: HeaderCarrier = new HeaderCarrier()
62+
implicit val ec: ExecutionContext = scala.concurrent.ExecutionContext.Implicits.global
63+
64+
val httpClient: HttpClientV2 = mock[HttpClientV2]
65+
val requestBuilder: RequestBuilder = mock[RequestBuilder]
5966

60-
val httpClient = mock[HttpClientV2]
61-
val requestBuilder = mock[RequestBuilder]
62-
val crypto = app.injector.instanceOf[ApplicationCrypto]
63-
val servicesConfig = app.injector.instanceOf[ServicesConfig]
67+
val crypto: ApplicationCrypto = app.injector.instanceOf[ApplicationCrypto]
68+
val servicesConfig: ServicesConfig = app.injector.instanceOf[ServicesConfig]
6469
val preferencesConnector = new PreferencesConnector(servicesConfig, httpClient, crypto)
6570
val email = "[email protected]"
6671
val encryptedEmail = new String(crypto.QueryParameterCrypto.encrypt(PlainText(email)).toBase64)
67-
val url = servicesConfig.baseUrl("preferences") + s"/preferences/language/$encryptedEmail"
72+
val url: String = servicesConfig.baseUrl("preferences") + s"/preferences/language/$encryptedEmail"
6873
}
6974
}

0 commit comments

Comments
 (0)