Skip to content

Instantly share code, notes, and snippets.

View canergulgec's full-sized avatar

Caner Gülgeç canergulgec

View GitHub Profile
//UI Test
androidTestImplementation "androidx.test:core-ktx:$test_core"
androidTestImplementation "androidx.test.ext:junit-ktx:$test_ext"
androidTestImplementation "androidx.test:rules:$test_rules"
androidTestImplementation "androidx.test:runner:$test_runner"
androidTestImplementation "androidx.test.espresso:espresso-core:$espresso"
androidTestImplementation "androidx.test.espresso:espresso-contrib:$espresso"
//Kakao
androidTestImplementation "com.agoda.kakao:kakao:$kakao"
@HiltAndroidApp
open class MovieDbApp : Application() {
open fun getBaseUrl() = BuildConfig.BASE_URL
}
@InstallIn(SingletonComponent::class)
@Module
class RetrofitModule {
@Provides
@Named("BASE_URL")
fun provideBaseUrl(@ApplicationContext appContext: Context): String {
return (appContext as MovieDbApp).getBaseUrl()
}
class MovieTestRunner : AndroidJUnitRunner() {
override fun newApplication(cl: ClassLoader?, className: String?,
context: Context?): Application {
return super.newApplication(cl, MovieTestApp::class.java.name, context)
}
}
{
"results": [
{
"adult": false,
"backdrop_path": "/srYya1ZlI97Au4jUYAktDe3avyA.jpg",
"genre_ids": [
14,
28,
12
],
object FileReader {
fun readTestResourceFile(fileName: String): String {
try {
val inputStream = (InstrumentationRegistry.getInstrumentation().targetContext
.applicationContext as MovieTestApp).assets.open(fileName)
val builder = StringBuilder()
val reader = InputStreamReader(inputStream, "UTF-8")
reader.readLines().forEach {
builder.append(it)
}
object OkHttpProvider {
// Timeout for the network requests
private const val REQUEST_TIMEOUT = 3L
private var okHttpClient: OkHttpClient? = null
fun getOkHttpClient(): OkHttpClient {
return if (okHttpClient == null) {
val okHttpClient = OkHttpClient.Builder()
@Test
fun recyclerview_second_item_should_be_visible() {
mockWebServer.dispatcher = object : Dispatcher() {
override fun dispatch(request: RecordedRequest): MockResponse {
return MockResponse()
.setResponseCode(200)
.setBody(FileReader.readTestResourceFile("success_response.json"))
}
}
}
fun dispatcherWithCustomBody() = object : Dispatcher() {
override fun dispatch(request: RecordedRequest): MockResponse {
with(request.path) {
val response = MockResponse().setResponseCode(200)
return when {
this?.contains("/images") == true -> response
.setBody(FileReader.readTestResourceFile("movie_images_response.json"))
else -> response
.setBody(FileReader.readTestResourceFile("success_response.json"))
}
class MovieScreen : Screen<MovieScreen>() {
val recycler = KRecyclerView({ withId(R.id.moviesRv) }, itemTypeBuilder = {
itemType(MovieScreen::Item)
})
class Item(parent: Matcher<View>) : KRecyclerItem<Item>(parent) {
val image: KImageView = KImageView(parent) { withId(R.id.movieIv) }
val name: KTextView = KTextView(parent) { withId(R.id.movieName) }
val rating: KRatingBar = KRatingBar(parent) { withId(R.id.movieRatingBar) }
}