|
1 | 1 | package hmda.validation.engine.lar
|
2 | 2 |
|
3 |
| -import org.scalatest.{ MustMatchers, WordSpec } |
| 3 | +import akka.actor.ActorSystem |
| 4 | +import akka.stream.ActorMaterializer |
| 5 | +import akka.stream.scaladsl.{ Sink, Source } |
| 6 | +import org.scalatest.{ AsyncWordSpec, BeforeAndAfterAll, MustMatchers } |
4 | 7 |
|
5 |
| -class ULISpec extends WordSpec with MustMatchers { |
| 8 | +class ULISpec extends AsyncWordSpec with MustMatchers with BeforeAndAfterAll { |
6 | 9 |
|
7 |
| - val validULI = "10Bx939c5543TqA1144M999143X" |
| 10 | + implicit val system = ActorSystem() |
| 11 | + implicit val materializer = ActorMaterializer() |
| 12 | + implicit val ec = system.dispatcher |
| 13 | + |
| 14 | + val loan1 = "10Bx939c5543TqA1144M999143X" |
| 15 | + val loan2 = "10Cx939c5543TqA1144M999143X" |
| 16 | + val validULI1 = "10Bx939c5543TqA1144M999143X38" |
| 17 | + val validULI2 = "10Cx939c5543TqA1144M999143X10" |
8 | 18 | val invalidULI = "10Bx939c5543TqA1144M999133X38"
|
9 | 19 |
|
| 20 | + override def afterAll(): Unit = { |
| 21 | + super.afterAll() |
| 22 | + system.terminate() |
| 23 | + } |
| 24 | + |
10 | 25 | "A ULI Validation" must {
|
11 | 26 | "Produce valid check digit" in {
|
12 |
| - ULI.checkDigit(validULI) mustBe 38 |
13 |
| - ULI.generateULI(validULI) mustBe "10Bx939c5543TqA1144M999143X38" |
| 27 | + ULI.checkDigit(loan1) mustBe 38 |
| 28 | + ULI.checkDigit(loan2) mustBe 10 |
| 29 | + ULI.generateULI(loan1) mustBe validULI1 |
| 30 | + ULI.generateULI(loan2) mustBe validULI2 |
14 | 31 | }
|
15 | 32 | "Validate ULI" in {
|
16 |
| - ULI.validateULI(validULI + "38") mustBe true |
| 33 | + ULI.validateULI(validULI1) mustBe true |
| 34 | + ULI.validateULI(validULI2) mustBe true |
17 | 35 | ULI.validateULI(invalidULI) mustBe false
|
18 | 36 | }
|
| 37 | + "Validate a list of ULIs" in { |
| 38 | + val uliIt = List(validULI1, invalidULI).toIterator |
| 39 | + val uliSource = Source.fromIterator(() => uliIt) |
| 40 | + val validatedF = ULI.validateULISource(uliSource).runWith(Sink.seq) |
| 41 | + validatedF.map { validated => |
| 42 | + validated.head._2 mustBe true |
| 43 | + validated.tail.head._2 mustBe false |
| 44 | + } |
| 45 | + } |
19 | 46 | }
|
20 | 47 | }
|
0 commit comments