From 7d677833fa955eb5046d517f401d4578d7774257 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Sun, 2 Feb 2020 15:27:22 +0200 Subject: [PATCH] SelfManga parser --- .../kotatsu/core/model/MangaSource.kt | 5 +- .../core/parser/site/SelfMangaRepository.kt | 10 +++ .../koitharu/kotatsu/ui/main/MainActivity.kt | 2 +- .../parsers/RepositoryTestEnvironment.kt | 2 +- .../parsers/repository/SelfMangaTest.kt | 66 +++++++++++++++++++ 5 files changed, 82 insertions(+), 3 deletions(-) create mode 100644 app/src/main/java/org/koitharu/kotatsu/core/parser/site/SelfMangaRepository.kt create mode 100644 app/src/test/java/org/koitharu/kotatsu/parsers/repository/SelfMangaTest.kt diff --git a/app/src/main/java/org/koitharu/kotatsu/core/model/MangaSource.kt b/app/src/main/java/org/koitharu/kotatsu/core/model/MangaSource.kt index ea4e216b0..d61423e4a 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/model/MangaSource.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/model/MangaSource.kt @@ -5,9 +5,12 @@ import kotlinx.android.parcel.Parcelize import org.koitharu.kotatsu.core.parser.MangaRepository import org.koitharu.kotatsu.core.parser.site.MintMangaRepository import org.koitharu.kotatsu.core.parser.site.ReadmangaRepository +import org.koitharu.kotatsu.core.parser.site.SelfMangaRepository +@Suppress("SpellCheckingInspection") @Parcelize enum class MangaSource(val title: String, val cls: Class): Parcelable { READMANGA_RU("ReadManga", ReadmangaRepository::class.java), - MINTMANGA("MintManga", MintMangaRepository::class.java) + MINTMANGA("MintManga", MintMangaRepository::class.java), + SELFMANGA("SelfManga", SelfMangaRepository::class.java) } \ No newline at end of file diff --git a/app/src/main/java/org/koitharu/kotatsu/core/parser/site/SelfMangaRepository.kt b/app/src/main/java/org/koitharu/kotatsu/core/parser/site/SelfMangaRepository.kt new file mode 100644 index 000000000..fa63665aa --- /dev/null +++ b/app/src/main/java/org/koitharu/kotatsu/core/parser/site/SelfMangaRepository.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.core.parser.site + +import org.koitharu.kotatsu.core.model.MangaSource +import org.koitharu.kotatsu.domain.MangaLoaderContext + +class SelfMangaRepository(loaderContext: MangaLoaderContext) : + GroupleRepository(MangaSource.SELFMANGA, loaderContext) { + + override val domain: String = "selfmanga.ru" +} \ No newline at end of file diff --git a/app/src/main/java/org/koitharu/kotatsu/ui/main/MainActivity.kt b/app/src/main/java/org/koitharu/kotatsu/ui/main/MainActivity.kt index dc3471926..da07b373e 100644 --- a/app/src/main/java/org/koitharu/kotatsu/ui/main/MainActivity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/ui/main/MainActivity.kt @@ -30,7 +30,7 @@ class MainActivity : BaseActivity(), NavigationView.OnNavigationItemSelectedList navigationView.setNavigationItemSelectedListener(this) if (!supportFragmentManager.isStateSaved) { - setPrimaryFragment(RemoteListFragment.newInstance(MangaSource.READMANGA_RU)) + navigationView.setCheckedItem(R.id.nav_history) } } diff --git a/app/src/test/java/org/koitharu/kotatsu/parsers/RepositoryTestEnvironment.kt b/app/src/test/java/org/koitharu/kotatsu/parsers/RepositoryTestEnvironment.kt index 10f5d995c..99ddf5fc3 100644 --- a/app/src/test/java/org/koitharu/kotatsu/parsers/RepositoryTestEnvironment.kt +++ b/app/src/test/java/org/koitharu/kotatsu/parsers/RepositoryTestEnvironment.kt @@ -35,7 +35,7 @@ abstract class RepositoryTestEnvironment { fun getMangaList() = runBlocking { repository.getList(2) } - fun getMangaItem() = runBlocking { repository.getDetails(repository.getList(4).last()) } + fun getMangaItem() = runBlocking { repository.getDetails(repository.getList(5).last()) } fun getTags() = runBlocking { repository.getTags() } } \ No newline at end of file diff --git a/app/src/test/java/org/koitharu/kotatsu/parsers/repository/SelfMangaTest.kt b/app/src/test/java/org/koitharu/kotatsu/parsers/repository/SelfMangaTest.kt new file mode 100644 index 000000000..d9d55beeb --- /dev/null +++ b/app/src/test/java/org/koitharu/kotatsu/parsers/repository/SelfMangaTest.kt @@ -0,0 +1,66 @@ +package org.koitharu.kotatsu.parsers.repository + +import kotlinx.coroutines.runBlocking +import org.junit.Assert +import org.junit.BeforeClass +import org.junit.Test +import org.junit.runner.RunWith +import org.koitharu.kotatsu.core.model.MangaSource +import org.koitharu.kotatsu.parsers.MangaParserTest +import org.koitharu.kotatsu.parsers.RepositoryTestEnvironment +import org.koitharu.kotatsu.utils.TestUtil +import org.mockito.junit.MockitoJUnitRunner + +@RunWith(MockitoJUnitRunner::class) +class SelfMangaTest : MangaParserTest { + + @Test + override fun testMangaList() { + val list = getMangaList() + Assert.assertTrue(list.size == 70) + val item = list[40] + Assert.assertTrue(item.title.isNotEmpty()) + Assert.assertTrue(item.rating in 0f..1f) + TestUtil.assertValidUrl(item.url) + TestUtil.assertValidUrl(item.coverUrl) + Assert.assertEquals(item.source, MangaSource.SELFMANGA) + } + + @Test + override fun testMangaDetails() { + val manga = getMangaItem() + Assert.assertNotNull(manga.largeCoverUrl) + TestUtil.assertValidUrl(manga.largeCoverUrl!!) + Assert.assertNotNull(manga.chapters) + val chapter = manga.chapters!!.last() + Assert.assertEquals(chapter.source, MangaSource.SELFMANGA) + TestUtil.assertValidUrl(chapter.url) + } + + @Test + override fun testMangaPages() { + val chapter = getMangaItem().chapters!!.first() + val pages = runBlocking { repository.getPages(chapter) } + Assert.assertFalse(pages.isEmpty()) + Assert.assertEquals(pages.first().source, MangaSource.SELFMANGA) + TestUtil.assertValidUrl(runBlocking { repository.getPageFullUrl(pages.first()) }) + TestUtil.assertValidUrl(runBlocking { repository.getPageFullUrl(pages.last()) }) + } + + @Test + override fun testTags() { + val tags = getTags() + Assert.assertFalse(tags.isEmpty()) + val tag = tags.first() + Assert.assertFalse(tag.title.isBlank()) + Assert.assertEquals(tag.source, MangaSource.SELFMANGA) + TestUtil.assertValidUrl("https://selfmanga.ru/list/genre/${tag.key}") + } + + companion object : RepositoryTestEnvironment() { + + @JvmStatic + @BeforeClass + fun setUp() = initialize(MangaSource.SELFMANGA) + } +} \ No newline at end of file