|
|
|
@ -17,78 +17,78 @@ import java.util.*
|
|
|
|
|
|
|
|
|
|
|
|
class ConvertToMangaListFilterTest {
|
|
|
|
class ConvertToMangaListFilterTest {
|
|
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
@Test
|
|
|
|
fun convertToMangaListFilterTest() {
|
|
|
|
fun convertToMangaListFilterTest() {
|
|
|
|
val tags = setOf(buildMangaTag("tag1"), buildMangaTag("tag2"))
|
|
|
|
val tags = setOf(buildMangaTag("tag1"), buildMangaTag("tag2"))
|
|
|
|
val excludedTags = setOf(buildMangaTag("exclude_tag"))
|
|
|
|
val excludedTags = setOf(buildMangaTag("exclude_tag"))
|
|
|
|
val states = setOf(MangaState.ONGOING)
|
|
|
|
val states = setOf(MangaState.ONGOING)
|
|
|
|
val contentRatings = setOf(ContentRating.SAFE)
|
|
|
|
val contentRatings = setOf(ContentRating.SAFE)
|
|
|
|
val contentTypes = setOf(MANGA, MANHUA)
|
|
|
|
val contentTypes = setOf(MANGA, MANHUA)
|
|
|
|
val demographics = setOf(SEINEN)
|
|
|
|
val demographics = setOf(SEINEN)
|
|
|
|
|
|
|
|
|
|
|
|
val query = MangaSearchQuery.Builder()
|
|
|
|
val query = MangaSearchQuery.Builder()
|
|
|
|
.criterion(Match(TITLE_NAME, "title_name"))
|
|
|
|
.criterion(Match(TITLE_NAME, "title_name"))
|
|
|
|
.criterion(Include(TAG, tags))
|
|
|
|
.criterion(Include(TAG, tags))
|
|
|
|
.criterion(Exclude(TAG, excludedTags))
|
|
|
|
.criterion(Exclude(TAG, excludedTags))
|
|
|
|
.criterion(Include(LANGUAGE, setOf(Locale.ENGLISH)))
|
|
|
|
.criterion(Include(LANGUAGE, setOf(Locale.ENGLISH)))
|
|
|
|
.criterion(Include(ORIGINAL_LANGUAGE, setOf(Locale.JAPANESE)))
|
|
|
|
.criterion(Include(ORIGINAL_LANGUAGE, setOf(Locale.JAPANESE)))
|
|
|
|
.criterion(Include(STATE, states))
|
|
|
|
.criterion(Include(STATE, states))
|
|
|
|
.criterion(Include(CONTENT_RATING, contentRatings))
|
|
|
|
.criterion(Include(CONTENT_RATING, contentRatings))
|
|
|
|
.criterion(Include(CONTENT_TYPE, contentTypes))
|
|
|
|
.criterion(Include(CONTENT_TYPE, contentTypes))
|
|
|
|
.criterion(Include(DEMOGRAPHIC, demographics))
|
|
|
|
.criterion(Include(DEMOGRAPHIC, demographics))
|
|
|
|
.criterion(Range(PUBLICATION_YEAR, 1997, 2024))
|
|
|
|
.criterion(Range(PUBLICATION_YEAR, 1997, 2024))
|
|
|
|
.criterion(Match(PUBLICATION_YEAR, 2020))
|
|
|
|
.criterion(Match(PUBLICATION_YEAR, 2020))
|
|
|
|
.build()
|
|
|
|
.build()
|
|
|
|
|
|
|
|
|
|
|
|
val listFilter = convertToMangaListFilter(query)
|
|
|
|
val listFilter = convertToMangaListFilter(query)
|
|
|
|
|
|
|
|
|
|
|
|
assertEquals(listFilter.query, "title_name")
|
|
|
|
assertEquals(listFilter.query, "title_name")
|
|
|
|
assertEquals(listFilter.tags, tags)
|
|
|
|
assertEquals(listFilter.tags, tags)
|
|
|
|
assertEquals(listFilter.tagsExclude, excludedTags)
|
|
|
|
assertEquals(listFilter.tagsExclude, excludedTags)
|
|
|
|
assertEquals(listFilter.locale, Locale.ENGLISH)
|
|
|
|
assertEquals(listFilter.locale, Locale.ENGLISH)
|
|
|
|
assertEquals(listFilter.originalLocale, Locale.JAPANESE)
|
|
|
|
assertEquals(listFilter.originalLocale, Locale.JAPANESE)
|
|
|
|
assertEquals(listFilter.states, states)
|
|
|
|
assertEquals(listFilter.states, states)
|
|
|
|
assertEquals(listFilter.contentRating, contentRatings)
|
|
|
|
assertEquals(listFilter.contentRating, contentRatings)
|
|
|
|
assertEquals(listFilter.types, contentTypes)
|
|
|
|
assertEquals(listFilter.types, contentTypes)
|
|
|
|
assertEquals(listFilter.demographics, demographics)
|
|
|
|
assertEquals(listFilter.demographics, demographics)
|
|
|
|
assertEquals(listFilter.year, 2020)
|
|
|
|
assertEquals(listFilter.year, 2020)
|
|
|
|
assertEquals(listFilter.yearFrom, 1997)
|
|
|
|
assertEquals(listFilter.yearFrom, 1997)
|
|
|
|
assertEquals(listFilter.yearTo, 2024)
|
|
|
|
assertEquals(listFilter.yearTo, 2024)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
@Test
|
|
|
|
fun convertToMangaListFilterWithMultipleTagsIncludeTest() {
|
|
|
|
fun convertToMangaListFilterWithMultipleTagsIncludeTest() {
|
|
|
|
val tags1 = setOf(buildMangaTag("tag1"), buildMangaTag("tag2"))
|
|
|
|
val tags1 = setOf(buildMangaTag("tag1"), buildMangaTag("tag2"))
|
|
|
|
val tags2 = setOf(buildMangaTag("tag3"), buildMangaTag("tag4"))
|
|
|
|
val tags2 = setOf(buildMangaTag("tag3"), buildMangaTag("tag4"))
|
|
|
|
|
|
|
|
|
|
|
|
val query = MangaSearchQuery.Builder()
|
|
|
|
val query = MangaSearchQuery.Builder()
|
|
|
|
.criterion(Include(TAG, tags1))
|
|
|
|
.criterion(Include(TAG, tags1))
|
|
|
|
.criterion(Include(TAG, tags2))
|
|
|
|
.criterion(Include(TAG, tags2))
|
|
|
|
.build()
|
|
|
|
.build()
|
|
|
|
|
|
|
|
|
|
|
|
val listFilter = convertToMangaListFilter(query)
|
|
|
|
val listFilter = convertToMangaListFilter(query)
|
|
|
|
|
|
|
|
|
|
|
|
assertEquals(listFilter.tags, tags1 union tags2)
|
|
|
|
assertEquals(listFilter.tags, tags1 union tags2)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
@Test
|
|
|
|
fun convertToMangaListFilterWithUnsupportedFieldTest() {
|
|
|
|
fun convertToMangaListFilterWithUnsupportedFieldTest() {
|
|
|
|
val query = MangaSearchQuery.Builder()
|
|
|
|
val query = MangaSearchQuery.Builder()
|
|
|
|
.criterion(Include(AUTHOR, setOf(buildMangaTag("author"))))
|
|
|
|
.criterion(Include(AUTHOR, setOf(buildMangaTag("author"))))
|
|
|
|
.build()
|
|
|
|
.build()
|
|
|
|
|
|
|
|
|
|
|
|
val exception = assertThrows<IllegalArgumentException> {
|
|
|
|
val exception = assertThrows<IllegalArgumentException> {
|
|
|
|
convertToMangaListFilter(query)
|
|
|
|
convertToMangaListFilter(query)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
assert(exception.message!!.contains("Unsupported field for Include criterion: AUTHOR"))
|
|
|
|
assert(exception.message!!.contains("Unsupported field for Include criterion: AUTHOR"))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private fun buildMangaTag(name: String): MangaTag {
|
|
|
|
private fun buildMangaTag(name: String): MangaTag {
|
|
|
|
return MangaTag(
|
|
|
|
return MangaTag(
|
|
|
|
key = "${name}Key",
|
|
|
|
key = "${name}Key",
|
|
|
|
title = name,
|
|
|
|
title = name,
|
|
|
|
source = MangaParserSource.DUMMY,
|
|
|
|
source = MangaParserSource.MANGADEX,
|
|
|
|
)
|
|
|
|
)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|