@@ -8,17 +8,38 @@ import me.sujanpoudel.playdeals.IntegrationTest
8
8
import me.sujanpoudel.playdeals.domain.ConversionRate
9
9
import me.sujanpoudel.playdeals.domain.ForexRate
10
10
import me.sujanpoudel.playdeals.get
11
+ import me.sujanpoudel.playdeals.jobs.getForexRate
11
12
import me.sujanpoudel.playdeals.jobs.saveForexRate
12
13
import me.sujanpoudel.playdeals.repositories.KeyValuesRepository
13
14
import org.junit.jupiter.api.Test
14
15
import java.time.OffsetDateTime
16
+ import java.time.ZoneOffset
15
17
16
18
class GetForexApiTest (vertx : Vertx ) : IntegrationTest(vertx) {
19
+
20
+ @Test
21
+ fun `Key value repo should properly store the forex rate` () = runTest {
22
+ val repository = di.get<KeyValuesRepository >()
23
+
24
+ val forexRate = ForexRate (
25
+ timestamp = OffsetDateTime .now().withOffsetSameInstant(ZoneOffset .UTC ),
26
+ rates = listOf (ConversionRate (" USD" , " $" , " US Dollar" , " 🇺🇸" , 1.1f ))
27
+ )
28
+ repository.saveForexRate(forexRate)
29
+
30
+ val savedForexRate = repository.getForexRate()
31
+
32
+ savedForexRate shouldBe forexRate
33
+ }
34
+
17
35
@Test
18
36
fun `should return forex if there is data` () = runTest {
19
37
val repository = di.get<KeyValuesRepository >()
20
38
21
- val forexRate = ForexRate (OffsetDateTime .now(), listOf (ConversionRate (" USD" , 1.1f )))
39
+ val forexRate = ForexRate (
40
+ timestamp = OffsetDateTime .now().withOffsetSameInstant(ZoneOffset .UTC ),
41
+ rates = listOf (ConversionRate (" USD" , " $" , " US Dollar" , " 🇺🇸" , 1.1f ))
42
+ )
22
43
23
44
repository.saveForexRate(forexRate)
24
45
@@ -28,11 +49,14 @@ class GetForexApiTest(vertx: Vertx) : IntegrationTest(vertx) {
28
49
.bodyAsJsonObject()
29
50
30
51
response.getJsonObject(" data" ).also { data ->
31
- OffsetDateTime .parse(data.getString(" timestamp" )).toEpochSecond() shouldBe forexRate.timestamp.toEpochSecond()
52
+ OffsetDateTime .parse(data.getString(" timestamp" )) shouldBe forexRate.timestamp
32
53
data.getJsonArray(" rates" ).also { rates ->
33
54
rates.size() shouldBe 1
34
55
(rates.first() as JsonObject ).also { rate ->
35
56
rate.getString(" currency" ) shouldBe " USD"
57
+ rate.getString(" symbol" ) shouldBe " $"
58
+ rate.getString(" name" ) shouldBe " US Dollar"
59
+ rate.getString(" flag" ) shouldBe " 🇺🇸"
36
60
rate.getFloat(" rate" ) shouldBe 1.1f
37
61
}
38
62
}
0 commit comments