Skip to content

Commit 874a0c6

Browse files
committed
Fix SummaryPaths intermittent failure
1 parent e2965f7 commit 874a0c6

File tree

2 files changed

+33
-29
lines changed

2 files changed

+33
-29
lines changed

api/src/main/scala/hmda/api/http/institutions/submissions/SubmissionSummaryPaths.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,7 @@ trait SubmissionSummaryPaths
5656
submissions <- submissionPersistenceF
5757
s <- (validator ? GetState).mapTo[HmdaFileValidationState]
5858
sub <- (submissions ? GetSubmissionById(submissionId)).mapTo[Submission]
59-
tsLarSummary = TsLarSummary(s.ts, s.lars.size, sub.fileName)
60-
} yield tsLarSummary
59+
} yield TsLarSummary(s.ts, s.lars.size, sub.fileName)
6160

6261
onComplete(tsF) {
6362
case Success(x) => x.ts match {

api/src/test/scala/hmda/api/http/institutions/submissions/SubmissionSummaryPathsSpec.scala

Lines changed: 32 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,63 @@
11
package hmda.api.http.institutions.submissions
22

3-
import akka.actor.ActorRef
4-
import akka.pattern.ask
53
import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._
64
import akka.http.scaladsl.model.StatusCodes
75
import hmda.api.http.InstitutionHttpApiSpec
86
import hmda.api.model.institutions.submissions.{ ContactSummary, FileSummary, RespondentSummary, SubmissionSummary }
9-
import hmda.model.fi.SubmissionId
10-
import hmda.parser.fi.ts.TsCsvParser
11-
import hmda.persistence.HmdaSupervisor.FindProcessingActor
12-
import hmda.persistence.processing.{ HmdaFileValidator, SubmissionManager }
7+
import hmda.model.fi.Submission
138
import hmda.api.model.ErrorResponse
14-
import hmda.parser.fi.lar.LarCsvParser
15-
import hmda.persistence.processing.SubmissionManager.AddFileName
169
import org.scalatest.BeforeAndAfterAll
1710

18-
import scala.concurrent.Await
19-
2011
class SubmissionSummaryPathsSpec extends InstitutionHttpApiSpec with BeforeAndAfterAll {
21-
import hmda.model.util.FITestData._
2212

2313
val institutionId = "0"
2414
val period = "2017"
25-
val seqNr = 1
26-
val submissionId = SubmissionId(institutionId, period, seqNr)
15+
var seqNr = 1
16+
17+
val csv = "1|externalTest0|3|201502221111|2017|35-0704860|10|Passes Bank|555 Passes Court|Passes City|CA|92130|Passes Bank Parent|555 Passes Court Parent|Passes City|CA|92130|Passes Person|555-555-5555|555-555-5555|[email protected]\n" +
18+
"2|externalTest0|3|10164 |20170224|1|1|3|1|21|3|1|20170326|45460|18|153|0501.00|2|2|5| | | | |5| | | | |1|2|31|0| | | |NA |2|1\n" +
19+
"2|externalTest0|3|10174 |20170224|1|1|2|1|60|3|1|20170402|45460|18|153|0503.00|2|2|5| | | | |5| | | | |1|2|210|0| | | |NA |2|2\n" +
20+
"2|externalTest0|3|10370 |20170228|1|1|3|1|73|3|3|20170326|45460|18|153|0505.00|2|2|5| | | | |5| | | | |1|2|89|0|4| | |NA |2|1"
2721

28-
val fileName = "lars.dat"
29-
val lines = fiCSV.split("\n")
30-
val ts = TsCsvParser(lines(0)).right.get
31-
val lars = lines.tail.map(line => LarCsvParser(line).right.get)
22+
val fileName = "2017_lars_bank_1.txt"
23+
val file = multiPartFile(csv, fileName)
3224

3325
override def beforeAll(): Unit = {
3426
super.beforeAll()
35-
val validatorF = (supervisor ? FindProcessingActor(HmdaFileValidator.name, submissionId)).mapTo[ActorRef]
36-
val submissionManagerF = (supervisor ? FindProcessingActor(SubmissionManager.name, submissionId)).mapTo[ActorRef]
37-
val validator = Await.result(validatorF, duration)
38-
val submissionManager = Await.result(submissionManagerF, duration)
39-
validator ! ts
40-
lars.foreach(lar => validator ! lar)
41-
submissionManager ! AddFileName(fileName)
4227
}
4328

4429
"Submission Summary Paths" must {
30+
31+
"Set up: create a submission, upload a file" in {
32+
postWithCfpbHeaders(s"/institutions/$institutionId/filings/$period/submissions") ~> institutionsRoutes(supervisor, querySupervisor, validationStats) ~> check {
33+
val submission = responseAs[Submission]
34+
seqNr = submission.id.sequenceNumber
35+
36+
postWithCfpbHeaders(s"/institutions/$institutionId/filings/$period/submissions/$seqNr", file) ~> institutionsRoutes(supervisor, querySupervisor, validationStats) ~> check {
37+
status mustBe StatusCodes.Accepted
38+
39+
Thread.sleep(2000)
40+
getWithCfpbHeaders(s"/institutions/$institutionId/filings/$period/submissions/latest") ~> institutionsRoutes(supervisor, querySupervisor, validationStats) ~> check {
41+
status mustBe StatusCodes.OK
42+
val response = responseAs[Submission]
43+
response.status.code must be > 7
44+
}
45+
}
46+
}
47+
}
48+
4549
"return a 200" in {
4650
getWithCfpbHeaders(s"/institutions/$institutionId/filings/$period/submissions/$seqNr/summary") ~> institutionsRoutes(supervisor, querySupervisor, validationStats) ~> check {
47-
val contactSummary = ContactSummary(ts.contact.name, ts.contact.phone, ts.contact.email)
48-
val respondentSummary = RespondentSummary(ts.respondent.name, ts.respondent.id, ts.taxId, "cfpb", contactSummary)
49-
val fileSummary = FileSummary(fileName, "2013", lars.size)
51+
val contactSummary = ContactSummary("Passes Person", "555-555-5555", "[email protected]")
52+
val respondentSummary = RespondentSummary("Passes Bank", "externalTest0", "35-0704860", "fdic", contactSummary)
53+
val fileSummary = FileSummary(name = fileName, year = "2017", totalLARS = 3)
5054
val submissionSummary = SubmissionSummary(respondentSummary, fileSummary)
5155

5256
status mustBe StatusCodes.OK
5357
responseAs[SubmissionSummary] mustBe submissionSummary
5458
}
5559
}
60+
5661
"return 404 for nonexistent institution" in {
5762
getWithCfpbHeaders(s"/institutions/xxxxx/filings/$period/submissions/$seqNr/summary") ~> institutionsRoutes(supervisor, querySupervisor, validationStats) ~> check {
5863
status mustBe StatusCodes.NotFound

0 commit comments

Comments
 (0)