Skip to content

Commit 0e3a076

Browse files
authored
DLSN-303 Remove legacy code and fix tests (#572)
* DLSN-303 Remove legacy code and fix tests * DLSN-303 Tidy * build sbt * build sbt * DLSN-303 Tidy * DLSN-303 Improve tests
1 parent 4956726 commit 0e3a076

File tree

4 files changed

+48
-160
lines changed

4 files changed

+48
-160
lines changed

app/controllers/RegistrationSentController.scala

Lines changed: 9 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ package controllers
1919
import config.FrontendAppConfig
2020
import controllers.actions.{AuthIdentifierAction, RegistrationDataRequiredAction, UserDataRetrievalAction}
2121
import models.RegisteredApplication
22-
import pages.{AcknowledgementReferencePage, ApplicationSubmissionDatePage, EmailOrPostPage}
22+
import pages.EmailOrPostPage
2323
import play.api.libs.json.{JsError, JsSuccess}
2424
import play.api.mvc.{Action, AnyContent, MessagesControllerComponents}
2525
import service.UserAnswerService
@@ -47,41 +47,18 @@ class RegistrationSentController @Inject() (
4747
Future.successful(
4848
Ok(
4949
view(
50-
dayToString(regApp.applicationSubmissionDate.plusDays(appConfig.timeToLiveInDays)),
51-
dayToString(regApp.applicationSubmissionDate, dayOfWeek = false),
52-
regApp.acknowledgementReference,
53-
false,
54-
true,
55-
RequiredDocumentsHelper.getRequiredDocuments(regApp.requiredDocuments),
56-
RequiredDocumentsHelper.getForeignOfficialsMessages(regApp.foreignOfficials)
50+
sendBeforeDate = dayToString(regApp.applicationSubmissionDate.plusDays(appConfig.timeToLiveInDays)),
51+
submissionDate = dayToString(regApp.applicationSubmissionDate, dayOfWeek = false),
52+
acknowledgementReference = regApp.acknowledgementReference,
53+
emailOrPost = false,
54+
noEmailOrPost = true,
55+
requiredDocuments = RequiredDocumentsHelper.getRequiredDocuments(regApp.requiredDocuments),
56+
foreignAddresses = RequiredDocumentsHelper.getForeignOfficialsMessages(regApp.foreignOfficials)
5757
)
5858
)
5959
)
6060
case JsError(_) =>
61-
(
62-
request.userAnswers.get(AcknowledgementReferencePage),
63-
request.userAnswers.get(ApplicationSubmissionDatePage)
64-
) match {
65-
case (Some(acknowledgementReference), Some(applicationSubmissionDate)) =>
66-
val renderView = (emailOrPost: Boolean, noEmailOrPost: Boolean) =>
67-
view(
68-
dayToString(applicationSubmissionDate.plusDays(appConfig.timeToLiveInDays)),
69-
dayToString(applicationSubmissionDate, dayOfWeek = false),
70-
acknowledgementReference,
71-
emailOrPost,
72-
noEmailOrPost = noEmailOrPost,
73-
RequiredDocumentsHelper.getRequiredDocuments(request.userAnswers),
74-
RequiredDocumentsHelper.getForeignOfficialsMessages(request.userAnswers)
75-
)
76-
request.userAnswers.get(EmailOrPostPage) match {
77-
case Some(emailOrPost) if appConfig.noEmailPost => Future.successful(Ok(renderView(emailOrPost, true)))
78-
case Some(emailOrPost) => Future.successful(Ok(renderView(emailOrPost, false)))
79-
case _ if appConfig.noEmailPost => Future.successful(Ok(renderView(false, true)))
80-
case _ => Future.successful(Redirect(controllers.routes.EmailOrPostController.onPageLoad))
81-
}
82-
case _ =>
83-
Future.successful(Redirect(controllers.routes.PageNotFoundController.onPageLoad()))
84-
}
61+
Future.successful(Redirect(controllers.routes.PageNotFoundController.onPageLoad()))
8562
}
8663
}
8764

app/models/RegisteredApplication.scala

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
package models
1818

19-
import play.api.libs.json.{Json, Reads}
19+
import play.api.libs.json.*
2020

2121
import java.time.LocalDate
2222

@@ -28,5 +28,8 @@ case class RegisteredApplication(
2828
)
2929

