From 99ef818a3cf31a697b86acedc2592cd54d5fc5a4 Mon Sep 17 00:00:00 2001 From: adammc331 Date: Fri, 25 Jan 2019 22:30:13 -0500 Subject: [PATCH] Unit tested the UserAgendaRepo for #138. --- Droidcon-Boston/app/build.gradle | 6 ++- .../data/UserAgendaRepoTest.kt | 37 +++++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 Droidcon-Boston/app/src/test/java/com/mentalmachines/droidcon_boston/data/UserAgendaRepoTest.kt diff --git a/Droidcon-Boston/app/build.gradle b/Droidcon-Boston/app/build.gradle index 9cbe0e4..a2bd804 100644 --- a/Droidcon-Boston/app/build.gradle +++ b/Droidcon-Boston/app/build.gradle @@ -18,6 +18,7 @@ android { versionCode 17 versionName "2.0.9" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + multiDexEnabled true vectorDrawables { useSupportLibrary = true @@ -97,8 +98,10 @@ dependencies { final flexibleAdapter = '5.0.1' final flexibleAdapterUi = '1.0.0-b3' final glide = '3.7.0' + final threeTen = '1.3.3' final threeTenAbp = '1.0.5' final recyclerRefreshLayout = '2.0.5' + final mockitoCore = '2.23.4' //endregion //region Dependencies @@ -107,7 +110,8 @@ dependencies { // TESTING testImplementation "junit:junit:$junit" - testImplementation "org.threeten:threetenbp:1.3.3" + testImplementation "org.threeten:threetenbp:$threeTen" + testImplementation "org.mockito:mockito-core:$mockitoCore" // Support implementation "androidx.appcompat:appcompat:$appCompat" diff --git a/Droidcon-Boston/app/src/test/java/com/mentalmachines/droidcon_boston/data/UserAgendaRepoTest.kt b/Droidcon-Boston/app/src/test/java/com/mentalmachines/droidcon_boston/data/UserAgendaRepoTest.kt new file mode 100644 index 0000000..7cd723a --- /dev/null +++ b/Droidcon-Boston/app/src/test/java/com/mentalmachines/droidcon_boston/data/UserAgendaRepoTest.kt @@ -0,0 +1,37 @@ +package com.mentalmachines.droidcon_boston.data + +import android.content.Context +import android.content.SharedPreferences +import org.junit.Assert.* +import org.junit.Before +import org.junit.Test +import org.mockito.ArgumentMatchers.* +import org.mockito.Mockito.`when` +import org.mockito.Mockito.mock + +class UserAgendaRepoTest { + private val mockSharedPrefs = mock(SharedPreferences::class.java) + private val mockEditor = mock(SharedPreferences.Editor::class.java) + private val mockContext = mock(Context::class.java) + private lateinit var userAgendaRepo: UserAgendaRepo + + @Before + fun setup() { + `when`(mockContext.getSharedPreferences(anyString(), anyInt())).thenReturn(mockSharedPrefs) + `when`(mockSharedPrefs.edit()).thenReturn(mockEditor) + `when`(mockEditor.putStringSet(anyString(), any())).thenReturn(mockEditor) + userAgendaRepo = UserAgendaRepo.getInstance(mockContext) + } + + @Test + fun testBookmarkAndRemove() { + val sessionId = "Session ID" + assertFalse(userAgendaRepo.isSessionBookmarked(sessionId)) + + userAgendaRepo.bookmarkSession(sessionId, true) + assertTrue(userAgendaRepo.isSessionBookmarked(sessionId)) + + userAgendaRepo.bookmarkSession(sessionId, false) + assertFalse(userAgendaRepo.isSessionBookmarked(sessionId)) + } +} \ No newline at end of file