Update test data
This commit is contained in:
8
app/src/androidTest/assets/categories/simple.json
Normal file
8
app/src/androidTest/assets/categories/simple.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"id": 4,
|
||||
"title": "Read later",
|
||||
"sortKey": 1,
|
||||
"order": "NEWEST",
|
||||
"createdAt": 1335906000000,
|
||||
"isTrackingEnabled": true
|
||||
}
|
||||
35
app/src/androidTest/assets/manga/header.json
Normal file
35
app/src/androidTest/assets/manga/header.json
Normal file
@@ -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"
|
||||
}
|
||||
@@ -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 <T : Any> loadAsset(name: String, cls: KClass<T>): 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<Date>() {
|
||||
|
||||
@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)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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<HistoryRepository>()
|
||||
private val repository by inject<TrackingRepository>()
|
||||
private val dataRepository by inject<MangaDataRepository>()
|
||||
private val tracker by inject<Tracker>()
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user