3030
object RegisteredApplication {
31-
implicit val fmt: Reads[RegisteredApplication] = Json.reads[RegisteredApplication]
31+
implicit val formats: OFormat[RegisteredApplication] = {
32+
implicit val writesList: Writes[List[Name]] = Writes.list(Name.formats)
33+
Json.format[RegisteredApplication]
34+
}
3235
}

test/base/SpecBase.scala

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ package base
1919
import common.TestData
2020
import config.FrontendAppConfig
2121
import controllers.actions.*
22-
import models.UserAnswers
2322
import models.requests.DataRequest
23+
import models.{RegisteredApplication, UserAnswers}
2424
import org.jsoup.Jsoup
2525
import org.mockito.Mockito.*
2626
import org.scalatest.concurrent.{IntegrationPatience, ScalaFutures}
@@ -31,15 +31,16 @@ import play.api.Application
3131
import play.api.i18n.{Messages, MessagesApi}
3232
import play.api.inject.guice.GuiceApplicationBuilder
3333
import play.api.inject.{Injector, bind}
34-
import play.api.libs.json.Json
34+
import play.api.libs.json.{JsObject, Json}
3535
import play.api.mvc.{AnyContentAsEmpty, Call, MessagesControllerComponents}
3636
import play.api.test.CSRFTokenHelper.*
3737
import play.api.test.{FakeRequest, Injecting}
3838
import repositories.SessionRepository
3939
import service.UserAnswerService
4040
import uk.gov.hmrc.http.{HeaderCarrier, SessionKeys}
41+
import utils.TimeMachine
4142
import viewmodels.ErrorHandler
42-
43+
import models.Name
4344
import java.time.temporal.ChronoUnit
4445
import scala.concurrent.duration.{Duration, FiniteDuration, *}
4546
import scala.concurrent.{Await, ExecutionContext, Future}
@@ -62,7 +63,24 @@ trait SpecBase
6263
lastUpdated = baseInternalUserAnswers.lastUpdated.truncatedTo(ChronoUnit.MILLIS),
6364
expiresAt = baseInternalUserAnswers.expiresAt.truncatedTo(ChronoUnit.MILLIS)
6465
)
65-
lazy val userAnswers: Option[UserAnswers] = None
66+
protected def userAnswersWithRegisteredApplication(
67+
foreignOfficials: List[Name] = Nil,
68+
requiredDocs: Map[String, Boolean] = Map.empty
69+
): UserAnswers = {
70+
val jsObject: JsObject = Json
71+
.toJson(RegisteredApplication(acknowledgementRef, foreignOfficials, requiredDocs, inject[TimeMachine].now()))(
72+
RegisteredApplication.formats
73+
)
74+
.as[JsObject]
75+
UserAnswers(
76+
id = internalId,
77+
data = jsObject,
78+
lastUpdated = baseInternalUserAnswers.lastUpdated.truncatedTo(ChronoUnit.MILLIS),
79+
expiresAt = baseInternalUserAnswers.expiresAt.truncatedTo(ChronoUnit.MILLIS)
80+
)
81+
}
82+
83+
lazy val userAnswers: Option[UserAnswers] = None
6684

6785
lazy val messagesControllerComponents: MessagesControllerComponents =
6886
injector.instanceOf[MessagesControllerComponents]

test/controllers/RegistrationSentControllerSpec.scala

Lines changed: 12 additions & 122 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,15 @@ import models.{Name, SelectTitle, UserAnswers}
2222
import org.mockito.ArgumentMatchers.any
2323
import org.mockito.Mockito.*
2424
import org.scalatest.BeforeAndAfterEach
25-
import pages.{AcknowledgementReferencePage, ApplicationSubmissionDatePage, EmailOrPostPage}
25+
import pages.{AcknowledgementReferencePage, EmailOrPostPage}
2626
import play.api.inject.bind
2727
import play.api.inject.guice.GuiceApplicationBuilder
28-
import play.api.libs.json.Json
2928
import play.api.test.Helpers.*
3029
import service.UserAnswerService
3130
import utils.TimeMachine
3231
import views.ViewUtils.dayToString
3332
import views.html.RegistrationSentView
3433

35-
import java.time.LocalDate
3634
import scala.concurrent.Future
3735

