mirror of
https://github.com/hmalik144/Android-developer-tech-test---POQ.git
synced 2026-03-17 23:25:53 +00:00
MVVM implementation
This commit is contained in:
@@ -37,8 +37,10 @@ dependencies {
|
|||||||
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
|
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
|
||||||
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.1.0'
|
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.1.0'
|
||||||
testImplementation 'junit:junit:4.12'
|
testImplementation 'junit:junit:4.12'
|
||||||
androidTestImplementation 'androidx.test:runner:1.2.0'
|
androidTestImplementation 'androidx.test.ext:junit:1.1.0'
|
||||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
|
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
|
||||||
|
androidTestImplementation 'androidx.test:rules:1.1.0'
|
||||||
|
androidTestImplementation 'org.hamcrest:hamcrest-library:1.3'
|
||||||
|
|
||||||
//Retrofit and GSON
|
//Retrofit and GSON
|
||||||
implementation 'com.squareup.retrofit2:retrofit:2.6.0'
|
implementation 'com.squareup.retrofit2:retrofit:2.6.0'
|
||||||
|
|||||||
@@ -1,26 +0,0 @@
|
|||||||
package com.example.h_mal.myapplication
|
|
||||||
|
|
||||||
import android.support.test.InstrumentationRegistry
|
|
||||||
import android.support.test.runner.AndroidJUnit4
|
|
||||||
|
|
||||||
import org.junit.Test
|
|
||||||
import org.junit.runner.RunWith
|
|
||||||
|
|
||||||
import org.junit.Assert.*
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Instrumented test, which will execute on an Android device.
|
|
||||||
*
|
|
||||||
* See [testing documentation](http://d.android.com/tools/testing).
|
|
||||||
*/
|
|
||||||
@RunWith(AndroidJUnit4::class)
|
|
||||||
class ExampleInstrumentedTest {
|
|
||||||
@Test
|
|
||||||
fun useAppContext() {
|
|
||||||
// Context of the app under test.
|
|
||||||
val appContext = InstrumentationRegistry.getTargetContext()
|
|
||||||
assertEquals("com.example.h_mal.myapplication", appContext.packageName)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -2,13 +2,73 @@ package com.example.h_mal.myapplication.ui
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import androidx.lifecycle.Observer
|
||||||
|
import androidx.test.core.app.ApplicationProvider
|
||||||
import androidx.test.filters.LargeTest
|
import androidx.test.filters.LargeTest
|
||||||
import androidx.test.runner.AndroidJUnit4
|
import androidx.test.runner.AndroidJUnit4
|
||||||
|
import com.example.h_mal.myapplication.db.AppDatabase
|
||||||
|
import com.example.h_mal.myapplication.db.RepoDao
|
||||||
|
import com.example.h_mal.myapplication.model.Repo
|
||||||
|
import junit.framework.Assert.assertEquals
|
||||||
|
import junit.framework.Assert.assertSame
|
||||||
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
import kotlinx.coroutines.GlobalScope
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
|
import kotlinx.coroutines.runBlocking
|
||||||
|
import org.junit.After
|
||||||
|
import org.junit.Before
|
||||||
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
|
import java.io.IOException
|
||||||
|
|
||||||
@LargeTest
|
|
||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
class MainActivityTest {
|
class ExampleInstrumentedTest {
|
||||||
|
|
||||||
|
private lateinit var repoDao: RepoDao
|
||||||
|
private lateinit var db: AppDatabase
|
||||||
|
private lateinit var context: Context
|
||||||
|
|
||||||
|
@Before
|
||||||
|
fun createDb() {
|
||||||
|
context = ApplicationProvider.getApplicationContext<Context>()
|
||||||
|
db = AppDatabase.invoke(context)
|
||||||
|
repoDao = db.getRepoDao()
|
||||||
|
}
|
||||||
|
|
||||||
|
@After
|
||||||
|
@Throws(IOException::class)
|
||||||
|
fun closeDb() {
|
||||||
|
db.clearAllTables()
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Throws(Exception::class)
|
||||||
|
fun addAndUpdateEntries() {
|
||||||
|
|
||||||
|
val item1 = Repo(
|
||||||
|
274562,
|
||||||
|
"yajl-objc",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
""
|
||||||
|
)
|
||||||
|
val item2 = Repo(
|
||||||
|
274563,
|
||||||
|
"simplerrd",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
""
|
||||||
|
)
|
||||||
|
|
||||||
|
val list: List<Repo> = mutableListOf(item1,item2).toList()
|
||||||
|
|
||||||
|
val long = runBlocking { repoDao.saveAllRepos(list) }
|
||||||
|
|
||||||
|
assertEquals(long.size, 2)
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,35 +1,46 @@
|
|||||||
package com.example.h_mal.myapplication
|
package com.example.h_mal.myapplication.ui
|
||||||
|
|
||||||
|
|
||||||
import android.support.test.espresso.Espresso
|
|
||||||
import android.support.test.espresso.Espresso.onView
|
|
||||||
import android.support.test.espresso.assertion.ViewAssertions.matches
|
|
||||||
import android.support.test.espresso.matcher.ViewMatchers.*
|
|
||||||
import android.support.test.filters.LargeTest
|
|
||||||
import android.support.test.rule.ActivityTestRule
|
|
||||||
import android.support.test.runner.AndroidJUnit4
|
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import com.example.h_mal.myapplication.ui.MainActivity
|
import androidx.test.espresso.Espresso.onData
|
||||||
|
import androidx.test.espresso.action.ViewActions.click
|
||||||
|
import androidx.test.espresso.matcher.ViewMatchers.withId
|
||||||
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
|
import androidx.test.filters.LargeTest
|
||||||
|
import androidx.test.rule.ActivityTestRule
|
||||||
|
import com.example.h_mal.myapplication.R
|
||||||
import org.hamcrest.Description
|
import org.hamcrest.Description
|
||||||
import org.hamcrest.Matcher
|
import org.hamcrest.Matcher
|
||||||
import org.hamcrest.Matchers.allOf
|
import org.hamcrest.Matchers.allOf
|
||||||
|
import org.hamcrest.Matchers.anything
|
||||||
import org.hamcrest.TypeSafeMatcher
|
import org.hamcrest.TypeSafeMatcher
|
||||||
import org.junit.Rule
|
import org.junit.Rule
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
|
|
||||||
@LargeTest
|
|
||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
class MainActivityTest {
|
class UiTest {
|
||||||
|
|
||||||
@Rule
|
@Rule
|
||||||
@JvmField
|
@JvmField
|
||||||
var mActivityTestRule = ActivityTestRule(MainActivity::class.java)
|
var mActivityTestRule = ActivityTestRule(MainActivity::class.java)
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun mainActivityTest() {
|
fun uiTest() {
|
||||||
|
val frameLayout = onData(anything())
|
||||||
|
.inAdapterView(
|
||||||
|
allOf(
|
||||||
|
withId(R.id.list_view),
|
||||||
|
childAtPosition(
|
||||||
|
withId(R.id.swipe_refresh),
|
||||||
|
0
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
.atPosition(0)
|
||||||
|
frameLayout.perform(click())
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun childAtPosition(
|
private fun childAtPosition(
|
||||||
@@ -11,7 +11,7 @@ import com.example.h_mal.myapplication.model.Repo
|
|||||||
interface RepoDao {
|
interface RepoDao {
|
||||||
|
|
||||||
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
||||||
fun saveAllRepos(repos : List<Repo>)
|
fun saveAllRepos(repos : List<Repo>) : List<Long>
|
||||||
|
|
||||||
@Query("SELECT * FROM Repo")
|
@Query("SELECT * FROM Repo")
|
||||||
fun getRepos() : LiveData<List<Repo>>
|
fun getRepos() : LiveData<List<Repo>>
|
||||||
|
|||||||
Reference in New Issue
Block a user