mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-26 20:33:53 +01:00
Add more tests for Quiz (#4411)
This commit is contained in:
parent
c7f7b39151
commit
48f2bb8863
4 changed files with 300 additions and 19 deletions
|
|
@ -4,6 +4,8 @@ import android.content.Context
|
|||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.widget.RadioButton
|
||||
import com.facebook.drawee.backends.pipeline.Fresco
|
||||
import com.facebook.soloader.SoLoader
|
||||
import fr.free.nrw.commons.R
|
||||
import fr.free.nrw.commons.TestCommonsApplication
|
||||
import org.junit.Assert
|
||||
|
|
@ -17,49 +19,40 @@ import org.powermock.api.mockito.PowerMockito.mock
|
|||
import org.powermock.reflect.Whitebox
|
||||
import org.robolectric.Robolectric
|
||||
import org.robolectric.RobolectricTestRunner
|
||||
import org.robolectric.RuntimeEnvironment
|
||||
import org.robolectric.annotation.Config
|
||||
import org.robolectric.annotation.LooperMode
|
||||
|
||||
|
||||
@RunWith(RobolectricTestRunner::class)
|
||||
@Config(sdk = [21], application = TestCommonsApplication::class)
|
||||
@LooperMode(LooperMode.Mode.PAUSED)
|
||||
class QuizActivityUnitTest {
|
||||
|
||||
private val SAMPLE_ALERT_TITLE_VALUE = "Title"
|
||||
private val SAMPLE_ALERT_MESSAGE_VALUE = "Message"
|
||||
|
||||
private lateinit var activity: QuizActivity
|
||||
private lateinit var positiveAnswer: RadioButton
|
||||
private lateinit var negativeAnswer: RadioButton
|
||||
private lateinit var view: View
|
||||
|
||||
private val SAMPLE_ALERT_TITLE_VALUE = "Title"
|
||||
private val SAMPLE_ALERT_MESSAGE_VALUE = "Message"
|
||||
private lateinit var context: Context
|
||||
|
||||
@Mock
|
||||
private lateinit var quizController: QuizController
|
||||
|
||||
@Mock
|
||||
private lateinit var context: Context
|
||||
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
MockitoAnnotations.initMocks(this)
|
||||
activity = Robolectric.buildActivity(QuizActivity::class.java).get()
|
||||
|
||||
SoLoader.setInTestMode()
|
||||
Fresco.initialize(RuntimeEnvironment.application.applicationContext)
|
||||
activity = Robolectric.buildActivity(QuizActivity::class.java).create().get()
|
||||
context = mock(Context::class.java)
|
||||
|
||||
view = LayoutInflater.from(activity)
|
||||
.inflate(R.layout.answer_layout, null) as View
|
||||
|
||||
Mockito.`when`(context.getString(Mockito.any(Int::class.java)))
|
||||
.thenReturn("")
|
||||
quizController = QuizController()
|
||||
|
||||
quizController.initialize(context)
|
||||
|
||||
positiveAnswer = view.findViewById(R.id.quiz_positive_answer)
|
||||
negativeAnswer = view.findViewById(R.id.quiz_negative_answer)
|
||||
|
||||
activity.positiveAnswer = positiveAnswer
|
||||
activity.negativeAnswer = negativeAnswer
|
||||
}
|
||||
|
|
@ -72,9 +65,16 @@ class QuizActivityUnitTest {
|
|||
Assert.assertNotNull(negativeAnswer)
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testSetNextQuestionCaseDefault() {
|
||||
activity.setNextQuestion()
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testSetNextQuestion() {
|
||||
activity.negativeAnswer.isChecked = true
|
||||
activity.setNextQuestion()
|
||||
}
|
||||
|
||||
|
|
@ -87,10 +87,8 @@ class QuizActivityUnitTest {
|
|||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testEvaluateScore() {
|
||||
|
||||
Whitebox.setInternalState(activity, "quiz", quizController.getQuiz())
|
||||
Whitebox.setInternalState(activity, "questionIndex", 0)
|
||||
|
||||
activity.evaluateScore()
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,137 @@
|
|||
package fr.free.nrw.commons.quiz
|
||||
|
||||
import android.app.Activity
|
||||
import com.facebook.drawee.backends.pipeline.Fresco
|
||||
import com.facebook.soloader.SoLoader
|
||||
import com.nhaarman.mockitokotlin2.any
|
||||
import fr.free.nrw.commons.TestCommonsApplication
|
||||
import fr.free.nrw.commons.auth.SessionManager
|
||||
import fr.free.nrw.commons.kvstore.JsonKvStore
|
||||
import fr.free.nrw.commons.mwapi.OkHttpJsonApiClient
|
||||
import fr.free.nrw.commons.profile.achievements.FeedbackResponse
|
||||
import io.reactivex.Single
|
||||
import org.junit.Assert
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mockito.Mock
|
||||
import org.mockito.Mockito
|
||||
import org.mockito.MockitoAnnotations
|
||||
import org.powermock.reflect.Whitebox
|
||||
import org.robolectric.Robolectric
|
||||
import org.robolectric.RobolectricTestRunner
|
||||
import org.robolectric.RuntimeEnvironment
|
||||
import org.robolectric.annotation.Config
|
||||
import java.lang.reflect.Method
|
||||
|
||||
@RunWith(RobolectricTestRunner::class)
|
||||
@Config(sdk = [21], application = TestCommonsApplication::class)
|
||||
class QuizCheckerUnitTest {
|
||||
|
||||
private lateinit var quizChecker: QuizChecker
|
||||
private lateinit var activity: Activity
|
||||
|
||||
@Mock
|
||||
private lateinit var sessionManager: SessionManager
|
||||
|
||||
@Mock
|
||||
private lateinit var okHttpJsonApiClient: OkHttpJsonApiClient
|
||||
|
||||
@Mock
|
||||
private lateinit var jsonKvStore: JsonKvStore
|
||||
|
||||
@Mock
|
||||
private lateinit var feedbackResponse: FeedbackResponse
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
MockitoAnnotations.initMocks(this)
|
||||
SoLoader.setInTestMode()
|
||||
Fresco.initialize(RuntimeEnvironment.application.applicationContext)
|
||||
activity = Robolectric.buildActivity(QuizActivity::class.java).create().get()
|
||||
quizChecker = QuizChecker(sessionManager, okHttpJsonApiClient, jsonKvStore)
|
||||
Mockito.`when`(sessionManager.userName).thenReturn("")
|
||||
Mockito.`when`(okHttpJsonApiClient.getUploadCount(any())).thenReturn(Single.just(0))
|
||||
Mockito.`when`(okHttpJsonApiClient.getAchievements(any()))
|
||||
.thenReturn(Single.just(feedbackResponse))
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun checkNotNull() {
|
||||
Assert.assertNotNull(quizChecker)
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testInitQuizCheck() {
|
||||
quizChecker.initQuizCheck(activity)
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testCleanUp() {
|
||||
quizChecker.cleanup()
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testSetTotalUploadCount() {
|
||||
val method: Method = QuizChecker::class.java.getDeclaredMethod(
|
||||
"setTotalUploadCount",
|
||||
Int::class.java
|
||||
)
|
||||
method.isAccessible = true
|
||||
method.invoke(quizChecker, -1)
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testSetRevertParameter() {
|
||||
val method: Method = QuizChecker::class.java.getDeclaredMethod(
|
||||
"setRevertParameter",
|
||||
Int::class.java
|
||||
)
|
||||
method.isAccessible = true
|
||||
method.invoke(quizChecker, -1)
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testCalculateRevertParameterAndShowQuiz() {
|
||||
Whitebox.setInternalState(quizChecker, "revertCount", -1)
|
||||
val method: Method = QuizChecker::class.java.getDeclaredMethod(
|
||||
"calculateRevertParameterAndShowQuiz",
|
||||
Activity::class.java
|
||||
)
|
||||
method.isAccessible = true
|
||||
method.invoke(quizChecker, activity)
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testCalculateRevertParameterAndShowQuizCaseDefault() {
|
||||
Whitebox.setInternalState(quizChecker, "isRevertCountFetched", true)
|
||||
Whitebox.setInternalState(quizChecker, "isUploadCountFetched", true)
|
||||
Whitebox.setInternalState(quizChecker, "totalUploadCount", 5)
|
||||
Whitebox.setInternalState(quizChecker, "revertCount", 5)
|
||||
val method: Method = QuizChecker::class.java.getDeclaredMethod(
|
||||
"calculateRevertParameterAndShowQuiz",
|
||||
Activity::class.java
|
||||
)
|
||||
method.isAccessible = true
|
||||
method.invoke(quizChecker, activity)
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testStartQuizActivity() {
|
||||
val method: Method = QuizChecker::class.java.getDeclaredMethod(
|
||||
"startQuizActivity",
|
||||
Activity::class.java
|
||||
)
|
||||
method.isAccessible = true
|
||||
method.invoke(quizChecker, activity)
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,88 @@
|
|||
package fr.free.nrw.commons.quiz
|
||||
|
||||
import android.content.Intent
|
||||
import android.graphics.Bitmap
|
||||
import fr.free.nrw.commons.TestCommonsApplication
|
||||
import org.junit.Assert
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mockito.Mock
|
||||
import org.mockito.Mockito
|
||||
import org.mockito.MockitoAnnotations
|
||||
import org.powermock.api.mockito.PowerMockito
|
||||
import org.robolectric.Robolectric
|
||||
import org.robolectric.RobolectricTestRunner
|
||||
import org.robolectric.annotation.Config
|
||||
import org.robolectric.fakes.RoboMenu
|
||||
|
||||
@RunWith(RobolectricTestRunner::class)
|
||||
@Config(sdk = [21], application = TestCommonsApplication::class)
|
||||
class QuizResultActivityUnitTest {
|
||||
|
||||
private lateinit var activity: QuizResultActivity
|
||||
private lateinit var quizResultActivity: QuizResultActivity
|
||||
private lateinit var menu: RoboMenu
|
||||
|
||||
@Mock
|
||||
private lateinit var bitmap: Bitmap
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
MockitoAnnotations.initMocks(this)
|
||||
val intent = Intent().putExtra("QuizResult", 0)
|
||||
activity = Robolectric.buildActivity(QuizResultActivity::class.java, intent).get()
|
||||
quizResultActivity = PowerMockito.mock(QuizResultActivity::class.java)
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun checkActivityNotNull() {
|
||||
Assert.assertNotNull(activity)
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testOnCreateCaseDefault() {
|
||||
activity.onCreate(null)
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testOnCreate() {
|
||||
Mockito.`when`(quizResultActivity.intent).thenReturn(null)
|
||||
activity.onCreate(null)
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun testLaunchContributionActivity() {
|
||||
activity.launchContributionActivity()
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun tesOnBackPressed() {
|
||||
activity.onBackPressed()
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun tesOnCreateOptionsMenu() {
|
||||
menu = RoboMenu()
|
||||
activity.onCreateOptionsMenu(menu)
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun tesShowAlert() {
|
||||
activity.showAlert(bitmap)
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun tesShareScreen() {
|
||||
activity.shareScreen(bitmap)
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
package fr.free.nrw.commons.quiz
|
||||
|
||||
import android.app.Activity
|
||||
import android.view.View
|
||||
import android.widget.CompoundButton
|
||||
import android.widget.RadioButton
|
||||
import org.junit.Assert
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.mockito.Mock
|
||||
import org.mockito.Mockito.`when`
|
||||
import org.mockito.Mockito.anyInt
|
||||
import org.mockito.MockitoAnnotations
|
||||
|
||||
class RadioGroupHelperUnitTest {
|
||||
|
||||
private lateinit var radioGroupHelper: RadioGroupHelper
|
||||
|
||||
@Mock
|
||||
private lateinit var radioButton: RadioButton
|
||||
|
||||
@Mock
|
||||
private lateinit var radioButton1: RadioButton
|
||||
|
||||
@Mock
|
||||
private lateinit var activity: Activity
|
||||
|
||||
@Mock
|
||||
private lateinit var view: View
|
||||
|
||||
@Mock
|
||||
private lateinit var compoundButton: CompoundButton
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
MockitoAnnotations.initMocks(this)
|
||||
radioGroupHelper = RadioGroupHelper()
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun checkNotNull() {
|
||||
Assert.assertNotNull(radioGroupHelper)
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun constructor1() {
|
||||
radioGroupHelper = RadioGroupHelper(radioButton, radioButton1)
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(Exception::class)
|
||||
fun constructor2() {
|
||||
radioGroupHelper = RadioGroupHelper(activity)
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue