From 206fb4e584081729ef2b9e061b4899910b31f632 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Mon, 18 Jul 2022 12:40:28 +0300 Subject: [PATCH] Update test data --- .../androidTest/assets/categories/simple.json | 8 ++ app/src/androidTest/assets/manga/header.json | 35 +++++ .../java/org/koitharu/kotatsu/SampleData.kt | 131 ++++++------------ .../kotatsu/tracker/domain/TrackerTest.kt | 21 +-- 4 files changed, 91 insertions(+), 104 deletions(-) create mode 100644 app/src/androidTest/assets/categories/simple.json create mode 100644 app/src/androidTest/assets/manga/header.json diff --git a/app/src/androidTest/assets/categories/simple.json b/app/src/androidTest/assets/categories/simple.json new file mode 100644 index 000000000..90f6ecf1a --- /dev/null +++ b/app/src/androidTest/assets/categories/simple.json @@ -0,0 +1,8 @@ +{ + "id": 4, + "title": "Read later", + "sortKey": 1, + "order": "NEWEST", + "createdAt": 1335906000000, + "isTrackingEnabled": true +} \ No newline at end of file diff --git a/app/src/androidTest/assets/manga/header.json b/app/src/androidTest/assets/manga/header.json new file mode 100644 index 000000000..1ebbee769 --- /dev/null +++ b/app/src/androidTest/assets/manga/header.json @@ -0,0 +1,35 @@ +{ + "id": -2096681732556647985, + "title": "Странствия Эманон", + "url": "/stranstviia_emanon", + "publicUrl": "https://readmanga.io/stranstviia_emanon", + "rating": 0.9400894, + "isNsfw": true, + "coverUrl": "https://staticrm.rmr.rocks/uploads/pics/01/12/559_p.jpg", + "tags": [ + { + "title": "Сверхъестественное", + "key": "supernatural", + "source": "READMANGA_RU" + }, + { + "title": "Сэйнэн", + "key": "seinen", + "source": "READMANGA_RU" + }, + { + "title": "Повседневность", + "key": "slice_of_life", + "source": "READMANGA_RU" + }, + { + "title": "Приключения", + "key": "adventure", + "source": "READMANGA_RU" + } + ], + "state": "FINISHED", + "largeCoverUrl": null, + "description": null, + "source": "READMANGA_RU" +} \ No newline at end of file diff --git a/app/src/androidTest/java/org/koitharu/kotatsu/SampleData.kt b/app/src/androidTest/java/org/koitharu/kotatsu/SampleData.kt index baeb96e27..5c592cba5 100644 --- a/app/src/androidTest/java/org/koitharu/kotatsu/SampleData.kt +++ b/app/src/androidTest/java/org/koitharu/kotatsu/SampleData.kt @@ -1,102 +1,57 @@ package org.koitharu.kotatsu +import androidx.test.platform.app.InstrumentationRegistry +import com.squareup.moshi.* +import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory +import okio.buffer +import okio.source import org.koitharu.kotatsu.core.model.FavouriteCategory -import org.koitharu.kotatsu.parsers.model.* +import org.koitharu.kotatsu.parsers.model.Manga import java.util.* +import kotlin.reflect.KClass object SampleData { - val manga = Manga( - id = 1105355890252749533, - title = "Sasurai Emanon", - altTitle = null, - url = "/manga/sasurai_emanon/", - publicUrl = "https://www.mangatown.com/manga/sasurai_emanon/", - rating = 1.0f, - isNsfw = false, - coverUrl = "https://fmcdn.mangahere.com/store/manga/10992/ocover.jpg?token=905148d2f052f9d3604135933b958771c8b00077&ttl=1658214000&v=1578490983", - tags = setOf( - MangaTag(title = "Adventure", key = "0-adventure-0-0-0-0", source = MangaSource.MANGATOWN), - MangaTag(title = "Mature", key = "0-mature-0-0-0-0", source = MangaSource.MANGATOWN), - MangaTag(title = "Psychological", key = "0-psychological-0-0-0-0", source = MangaSource.MANGATOWN), - MangaTag(title = "Slice Of Life", key = "0-slice_of_life-0-0-0-0", source = MangaSource.MANGATOWN), - MangaTag(title = "Supernatural", key = "0-supernatural-0-0-0-0", source = MangaSource.MANGATOWN), - ), - state = MangaState.ONGOING, - author = "Kajio Shinji", - largeCoverUrl = null, - source = MangaSource.MANGATOWN, - ) + private val moshi = Moshi.Builder() + .add(DateAdapter()) + .add(KotlinJsonAdapterFactory()) + .build() - val mangaDetails = manga.copy( - tags = setOf( - MangaTag(title = "Adventure", key = "0-adventure-0-0-0-0", source = MangaSource.MANGATOWN), - MangaTag(title = "Mature", key = "0-mature-0-0-0-0", source = MangaSource.MANGATOWN), - MangaTag(title = "Psychological", key = "0-psychological-0-0-0-0", source = MangaSource.MANGATOWN), - MangaTag(title = "Slice Of Life", key = "0-slice_of_life-0-0-0-0", source = MangaSource.MANGATOWN), - MangaTag(title = "Supernatural", key = "0-supernatural-0-0-0-0", source = MangaSource.MANGATOWN), - ), - largeCoverUrl = null, - description = """ - Based on the award-winning novel by Shinji Kajio, Memories of Emanon tells the story of a mysterious girl - who holds a 3-billion-year old memory, dating back to the moment life first appeared on Earth. The first - half of the volume is the colored Wandering Emanon '67 chapters (published before as Emanon Episode: 1). - The second half is Wandering Emanon set before the '67 chapters. - """.trimIndent(), - chapters = listOf( - MangaChapter( - id = -7214407414868456892, - name = "Sasurai Emanon - 1", - number = 1, - url = "/manga/sasurai_emanon/c001/", - scanlator = null, - uploadDate = 1335906000000, - branch = null, - source = MangaSource.MANGATOWN, - ), - MangaChapter( - id = -7214407414868456861, - name = "Sasurai Emanon - 2", - number = 2, - url = "/manga/sasurai_emanon/c002/", - scanlator = null, - uploadDate = 1335906000000, - branch = null, - source = MangaSource.MANGATOWN, - ), - MangaChapter( - id = -7214407414868456830, - name = "Sasurai Emanon - 3", - number = 3, - url = "/manga/sasurai_emanon/c003/", - scanlator = null, - uploadDate = 1335906000000, - branch = null, - source = MangaSource.MANGATOWN, - ), - MangaChapter( - id = -7214407414868456799, - name = "Sasurai Emanon - 4", - number = 3, - url = "/manga/sasurai_emanon/c004/", - scanlator = null, - uploadDate = 1335906000000, - branch = null, - source = MangaSource.MANGATOWN, - ), - ), - ) + val manga: Manga + get() = loadAsset("manga/header.json", Manga::class) + + val mangaDetails: Manga + get() = loadAsset("manga/full.json", Manga::class) val tag = mangaDetails.tags.elementAt(2) val chapter = checkNotNull(mangaDetails.chapters)[2] - val favouriteCategory = FavouriteCategory( - id = 4, - title = "Read later", - sortKey = 1, - order = SortOrder.NEWEST, - createdAt = Date(1335906000000), - isTrackingEnabled = true, - ) + val favouriteCategory: FavouriteCategory + get() = loadAsset("categories/simple.json", FavouriteCategory::class) + + fun loadAsset(name: String, cls: KClass): T { + val assets = InstrumentationRegistry.getInstrumentation().context.assets + return assets.open(name).use { + moshi.adapter(cls.java).fromJson(it.source().buffer()) + } ?: throw RuntimeException("Cannot read asset from json \"$name\"") + } + + private class DateAdapter : JsonAdapter() { + + @FromJson + override fun fromJson(reader: JsonReader): Date? { + val ms = reader.nextLong() + return if (ms == 0L) { + null + } else { + Date(ms) + } + } + + @ToJson + override fun toJson(writer: JsonWriter, value: Date?) { + writer.value(value?.time ?: 0L) + } + } } \ No newline at end of file diff --git a/app/src/androidTest/java/org/koitharu/kotatsu/tracker/domain/TrackerTest.kt b/app/src/androidTest/java/org/koitharu/kotatsu/tracker/domain/TrackerTest.kt index 3b63f429e..7d829332d 100644 --- a/app/src/androidTest/java/org/koitharu/kotatsu/tracker/domain/TrackerTest.kt +++ b/app/src/androidTest/java/org/koitharu/kotatsu/tracker/domain/TrackerTest.kt @@ -1,29 +1,21 @@ package org.koitharu.kotatsu.tracker.domain import androidx.test.ext.junit.runners.AndroidJUnit4 -import androidx.test.platform.app.InstrumentationRegistry -import com.squareup.moshi.Moshi -import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory -import kotlin.test.assertEquals -import kotlin.test.assertFalse -import kotlin.test.assertTrue import kotlinx.coroutines.test.runTest -import okio.buffer -import okio.source import org.junit.Test import org.junit.runner.RunWith import org.koin.test.KoinTest import org.koin.test.inject +import org.koitharu.kotatsu.SampleData import org.koitharu.kotatsu.base.domain.MangaDataRepository -import org.koitharu.kotatsu.history.domain.HistoryRepository import org.koitharu.kotatsu.parsers.model.Manga +import kotlin.test.assertEquals +import kotlin.test.assertFalse +import kotlin.test.assertTrue @RunWith(AndroidJUnit4::class) class TrackerTest : KoinTest { - private val moshi = Moshi.Builder().add(KotlinJsonAdapterFactory()).build() - private val mangaAdapter = moshi.adapter(Manga::class.java) - private val historyRegistry by inject() private val repository by inject() private val dataRepository by inject() private val tracker by inject() @@ -178,10 +170,7 @@ class TrackerTest : KoinTest { } private suspend fun loadManga(name: String): Manga { - val assets = InstrumentationRegistry.getInstrumentation().context.assets - val manga = assets.open("manga/$name").use { - mangaAdapter.fromJson(it.source().buffer()) - } ?: throw RuntimeException("Cannot read manga from json \"$name\"") + val manga = SampleData.loadAsset("manga/$name", Manga::class) dataRepository.storeManga(manga) return manga }