lobsters-api: remove

Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
This commit is contained in:
Harsh Shandilya 2020-11-08 16:14:48 +05:30
parent 05b5ecaa5f
commit b71bb9e48d
No known key found for this signature in database
GPG key ID: 366D7BBAD1031E80
11 changed files with 1 additions and 118 deletions

1
.idea/gradle.xml generated
View file

@ -13,7 +13,6 @@
<option value="$PROJECT_DIR$" />
<option value="$PROJECT_DIR$/app" />
<option value="$PROJECT_DIR$/buildSrc" />
<option value="$PROJECT_DIR$/lobsters-api" />
<option value="$PROJECT_DIR$/model" />
</set>
</option>

View file

@ -65,7 +65,6 @@ dependencies {
kapt(Dependencies.AndroidX.Hilt.daggerHiltCompiler)
kapt(Dependencies.AndroidX.Room.compiler)
kapt(Dependencies.ThirdParty.Roomigrant.compiler)
implementation(project(":lobsters-api"))
implementation(project(":model"))
implementation(Dependencies.AndroidX.activityKtx)
implementation(Dependencies.AndroidX.appCompat)

View file

@ -1 +0,0 @@
/build

View file

@ -1,16 +0,0 @@
plugins {
id("com.android.library")
kotlin("android")
kotlin("plugin.serialization") version "1.4.10"
`lobsters-plugin`
}
dependencies {
implementation(project(":model"))
implementation(Dependencies.Kotlin.Serialization.json)
implementation(Dependencies.ThirdParty.Retrofit.lib)
implementation(Dependencies.ThirdParty.retrofitSerialization)
testImplementation(Dependencies.Testing.junit)
testImplementation(Dependencies.Kotlin.Coroutines.core)
testImplementation(Dependencies.Testing.mockWebServer)
}

View file

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest package="dev.msfjarvis.lobsters.api" />

View file

@ -1,16 +0,0 @@
package dev.msfjarvis.lobsters.api
import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory
import kotlinx.serialization.json.Json
import okhttp3.MediaType
import retrofit2.Retrofit
object ApiClient {
inline fun <reified T> getClient(baseUrl: String): T {
return Retrofit.Builder()
.baseUrl(baseUrl)
.addConverterFactory(Json.asConverterFactory(MediaType.get("application/json")))
.build()
.create(T::class.java)
}
}

View file

@ -1,10 +0,0 @@
package dev.msfjarvis.lobsters.api
import dev.msfjarvis.lobsters.model.LobstersPost
import retrofit2.http.GET
import retrofit2.http.Query
interface LobstersApi {
@GET("hottest.json")
suspend fun getHottestPosts(@Query("page") page: Int): List<LobstersPost>
}

View file

@ -1,57 +0,0 @@
package dev.msfjarvis.lobsters.api
import kotlinx.coroutines.runBlocking
import okhttp3.mockwebserver.Dispatcher
import okhttp3.mockwebserver.MockResponse
import okhttp3.mockwebserver.MockWebServer
import okhttp3.mockwebserver.RecordedRequest
import org.junit.After
import org.junit.Assert.assertEquals
import org.junit.Assert.assertTrue
import org.junit.Before
import org.junit.Test
class LobstersApiTest {
private val webServer = MockWebServer()
private val apiData = TestUtils.getJson("hottest.json")
private val apiClient = ApiClient.getClient<LobstersApi>("http://localhost:8080")
@Before
fun setUp() {
webServer.start(8080)
webServer.dispatcher = object : Dispatcher() {
override fun dispatch(request: RecordedRequest): MockResponse {
return MockResponse().setBody(apiData).setResponseCode(200)
}
}
}
@Test
fun `api gets correct number of items`() = runBlocking {
val posts = apiClient.getHottestPosts(1)
assertEquals(25, posts.size)
}
@Test
fun `no moderator posts in test data`() = runBlocking {
val posts = apiClient.getHottestPosts(1)
val moderatorPosts = posts.asSequence()
.filter { it.submitterUser.isModerator }
.toSet()
assertTrue(moderatorPosts.isEmpty())
}
@Test
fun `posts with no urls`() = runBlocking {
val posts = apiClient.getHottestPosts(1)
val commentsOnlyPosts = posts.asSequence()
.filter { it.url.isEmpty() }
.toSet()
assertEquals(2, commentsOnlyPosts.size)
}
@After
fun tearDown() {
webServer.shutdown()
}
}

View file

@ -1,12 +0,0 @@
package dev.msfjarvis.lobsters.api
import java.io.File
object TestUtils {
fun getJson(path: String): String {
// Load the JSON response
val uri = javaClass.classLoader.getResource(path)
val file = File(uri.path)
return String(file.readBytes())
}
}

File diff suppressed because one or more lines are too long

View file

@ -1,3 +1,3 @@
rootProject.name = "lobste.rs"
include(":app", ":lobsters-api", ":model")
include(":app", ":model")
enableFeaturePreview("GRADLE_METADATA")