Skip to content

Commit

Permalink
Merge pull request #14 from hmrc/add-srn-to-session
Browse files Browse the repository at this point in the history
Appended srn to internal id when persisting to session cache DB
  • Loading branch information
westwater authored Feb 3, 2023
2 parents 25ff276 + c90e071 commit 598afac
Show file tree
Hide file tree
Showing 9 changed files with 16 additions and 10 deletions.
3 changes: 2 additions & 1 deletion app/controllers/actions/DataCreationAction.scala
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ class DataCreationActionImpl @Inject()(sessionRepository: SessionRepository)(imp

request.userAnswers match {
case None =>
val userAnswers = UserAnswers(request.getUserId)
val userAnswersKey = request.getUserId + request.schemeDetails.srn
val userAnswers = UserAnswers(userAnswersKey)
sessionRepository.set(userAnswers).map(_ => DataRequest(request.request, userAnswers))
case Some(data) =>
Future.successful(DataRequest(request.request, data))
Expand Down
6 changes: 2 additions & 4 deletions app/controllers/actions/DataRetrievalAction.scala
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,8 @@ class DataRetrievalActionImpl @Inject()(
)(implicit val executionContext: ExecutionContext) extends DataRetrievalAction {

override protected def transform[A](request: AllowedAccessRequest[A]): Future[OptionalDataRequest[A]] = {

sessionRepository.get(request.request.getUserId).map {
OptionalDataRequest(request, _)
}
val userAnswersKey = request.getUserId + request.schemeDetails.srn
sessionRepository.get(userAnswersKey).map(OptionalDataRequest(request, _))
}
}

Expand Down
2 changes: 2 additions & 0 deletions app/models/SchemeDetails.scala
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import play.api.libs.json._
import utils.WithName

case class SchemeDetails(
srn: String,
schemeName: String,
pstr: String,
schemeStatus: SchemeStatus,
Expand Down Expand Up @@ -83,6 +84,7 @@ object SchemeDetails {

implicit val reads: Reads[SchemeDetails] =
(
(__ \ "srn").read[String] and
(__ \ "schemeName").read[String] and
(__ \ "pstr").read[String] and
(__ \ "schemeStatus").read[SchemeStatus] and
Expand Down
4 changes: 3 additions & 1 deletion app/models/requests/DataRequest.scala
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,13 @@
package models.requests

import play.api.mvc.{Request, WrappedRequest}
import models.UserAnswers
import models.{SchemeDetails, UserAnswers}

case class OptionalDataRequest[A] (request: AllowedAccessRequest[A], userAnswers: Option[UserAnswers]) extends WrappedRequest[A](request) {

def getUserId: String = request.getUserId

def schemeDetails: SchemeDetails = request.schemeDetails
}

case class DataRequest[A] (request: AllowedAccessRequest[A], userAnswers: UserAnswers) extends WrappedRequest[A](request) {
Expand Down
3 changes: 2 additions & 1 deletion test-utils/generators/ModelGenerators.scala
Original file line number Diff line number Diff line change
Expand Up @@ -74,13 +74,14 @@ trait ModelGenerators extends BasicGenerators {

val schemeDetailsGen: Gen[SchemeDetails] =
for {
srn <- nonEmptyString
name <- nonEmptyString
pstr <- nonEmptyString
status <- schemeStatusGen
schemeType <- nonEmptyString
authorisingPsa <- Gen.option(nonEmptyString)
establishers <- Gen.listOf(establisherGen)
} yield SchemeDetails(name, pstr, status, schemeType, authorisingPsa, establishers)
} yield SchemeDetails(srn, name, pstr, status, schemeType, authorisingPsa, establishers)

val pensionSchemeUserGen: Gen[PensionSchemeUser] =
Gen.oneOf(Administrator, Practitioner)
Expand Down
1 change: 1 addition & 0 deletions test-utils/models/ModelSerializers.scala
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ trait ModelSerializers {
)

Json.obj(
"srn" -> details.srn,
"schemeName" -> details.schemeName,
"pstr" -> details.pstr,
"schemeStatus" -> details.schemeStatus,
Expand Down
1 change: 1 addition & 0 deletions test/controllers/ControllerBaseSpec.scala
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ trait ControllerBaseSpec
val userAnswers: UserAnswers = UserAnswers(userAnswersId, Json.obj("non" -> "empty"))

val defaultSchemeDetails: SchemeDetails = SchemeDetails(
"testSRN",
"testSchemeName",
"testPSTR",
SchemeStatus.Open,
Expand Down
2 changes: 1 addition & 1 deletion test/controllers/actions/DataCreationActionSpec.scala
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ class DataCreationActionSpec extends BaseSpec {


result.request mustBe request
result.userAnswers.id mustBe request.getUserId
result.userAnswers.id mustBe request.getUserId + request.schemeDetails.srn
verify(sessionRepository, times(1)).set(any())
}
}
Expand Down
4 changes: 2 additions & 2 deletions test/controllers/actions/DataRetrievalActionSpec.scala
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ class DataRetrievalActionSpec extends BaseSpec {
"there is no data in the cache" in {

val sessionRepository = mock[SessionRepository]
when(sessionRepository.get(request.request.getUserId)) thenReturn Future(None)
when(sessionRepository.get(request.request.getUserId + request.schemeDetails.srn)) thenReturn Future(None)
val action = new Harness(sessionRepository)

val result = action.callTransform().futureValue
Expand All @@ -54,7 +54,7 @@ class DataRetrievalActionSpec extends BaseSpec {
"when there is data in the cache" in {

val sessionRepository = mock[SessionRepository]
when(sessionRepository.get(request.request.getUserId)) thenReturn Future(Some(UserAnswers("id")))
when(sessionRepository.get(request.request.getUserId + request.schemeDetails.srn)) thenReturn Future(Some(UserAnswers("id")))
val action = new Harness(sessionRepository)

val result = action.callTransform().futureValue
Expand Down

0 comments on commit 598afac

Please sign in to comment.