Skip to content

Commit a292b1a

Browse files
committed
Added tracks adding when patching sectors
1 parent d6572b7 commit a292b1a

File tree

4 files changed

+27
-1
lines changed

4 files changed

+27
-1
lines changed

src/main/kotlin/server/endpoints/patch/PatchSectorEndpoint.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package server.endpoints.patch
22

33
import ServerDatabase
4+
import data.ExternalTrack
45
import data.LatLng
56
import database.EntityTypes
67
import database.entity.Sector
@@ -43,6 +44,7 @@ object PatchSectorEndpoint : SecureEndpointBase("/sector/{sectorId}") {
4344
var sunTime: Sector.SunTime? = null
4445
var walkingTime: UInt? = null
4546
var weight: String? = null
47+
var tracks: List<ExternalTrack>? = null
4648
var zone: Zone? = null
4749

4850
var removePoint = false
@@ -63,6 +65,7 @@ object PatchSectorEndpoint : SecureEndpointBase("/sector/{sectorId}") {
6365
"kidsApt" -> kidsApt = partData.value.toBoolean()
6466
"sunTime" -> sunTime = partData.value.let { Sector.SunTime.valueOf(it) }
6567
"weight" -> weight = partData.value
68+
"tracks" -> tracks = ExternalTrack.decodeFromPart(partData)
6669
"zone" -> ServerDatabase.instance.query {
6770
zone = Zone.findById(partData.value.toInt())
6871
?: return@query Errors.ParentNotFound.let { error = it }
@@ -116,7 +119,7 @@ object PatchSectorEndpoint : SecureEndpointBase("/sector/{sectorId}") {
116119

117120
if (invalidFile) return respondFailure(Errors.InvalidFileType)
118121

119-
if (areAllNull(displayName, imageFile, gpxFile, kidsApt, point, sunTime, walkingTime, weight, zone) &&
122+
if (areAllNull(displayName, imageFile, gpxFile, kidsApt, point, sunTime, walkingTime, weight, tracks, zone) &&
120123
areAllFalse(removePoint, removeWalkingTime, deleteGpx)
121124
) {
122125
return respondSuccess(httpStatusCode = HttpStatusCode.NoContent)
@@ -131,6 +134,7 @@ object PatchSectorEndpoint : SecureEndpointBase("/sector/{sectorId}") {
131134
point?.let { sector.point = it }
132135
walkingTime?.let { sector.walkingTime = it }
133136
weight?.let { sector.weight = it }
137+
tracks?.let { sector.tracks = it }
134138
zone?.let { sector.zone = it }
135139

136140
if (removePoint) sector.point = null

src/test/kotlin/server/DataProvider.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import data.DataPoint
88
import data.Ending
99
import data.EndingInclination
1010
import data.EndingInfo
11+
import data.ExternalTrack
1112
import data.Grade
1213
import data.LatLng
1314
import data.PitchInfo
@@ -27,6 +28,7 @@ import java.time.Instant
2728
import java.time.LocalDateTime
2829
import java.time.Month
2930
import kotlin.test.assertNotNull
31+
import kotlinx.serialization.builtins.ListSerializer
3032
import kotlinx.serialization.encodeToString
3133
import server.base.ApplicationTestBase.Companion.AUTH_TOKEN
3234
import server.base.StubApplicationTestBuilder
@@ -160,6 +162,9 @@ object DataProvider {
160162
val kidsApt = true
161163
val sunTime = Sector.SunTime.Afternoon
162164
val walkingTime = 12U
165+
val tracks = listOf(
166+
ExternalTrack(ExternalTrack.Type.Wikiloc, "https://example.com")
167+
)
163168
}
164169

165170
suspend fun provideSampleSector(
@@ -169,6 +174,7 @@ object DataProvider {
169174
skipKidsApt: Boolean = false,
170175
skipSunTime: Boolean = false,
171176
skipImage: Boolean = false,
177+
skipTracks: Boolean = false,
172178
skipGpx: Boolean = false,
173179
assertion: suspend HttpResponse.() -> Int? = {
174180
var sectorId: Int? = null
@@ -200,6 +206,8 @@ object DataProvider {
200206
append("kidsApt", SampleSector.kidsApt)
201207
if (!skipSunTime)
202208
append("sunTime", SampleSector.sunTime.name)
209+
if (!skipTracks)
210+
append("tracks", SampleSector.tracks.joinToString("\n") { "${it.type.name};${it.url}" })
203211
append("walkingTime", SampleSector.walkingTime.toInt())
204212
append("point", Json.encodeToString(SampleSector.point))
205213
if (!skipImage)

src/test/kotlin/server/endpoints/create/TestSectorCreationEndpoint.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ class TestSectorCreationEndpoint : ApplicationTestBase() {
3838
assertEquals(DataProvider.SampleSector.kidsApt, sector.kidsApt)
3939
assertEquals(DataProvider.SampleSector.walkingTime, sector.walkingTime)
4040
assertEquals(DataProvider.SampleSector.sunTime, sector.sunTime)
41+
assertEquals(DataProvider.SampleSector.tracks, sector.tracks)
4142

4243
val imageFile = sector.image
4344
assertTrue(imageFile.exists())

src/test/kotlin/server/endpoints/patch/TestPatchSectorEndpoint.kt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
package server.endpoints.patch
22

3+
import data.ExternalTrack
34
import data.LatLng
45
import database.EntityTypes
56
import database.entity.Sector
7+
import database.serialization.Json
68
import kotlin.test.Test
9+
import kotlinx.serialization.builtins.ListSerializer
710
import server.base.ApplicationTestBase
811
import server.base.testPatching
912
import server.base.testPatchingFile
@@ -54,6 +57,16 @@ class TestPatchSectorEndpoint : ApplicationTestBase() {
5457
"0123"
5558
) { it.weight }
5659

60+
@Test
61+
fun `test patching Sector - update tracks`() = testPatching(
62+
EntityTypes.SECTOR,
63+
"tracks",
64+
Json.encodeToString(
65+
ListSerializer(ExternalTrack.serializer()),
66+
listOf(ExternalTrack(ExternalTrack.Type.Wikiloc, "https://example.com"))
67+
)
68+
) { it.tracks }
69+
5770
@Test
5871
fun `test patching Sector - update image`() = testPatchingFile(
5972
EntityTypes.SECTOR,

0 commit comments

Comments
 (0)