diff --git a/search/src/main/kotlin/FieldConverters.kt b/search/src/main/kotlin/FieldConverters.kt index 34e3afa..4b44f48 100644 --- a/search/src/main/kotlin/FieldConverters.kt +++ b/search/src/main/kotlin/FieldConverters.kt @@ -22,5 +22,5 @@ internal object UuidFieldConverter : FieldConverter { internal object TagsFieldConverter : FieldConverter> { override fun toDoc(value: List): String = value.joinToString(" ") - override fun fromDoc(value: String): List = value.split(" ") + override fun fromDoc(value: String): List = value.split(" ").filter(String::isNotEmpty) } diff --git a/search/src/test/kotlin/TagsFieldConverterTest.kt b/search/src/test/kotlin/TagsFieldConverterTest.kt new file mode 100644 index 0000000..dd8f398 --- /dev/null +++ b/search/src/test/kotlin/TagsFieldConverterTest.kt @@ -0,0 +1,26 @@ +package be.simplenotes.search + +import org.assertj.core.api.Assertions.assertThat +import org.junit.jupiter.params.ParameterizedTest +import org.junit.jupiter.params.provider.MethodSource +import java.util.stream.Stream + +internal class TagsFieldConverterTest { + + @Suppress("unused") + fun tags(): Stream> = Stream.of( + listOf("example"), + listOf("example", "second"), + listOf(), + ) + + @ParameterizedTest + @MethodSource("tags") + fun `tags should stay the same`(input: List) { + val doc = TagsFieldConverter.toDoc(input) + val out = TagsFieldConverter.fromDoc(doc) + assertThat(out) + .hasSameSizeAs(input) + .containsExactlyInAnyOrderElementsOf(input) + } +}