3836
class RegistrationSentControllerSpec extends SpecBase with BeforeAndAfterEach {
@@ -59,9 +57,7 @@ class RegistrationSentControllerSpec extends SpecBase with BeforeAndAfterEach {
5957
private val daysToAdd: Long = 28
6058

6159
"RegistrationSent Controller" must {
62-
6360
"return OK and the correct view for a GET for email and noEmailPost disabled" in {
64-
6561
val app = new GuiceApplicationBuilder()
6662
.configure("features.noEmailPost" -> "false")
6763
.overrides(
@@ -73,84 +69,17 @@ class RegistrationSentControllerSpec extends SpecBase with BeforeAndAfterEach {
7369
val controller: RegistrationSentController = app.injector.instanceOf[RegistrationSentController]
7470

7571
when(mockUserAnswerService.get(any())(any(), any())).thenReturn(
76-
Future.successful(
77-
Some(
78-
emptyUserAnswers
79-
.set(AcknowledgementReferencePage, acknowledgementRef)
80-
.flatMap(_.set(ApplicationSubmissionDatePage, inject[TimeMachine].now()))
81-
.flatMap(_.set(EmailOrPostPage, true))
82-
.success
83-
.value
84-
)
85-
)
72+
Future.successful(Some(userAnswersWithRegisteredApplication().set(EmailOrPostPage, true).success.value))
8673
)
8774

8875
val result = controller.onPageLoad()(fakeRequest)
8976

9077
status(result) mustEqual OK
91-
contentAsString(result) mustEqual view(
92-
dayToString(inject[TimeMachine].now().plusDays(daysToAdd)),
93-
dayToString(inject[TimeMachine].now(), dayOfWeek = false),
94-
acknowledgementReferenceNo,
95-
emailOrPost = true,
96-
noEmailOrPost = false,
97-
Seq("requiredDocuments.governingDocumentName.answerTrue"),
98-
None
99-
)(fakeRequest, messages, frontendAppConfig).toString
100-
verify(mockUserAnswerService, times(1)).get(any())(any(), any())
101-
}
102-
103-
"return OK and the correct view for a GET for email and noEmailPost enabled" in {
10478

105-
when(mockUserAnswerService.get(any())(any(), any())).thenReturn(
106-
Future.successful(
107-
Some(
108-
emptyUserAnswers
109-
.set(AcknowledgementReferencePage, acknowledgementRef)
110-
.flatMap(_.set(ApplicationSubmissionDatePage, inject[TimeMachine].now()))
111-
.flatMap(_.set(EmailOrPostPage, true))
112-
.success
113-
.value
114-
)
115-
)
116-
)
117-
118-
val result = controller.onPageLoad()(fakeRequest)
119-
120-
status(result) mustEqual OK
12179
contentAsString(result) mustEqual view(
12280
dayToString(inject[TimeMachine].now().plusDays(daysToAdd)),
12381
dayToString(inject[TimeMachine].now(), dayOfWeek = false),
12482
acknowledgementReferenceNo,
125-
emailOrPost = true,
126-
noEmailOrPost = true,
127-
Seq("requiredDocuments.governingDocumentName.answerTrue"),
128-
None
129-
)(fakeRequest, messages, frontendAppConfig).toString
130-
verify(mockUserAnswerService, times(1)).get(any())(any(), any())
131-
}
132-
133-
"return OK and the correct view for a GET when noEmailPost enabled" in {
134-
135-
when(mockUserAnswerService.get(any())(any(), any())).thenReturn(
136-
Future.successful(
137-
Some(
138-
emptyUserAnswers
139-
.set(AcknowledgementReferencePage, acknowledgementReferenceNo)
140-
.flatMap(_.set(ApplicationSubmissionDatePage, inject[TimeMachine].now()))
141-
.success
142-
.value
143-
)
144-
)
145-
)
146-
147-
val result = controller.onPageLoad()(fakeRequest)
148-
149-
status(result) mustEqual OK
150-
contentAsString(result) mustEqual view(
151-
dayToString(inject[TimeMachine].now().plusDays(daysToAdd)),
152-
dayToString(inject[TimeMachine].now(), dayOfWeek = false),
153-
acknowledgementRef,
15483
emailOrPost = false,
15584
noEmailOrPost = true,
15685
Seq("requiredDocuments.governingDocumentName.answerTrue"),
@@ -160,7 +89,6 @@ class RegistrationSentControllerSpec extends SpecBase with BeforeAndAfterEach {
16089
}
16190

16291
"return OK and the correct view when the correct json is stored in mongoDb" in {
163-
16492
val app = new GuiceApplicationBuilder()
16593
.configure("features.noEmailPost" -> "false")
16694
.overrides(
@@ -170,22 +98,17 @@ class RegistrationSentControllerSpec extends SpecBase with BeforeAndAfterEach {
17098
.build()
17199

172100
val controller: RegistrationSentController = app.injector.instanceOf[RegistrationSentController]
101+
173102
when(mockUserAnswerService.get(any())(any(), any())).thenReturn(
174103
Future.successful(
175104
Some(
176-
emptyUserAnswers
177-
.copy(data =
178-
Json.obj(
179-
"acknowledgementReference" -> acknowledgementReferenceNo,
180-
"foreignOfficials" -> List(
181-
Name(SelectTitle.Mr, "firstName1", Some("middleName1"), "lastName1"),
182-
Name(SelectTitle.Ms, "firstName2", Some("middleName2"), "lastName2"),
183-
Name(SelectTitle.Mrs, "firstName3", Some("middleName3"), "lastName3")
184-
),
185-
"requiredDocuments" -> Json.obj(),
186-
"applicationSubmissionDate" -> LocalDate.now()
187-
)
105+
userAnswersWithRegisteredApplication(
106+
foreignOfficials = List(
107+
Name(SelectTitle.Mr, "firstName1", Some("middleName1"), "lastName1"),
108+
Name(SelectTitle.Ms, "firstName2", Some("middleName2"), "lastName2"),
109+
Name(SelectTitle.Mrs, "firstName3", Some("middleName3"), "lastName3")
188110
)
111+
)
189112
)
190113
)
191114
)
@@ -210,40 +133,7 @@ class RegistrationSentControllerSpec extends SpecBase with BeforeAndAfterEach {
210133
verify(mockUserAnswerService, times(1)).get(any())(any(), any())
211134
}
212135

213-
"return SEE_OTHER and the correct view for a GET with no EmailOrPostPage answered" in {
214-
215-
val app = new GuiceApplicationBuilder()
216-
.configure("features.noEmailPost" -> "false")
217-
.overrides(
218-
bind[UserAnswerService].toInstance(mockUserAnswerService),
219-
bind[AuthIdentifierAction].to[FakeAuthIdentifierAction]
220-
)
221-
.build()
222-
223-
val controller: RegistrationSentController = app.injector.instanceOf[RegistrationSentController]
224-
225-
when(mockUserAnswerService.get(any())(any(), any())).thenReturn(
226-
Future.successful(
227-
Some(
228-
emptyUserAnswers
229-
.set(AcknowledgementReferencePage, acknowledgementRef)
230-
.flatMap(_.set(ApplicationSubmissionDatePage, inject[TimeMachine].now()))
231-
.success
232-
.value
233-
)
234-
)
235-
)
236-
237-
val result = controller.onPageLoad()(fakeRequest)
238-
239-
status(result) mustEqual SEE_OTHER
240-
241-
redirectLocation(result).value mustEqual controllers.routes.EmailOrPostController.onPageLoad.url
242-
verify(mockUserAnswerService, times(1)).get(any())(any(), any())
243-
}
244-
245-
"redirect to Session Expired for a GET if no acknowledgement reference is found" in {
246-
136+
"redirect to page not found for a GET if no acknowledgement reference is found" in {
247137
when(mockUserAnswerService.get(any())(any(), any())).thenReturn(Future.successful(Some(emptyUserAnswers)))
248138

249139
val result = controller.onPageLoad()(fakeRequest)
@@ -254,7 +144,7 @@ class RegistrationSentControllerSpec extends SpecBase with BeforeAndAfterEach {
254144
verify(mockUserAnswerService, times(1)).get(any())(any(), any())
255145
}
256146

257-
"redirect to Session Expired for a GET if no existing data is found" in {
147+
"redirect to page not found for a GET if no existing data is found" in {
258148

259149
when(mockUserAnswerService.get(any())(any(), any())).thenReturn(Future.successful(None))
260150

@@ -290,7 +180,7 @@ class RegistrationSentControllerSpec extends SpecBase with BeforeAndAfterEach {
290180
verify(mockUserAnswerService, times(1)).set(any())(any(), any())
291181
}
292182

293-
"redirect to Session Expired when changing if no existing data is found" in {
183+
"redirect to page not found when changing if no existing data is found" in {
294184

295185
when(mockUserAnswerService.get(any())(any(), any())).thenReturn(Future.successful(Some(emptyUserAnswers)))
296186
when(mockUserAnswerService.set(any())(any(), any())).thenReturn(Future.successful(true))

0 commit comments

Comments
 (0)