|
1 | 1 | package hmda.api.http.institutions.submissions
|
2 | 2 |
|
3 |
| -import akka.actor.ActorRef |
4 |
| -import akka.pattern.ask |
5 | 3 | import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._
|
6 | 4 | import akka.http.scaladsl.model.StatusCodes
|
7 | 5 | import hmda.api.http.InstitutionHttpApiSpec
|
8 | 6 | 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 |
13 | 8 | import hmda.api.model.ErrorResponse
|
14 |
| -import hmda.parser.fi.lar.LarCsvParser |
15 |
| -import hmda.persistence.processing.SubmissionManager.AddFileName |
16 | 9 | import org.scalatest.BeforeAndAfterAll
|
17 | 10 |
|
18 |
| -import scala.concurrent.Await |
19 |
| - |
20 | 11 | class SubmissionSummaryPathsSpec extends InstitutionHttpApiSpec with BeforeAndAfterAll {
|
21 |
| - import hmda.model.util.FITestData._ |
22 | 12 |
|
23 | 13 | val institutionId = "0"
|
24 | 14 | 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" |
27 | 21 |
|
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) |
32 | 24 |
|
33 | 25 | override def beforeAll(): Unit = {
|
34 | 26 | 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) |
42 | 27 | }
|
43 | 28 |
|
44 | 29 | "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 | + |
45 | 49 | "return a 200" in {
|
46 | 50 | 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) |
50 | 54 | val submissionSummary = SubmissionSummary(respondentSummary, fileSummary)
|
51 | 55 |
|
52 | 56 | status mustBe StatusCodes.OK
|
53 | 57 | responseAs[SubmissionSummary] mustBe submissionSummary
|
54 | 58 | }
|
55 | 59 | }
|
| 60 | + |
56 | 61 | "return 404 for nonexistent institution" in {
|
57 | 62 | getWithCfpbHeaders(s"/institutions/xxxxx/filings/$period/submissions/$seqNr/summary") ~> institutionsRoutes(supervisor, querySupervisor, validationStats) ~> check {
|
58 | 63 | status mustBe StatusCodes.NotFound
|
|
0 commit comments