Skip to content

Commit 601ec2d

Browse files
committed
Allow "spotify:{type}:" to be valid uri
* Added test for new uri possibility * Applied spotless
1 parent f9f485e commit 601ec2d

File tree

3 files changed

+18
-8
lines changed

3 files changed

+18
-8
lines changed

src/commonMain/kotlin/com.adamratzman.spotify/models/SpotifyUris.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ import kotlinx.serialization.Serializer
1010
import kotlinx.serialization.internal.StringDescriptor
1111

1212
private fun String.matchType(type: String): String? {
13-
val typeRegex = "^spotify:(?:.*:)*$type:([^:]+)(?::.*)*$|^([^:]+)$".toRegex()
13+
val typeRegex = "^spotify:(?:.*:)*$type:([^:]*)(?::.*)*$|^([^:]+)$".toRegex()
1414
val match = typeRegex.matchEntire(this)?.groupValues ?: return null
15-
return match[1].takeIf { it.isNotEmpty() } ?: match[2].takeIf { it.isNotEmpty() }
15+
return match[1].takeIf { it.isNotBlank() || match[2].isEmpty() } ?: match[2].takeIf { it.isNotEmpty() }
1616
}
1717

1818
private fun String.add(type: String): String {

src/commonTest/kotlin/com.adamratzman/spotify/utilities/JsonTests.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,15 @@ import com.adamratzman.spotify.models.ArtistUri
88
import com.adamratzman.spotify.models.CursorBasedPagingObject
99
import com.adamratzman.spotify.models.PagingObject
1010
import com.adamratzman.spotify.models.Track
11+
import kotlin.test.assertEquals
12+
import kotlin.test.assertTrue
1113
import kotlinx.serialization.ImplicitReflectionSerializer
1214
import kotlinx.serialization.UnstableDefault
1315
import kotlinx.serialization.internal.nullable
1416
import kotlinx.serialization.json.Json
1517
import kotlinx.serialization.parse
1618
import org.spekframework.spek2.Spek
1719
import org.spekframework.spek2.style.specification.describe
18-
import kotlin.test.assertEquals
19-
import kotlin.test.assertTrue
2020

2121
@ImplicitReflectionSerializer
2222
@UnstableDefault

src/commonTest/kotlin/com.adamratzman/spotify/utilities/UrisTests.kt

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@ import com.adamratzman.spotify.models.SpotifyUri
1010
import com.adamratzman.spotify.models.SpotifyUriException
1111
import com.adamratzman.spotify.models.TrackUri
1212
import com.adamratzman.spotify.models.UserUri
13-
import kotlinx.serialization.json.Json
14-
import kotlinx.serialization.json.JsonConfiguration
15-
import org.spekframework.spek2.Spek
16-
import org.spekframework.spek2.style.specification.describe
1713
import kotlin.test.assertEquals
1814
import kotlin.test.assertFailsWith
1915
import kotlin.test.assertFalse
2016
import kotlin.test.assertTrue
17+
import kotlinx.serialization.json.Json
18+
import kotlinx.serialization.json.JsonConfiguration
19+
import org.spekframework.spek2.Spek
20+
import org.spekframework.spek2.style.specification.describe
2121

2222
class UrisTests : Spek({
2323
describe("Uris tests") {
@@ -220,6 +220,16 @@ class UrisTests : Spek({
220220
"7r7uq6qxa4ymx3wnjd9mm6i83",
221221
UserUri("spotify:user:7r7uq6qxa4ymx3wnjd9mm6i83:playlist:66wcLiS5R50akaQ3onDyZd").id
222222
)
223+
224+
assertEquals(
225+
"spotify:user:",
226+
UserUri("spotify:user:").uri
227+
)
228+
229+
assertEquals(
230+
"",
231+
UserUri("spotify:user:").id
232+
)
223233
}
224234
}
225235

0 commit comments

Comments
 (0)