Skip to content

Commit 4eb90a0

Browse files
committed
Fix tests and linting
1 parent a1ca3d3 commit 4eb90a0

File tree

6 files changed

+107
-59
lines changed

6 files changed

+107
-59
lines changed

backend/src/main/kotlin/no/java/cupcake/config/SleepingPillConfig.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@ data class SleepingPillConfig(
66
val rootUrl: String,
77
val cacheTtlSeconds: Long,
88
val maxPastYears: Long = 3,
9-
val includeCurrentYear: Boolean = false
9+
val includeCurrentYear: Boolean = false,
1010
)

backend/src/main/kotlin/no/java/cupcake/sleepingpill/SleepingPillService.kt

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,12 @@ class SleepingPillService(
3737
private val client: HttpClient,
3838
private val bringService: BringService,
3939
cacheTimeoutSeconds: Long,
40-
private val cacheScope: CoroutineScope = CoroutineScope(SupervisorJob() + Dispatchers.IO),
4140
private val maxPastYears: Long,
4241
private val includeCurrentYear: Boolean,
42+
private val initAtStart: Boolean = false,
4343
) {
4444
private val ttl: Duration = if (cacheTimeoutSeconds <= 0) Duration.ZERO else Duration.ofSeconds(cacheTimeoutSeconds)
45+
private val cacheScope: CoroutineScope = CoroutineScope(SupervisorJob() + Dispatchers.IO)
4546

4647
private val conferencesCache: AsyncLoadingCache<String, List<Conference>> =
4748
Caffeine.newBuilder().apply { if (!ttl.isZero) expireAfterWrite(ttl) }.buildAsync { _, _ ->
@@ -66,14 +67,16 @@ class SleepingPillService(
6667
}
6768

6869
init {
69-
runBlocking {
70-
either {
71-
val conferences = conferences()
72-
conferences.forEach { conference ->
73-
sessions(ConferenceId(conference.id).bind())
70+
if (initAtStart) {
71+
runBlocking {
72+
either {
73+
val conferences = conferences()
74+
conferences.forEach { conference ->
75+
sessions(ConferenceId(conference.id).bind())
76+
}
77+
}.onLeft { error ->
78+
logger.warn { "Failed to initialize conferences cache: $error" }
7479
}
75-
}.onLeft { error ->
76-
logger.warn { "Failed to initialize conferences cache: $error" }
7780
}
7881
}
7982
}

backend/src/test/kotlin/no/java/cupcake/TestExtensions.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,14 +95,16 @@ fun buildSleepingPillService(
9595
fixture: String,
9696
client: HttpClient? = null,
9797
bringService: BringService? = null,
98+
includeCurrentYear: Boolean = false,
9899
block: (suspend (request: HttpRequestData) -> Unit)? = null,
99100
): SleepingPillService =
100101
SleepingPillService(
101102
client = client ?: buildClient(buildMockEngine(fixture, block)),
102103
bringService = bringService ?: buildBringService(fixture = "/postal_codes.json", postalCodeUrl = "/test"),
103104
cacheTimeoutSeconds = 10,
104105
maxPastYears = 3,
105-
includeCurrentYear = true,
106+
includeCurrentYear = includeCurrentYear,
107+
initAtStart = false,
106108
)
107109

108110
fun buildBringService(

backend/src/test/kotlin/no/java/cupcake/plugins/RoutingTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,13 @@ class RoutingTest :
4848

4949
val response = body<List<Conference>>()
5050

51-
response.size shouldBe 17
51+
response.size shouldBe 3
5252

5353
val conference2024 = response.first { it.slug == "javazone_2024" }
5454

5555
conference2024 shouldBe
5656
Conference(
57-
name = "Javazone 2024",
57+
name = "JavaZone 2024",
5858
slug = "javazone_2024",
5959
id = "ad82e461-9444-40a4-a9d5-cc4885f9107a",
6060
)

backend/src/test/kotlin/no/java/cupcake/sleepingpill/SleepingPillServiceTest.kt

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,41 @@ class SleepingPillServiceTest :
2121

2222
val conferenceList = conferences.getOrNull()!!
2323

24-
conferenceList.size shouldBe 17
24+
conferenceList.size shouldBe 3
2525

2626
val conference2024 = conferenceList.first { it.slug == "javazone_2024" }
2727

2828
conference2024 shouldBe
2929
Conference(
30-
name = "Javazone 2024",
30+
name = "JavaZone 2024",
31+
slug = "javazone_2024",
32+
id = "ad82e461-9444-40a4-a9d5-cc4885f9107a",
33+
)
34+
35+
rejectSlugs.forEach { slug ->
36+
conferenceList.filter { it.slug == slug } shouldBe emptyList()
37+
}
38+
}
39+
40+
test("Can fetch conference list with current year") {
41+
val service = buildService("/conferences.json", true)
42+
43+
val conferences =
44+
either {
45+
service.conferences()
46+
}
47+
48+
conferences.isRight() shouldBe true
49+
50+
val conferenceList = conferences.getOrNull()!!
51+
52+
conferenceList.size shouldBe 4
53+
54+
val conference2024 = conferenceList.first { it.slug == "javazone_2024" }
55+
56+
conference2024 shouldBe
57+
Conference(
58+
name = "JavaZone 2024",
3159
slug = "javazone_2024",
3260
id = "ad82e461-9444-40a4-a9d5-cc4885f9107a",
3361
)
@@ -87,4 +115,7 @@ class SleepingPillServiceTest :
87115
}
88116
})
89117

90-
private fun buildService(fixture: String) = buildSleepingPillService(fixture)
118+
private fun buildService(
119+
fixture: String,
120+
includeCurrentYear: Boolean = false,
121+
) = buildSleepingPillService(fixture, includeCurrentYear = includeCurrentYear)

backend/src/test/resources/conferences.json

Lines changed: 56 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -3,116 +3,128 @@
33
{
44
"name": "JavaZone 2006",
55
"id": "1ca89aef-c7ce-45b5-95a0-630f55d7efa6",
6-
"slug": "javazone_2006",
7-
"slottimes": "09:00,10:20,11:40,13:00,14:20,15:40,17:00,18:20"
6+
"slottimes": "09:00,10:20,11:40,13:00,14:20,15:40,17:00,18:20",
7+
"slug": "javazone_2006"
88
},
99
{
1010
"name": "JavaZone 2007",
1111
"id": "407f368f-41d4-4248-b825-39d0f973dfe1",
12-
"slug": "javazone_2007",
13-
"slottimes": "09:00,10:20,11:40,13:00,14:20,15:40,17:00,18:20"
12+
"slottimes": "09:00,10:20,11:40,13:00,14:20,15:40,17:00,18:20",
13+
"slug": "javazone_2007"
1414
},
1515
{
1616
"name": "JavaZone 2008",
1717
"id": "5e130372-285d-49cd-aedb-7f306d97b04d",
18-
"slug": "javazone_2008",
19-
"slottimes": "09:00,10:20,11:40,13:00,14:20,15:40,17:00,18:20"
18+
"slottimes": "09:00,10:20,11:40,13:00,14:20,15:40,17:00,18:20",
19+
"slug": "javazone_2008"
2020
},
2121
{
2222
"name": "JavaZone 2009",
2323
"id": "b582a071-d4c2-4a48-ac66-812a5ef94c1b",
24-
"slug": "javazone_2009",
25-
"slottimes": "09:00,10:20,11:40,13:00,14:20,15:40,17:00,18:20"
24+
"slottimes": "09:00,10:20,11:40,13:00,14:20,15:40,17:00,18:20",
25+
"slug": "javazone_2009"
2626
},
2727
{
2828
"name": "JavaZone 2010",
2929
"id": "28a1c5c2-b61e-4d2f-a67e-b60f9efdc2a8",
30-
"slug": "javazone_2010",
31-
"slottimes": "09:00,10:20,11:40,13:00,14:20,15:40,17:00,18:20"
30+
"slottimes": "09:00,10:20,11:40,13:00,14:20,15:40,17:00,18:20",
31+
"slug": "javazone_2010"
3232
},
3333
{
3434
"name": "JavaZone 2011",
3535
"id": "1307dbcc-048e-4f80-9faa-ffa1bef40fda",
36-
"slug": "javazone_2011",
37-
"slottimes": "09:00,10:20,11:40,13:00,14:20,15:40,17:00,18:20"
36+
"slottimes": "09:00,10:20,11:40,13:00,14:20,15:40,17:00,18:20",
37+
"slug": "javazone_2011"
3838
},
3939
{
4040
"name": "JavaZone 2012",
4141
"id": "4c18f45a-054a-4699-a2bc-6a59a9dd8382",
42-
"slug": "javazone_2012",
43-
"slottimes": "09:00,10:20,11:40,13:00,14:20,15:40,17:00,18:20"
42+
"slottimes": "09:00,10:20,11:40,13:00,14:20,15:40,17:00,18:20",
43+
"slug": "javazone_2012"
4444
},
4545
{
4646
"name": "JavaZone 2013",
4747
"id": "cee37cc1-5399-47ef-9418-21f9b6444bfa",
48-
"slug": "javazone_2013",
49-
"slottimes": "09:00,10:20,11:40,13:00,14:20,15:40,17:00,18:20"
48+
"slottimes": "09:00,10:20,11:40,13:00,14:20,15:40,17:00,18:20",
49+
"slug": "javazone_2013"
5050
},
5151
{
5252
"name": "JavaZone 2014",
5353
"id": "9f40063a-5f20-4d7b-b1e8-ed0c6cc18a5f",
54-
"slug": "javazone_2014",
55-
"slottimes": "09:00,10:20,11:40,13:00,14:20,15:40,17:00,18:20"
54+
"slottimes": "09:00,10:20,11:40,13:00,14:20,15:40,17:00,18:20",
55+
"slug": "javazone_2014"
5656
},
5757
{
5858
"name": "JavaZone 2015",
5959
"id": "0e6d98e9-5b06-42e7-b275-6abadb498c81",
60-
"slug": "javazone_2015",
61-
"slottimes": "09:00,10:20,11:40,13:00,14:20,15:40,17:00,18:20"
60+
"slottimes": "09:00,10:20,11:40,13:00,14:20,15:40,17:00,18:20",
61+
"slug": "javazone_2015"
6262
},
6363
{
6464
"name": "JavaZone 2016",
6565
"id": "3baa25d3-9cca-459a-90d7-9fc349209289",
66-
"slug": "javazone_2016",
67-
"slottimes": "09:00,10:20,11:40,13:00,14:20,15:40,17:00,18:20"
66+
"slottimes": "09:00,10:20,11:40,13:00,14:20,15:40,17:00,18:20",
67+
"slug": "javazone_2016"
6868
},
6969
{
7070
"name": "JavaZone 2017",
7171
"id": "30d5c2f1cb214fc8b0649a44fdf3b4bf",
72-
"slug": "javazone_2017",
73-
"slottimes": "09:00,10:20,11:40,13:00,14:20,15:40,17:00,18:20"
72+
"slottimes": "09:00,10:20,11:40,13:00,14:20,15:40,17:00,18:20",
73+
"slug": "javazone_2017"
7474
},
7575
{
7676
"name": "JavaZone 2018",
7777
"id": "346cb6bd41ea4812971927ffa33e0333",
78-
"slug": "javazone_2018",
79-
"slottimes": "09:00,10:20,11:40,13:00,14:20,15:40,17:00,18:20"
78+
"slottimes": "09:00,10:20,11:40,13:00,14:20,15:40,17:00,18:20",
79+
"slug": "javazone_2018"
8080
},
8181
{
82-
"name": "Javazone 2019",
82+
"name": "JavaZone 2019",
8383
"id": "99f71831-fdd3-41e3-962e-f25af5e091b9",
84-
"slug": "javazone_2019",
85-
"slottimes": "09:00,10:20,11:40,13:00,14:20,15:40,17:00,18:20"
84+
"slottimes": "09:00,10:20,11:40,13:00,14:20,15:40,17:00,18:20",
85+
"slug": "javazone_2019"
8686
},
8787
{
88-
"name": "Javazone 2020",
88+
"name": "JavaZone 2020",
8989
"id": "02a3a811-afe1-48d3-a64b-10d9732b3735",
90-
"slug": "javazone_2020",
91-
"slottimes": "09:00,10:20,11:40,13:00,14:20,15:40,17:00,18:20"
90+
"slottimes": "09:00,10:20,11:40,13:00,14:20,15:40,17:00,18:20",
91+
"slug": "javazone_2020"
9292
},
9393
{
94-
"name": "Javazone 2021",
94+
"name": "JavaZone 2021",
9595
"id": "48aaa57f-bcf7-46a9-aa96-a9e82447fe5c",
96-
"slug": "javazone_2021",
97-
"slottimes": "09:30,10:40,11:50,13:30,14:40,15:50"
96+
"slottimes": "09:30,10:40,11:50,13:30,14:40,15:50",
97+
"slug": "javazone_2021"
9898
},
9999
{
100-
"name": "Javazone 2022",
100+
"name": "JavaZone 2022",
101101
"id": "62854772-dcb8-4626-9ab7-095cf3fb3168",
102-
"slug": "javazone_2022",
103-
"slottimes": "09:00,10:20,11:40,13:00,14:20,15:40,17:00,18:20"
102+
"slottimes": "09:00,10:20,11:40,13:00,14:20,15:40,17:00,18:20",
103+
"slug": "javazone_2022"
104104
},
105105
{
106-
"name": "Javazone 2023",
106+
"name": "JavaZone 2023",
107107
"id": "5c979d4b-9f92-43e3-a8c2-e3de0298d8de",
108-
"slug": "javazone_2023",
109-
"slottimes": "09:00,10:20,11:40,13:00,14:20,15:40,17:00,18:20"
108+
"slottimes": "09:00,10:20,11:40,13:00,14:20,15:40,17:00,18:20",
109+
"slug": "javazone_2023"
110110
},
111111
{
112-
"name": "Javazone 2024",
112+
"name": "JavaZone 2024",
113113
"id": "ad82e461-9444-40a4-a9d5-cc4885f9107a",
114-
"slug": "javazone_2024",
115-
"slottimes": "09:00,10:20,11:40,13:00,14:20,15:40,17:00,18:20"
114+
"slottimes": "09:00,10:20,11:40,13:00,14:20,15:40,17:00,18:20",
115+
"slug": "javazone_2024"
116+
},
117+
{
118+
"name": "JavaZone 2025",
119+
"id": "ffbdc06b-b570-4409-bf2f-7d3b5dd2aed3",
120+
"slottimes": "09:00,10:20,11:40,13:00,14:20,15:40,17:00,18:20",
121+
"slug": "javazone_2025"
122+
},
123+
{
124+
"name": "JavaZone 2026",
125+
"id": "95759742-2a8c-4542-9eb0-7c52f598a3da",
126+
"slottimes": "09:00,10:20,11:40,13:00,14:20,15:40,17:00,18:20",
127+
"slug": "javazone_2026"
116128
}
117129
]
118130
}

0 commit comments

Comments
 (0)