Skip to content

Commit 59f75b0

Browse files
committed
Add filename to Submission persistence
1 parent 4e2e2d1 commit 59f75b0

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

persistence/src/main/scala/hmda/persistence/institutions/SubmissionPersistence.scala

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ object SubmissionPersistence {
1313

1414
case object CreateSubmission extends Command
1515
case class UpdateSubmissionStatus(id: SubmissionId, status: SubmissionStatus) extends Command
16+
case class AddSubmissionFileName(id: SubmissionId, fileName: String) extends Command
1617
case class GetSubmissionById(id: SubmissionId) extends Command
1718
case object GetLatestSubmission extends Command
1819

@@ -40,6 +41,12 @@ object SubmissionPersistence {
4041
}
4142

4243
SubmissionState(submissions.updated(i, updatedSub))
44+
45+
case SubmissionFileNameAdded(id, name) =>
46+
val sub = submissions.find(_.id == id).getOrElse(Submission())
47+
val index = submissions.indexOf(sub)
48+
val updated = sub.copy(fileName = name)
49+
SubmissionState(submissions.updated(index, updated))
4350
}
4451
}
4552

@@ -83,6 +90,17 @@ class SubmissionPersistence(institutionId: String, period: String) extends HmdaP
8390
sender() ! None
8491
}
8592

93+
case AddSubmissionFileName(id, name) =>
94+
if (state.submissions.map(_.id).contains(id)) {
95+
persist(SubmissionFileNameAdded(id, name)) { e =>
96+
updateState(e)
97+
sender() ! Some(Submission(id, fileName = name))
98+
}
99+
} else {
100+
log.warning(s"Submission does not exist. Could not add filename for submission with id $id")
101+
sender() ! None
102+
}
103+
86104
case GetSubmissionById(id) =>
87105
val submission = state.submissions.find(s => s.id == id).getOrElse(Submission(SubmissionId(), Failed("No submission found"), 0L, 0L))
88106
sender() ! submission

persistence/src/test/scala/hmda/persistence/institutions/SubmissionPersistenceSpec.scala

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,20 @@ class SubmissionPersistenceSpec extends ActorSpec {
5454
probe.expectMsg(None)
5555
}
5656

57+
"add a filename" in {
58+
val id = SubmissionId("0", "2017", 2)
59+
probe.send(submissionsActor, GetSubmissionById(id))
60+
val before = probe.receiveOne(5.seconds)
61+
before.asInstanceOf[Submission].fileName mustBe ""
62+
63+
probe.send(submissionsActor, AddSubmissionFileName(id, "my file name dot txt"))
64+
probe.expectMsgType[Some[Submission]]
65+
66+
probe.send(submissionsActor, GetSubmissionById(id))
67+
val after = probe.receiveOne(5.seconds)
68+
after.asInstanceOf[Submission].fileName mustBe "my file name dot txt"
69+
}
70+
5771
"return list of submissions in order of descending sequence number" in {
5872
probe.send(submissionsActor, GetState)
5973
val subs = probe.expectMsgType[List[Submission]]

0 commit comments

Comments
 (0)