diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
index 7bfdc60b8..eb4efba71 100644
--- a/.idea/codeStyles/Project.xml
+++ b/.idea/codeStyles/Project.xml
@@ -164,7 +164,6 @@
-
diff --git a/app/src/main/java/io/github/wulkanowy/data/repositories/SessionRepository.kt b/app/src/main/java/io/github/wulkanowy/data/repositories/SessionRepository.kt
index 93c8e2b70..4280fcae4 100644
--- a/app/src/main/java/io/github/wulkanowy/data/repositories/SessionRepository.kt
+++ b/app/src/main/java/io/github/wulkanowy/data/repositories/SessionRepository.kt
@@ -61,8 +61,4 @@ class SessionRepository @Inject constructor(
})
}
}
-
- fun clearCache() {
- cachedStudents = Single.just(emptyList())
- }
}
diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/login/LoginActivity.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/login/LoginActivity.kt
index c787e2367..c9c1aeb41 100644
--- a/app/src/main/java/io/github/wulkanowy/ui/modules/login/LoginActivity.kt
+++ b/app/src/main/java/io/github/wulkanowy/ui/modules/login/LoginActivity.kt
@@ -12,7 +12,7 @@ import io.github.wulkanowy.utils.setOnSelectPageListener
import kotlinx.android.synthetic.main.activity_login.*
import javax.inject.Inject
-class LoginActivity : BaseActivity(), LoginView, LoginSwitchListener {
+class LoginActivity : BaseActivity(), LoginView {
@Inject
lateinit var presenter: LoginPresenter
@@ -35,35 +35,36 @@ class LoginActivity : BaseActivity(), LoginView, LoginSwitchListener {
presenter.onAttachView(this)
}
- override fun onBackPressed() {
- presenter.onBackPressed { super.onBackPressed() }
- }
-
override fun initAdapter() {
loginAdapter.fragments.putAll(mapOf(
- "1" to LoginFormFragment.newInstance(),
- "2" to LoginOptionsFragment.newInstance()
+ "1" to LoginFormFragment.newInstance(),
+ "2" to LoginOptionsFragment.newInstance()
))
+
loginViewpager.run {
adapter = loginAdapter
setOnSelectPageListener { presenter.onPageSelected(it) }
}
}
- override fun switchFragment(position: Int) {
- presenter.onSwitchFragment(position)
+ override fun switchView(index: Int) {
+ loginViewpager.setCurrentItem(index, false)
}
- override fun switchView(position: Int) {
- loginViewpager.setCurrentItem(position, false)
+ override fun notifyOptionsViewLoadData() {
+ (supportFragmentManager.fragments[1] as? LoginOptionsFragment)?.onParentLoadData()
+ }
+
+ fun onChildFragmentSwitchOptions() {
+ presenter.onChildViewSwitchOptions()
}
override fun hideActionBar() {
supportActionBar?.hide()
}
- override fun loadOptionsView(index: Int) {
- (loginAdapter.getItem(index) as LoginOptionsFragment).loadData()
+ override fun onBackPressed() {
+ presenter.onBackPressed { super.onBackPressed() }
}
public override fun onDestroy() {
diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/login/LoginPresenter.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/login/LoginPresenter.kt
index cbee0e82a..c26952152 100644
--- a/app/src/main/java/io/github/wulkanowy/ui/modules/login/LoginPresenter.kt
+++ b/app/src/main/java/io/github/wulkanowy/ui/modules/login/LoginPresenter.kt
@@ -4,8 +4,7 @@ import io.github.wulkanowy.data.ErrorHandler
import io.github.wulkanowy.ui.base.BasePresenter
import javax.inject.Inject
-class LoginPresenter @Inject constructor(errorHandler: ErrorHandler)
- : BasePresenter(errorHandler) {
+class LoginPresenter @Inject constructor(errorHandler: ErrorHandler) : BasePresenter(errorHandler) {
override fun onAttachView(view: LoginView) {
super.onAttachView(view)
@@ -16,11 +15,11 @@ class LoginPresenter @Inject constructor(errorHandler: ErrorHandler)
}
fun onPageSelected(index: Int) {
- if (index == 1) view?.loadOptionsView(index)
+ if (index == 1) view?.notifyOptionsViewLoadData()
}
- fun onSwitchFragment(position: Int) {
- view?.switchView(position)
+ fun onChildViewSwitchOptions() {
+ view?.switchView(1)
}
fun onBackPressed(default: () -> Unit) {
diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/login/LoginSwitchListener.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/login/LoginSwitchListener.kt
deleted file mode 100644
index 1e6d82c8d..000000000
--- a/app/src/main/java/io/github/wulkanowy/ui/modules/login/LoginSwitchListener.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package io.github.wulkanowy.ui.modules.login
-
-interface LoginSwitchListener {
-
- fun switchFragment(position: Int)
-}
diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/login/LoginView.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/login/LoginView.kt
index cc9a04cc4..52cb91807 100644
--- a/app/src/main/java/io/github/wulkanowy/ui/modules/login/LoginView.kt
+++ b/app/src/main/java/io/github/wulkanowy/ui/modules/login/LoginView.kt
@@ -8,9 +8,9 @@ interface LoginView : BaseView {
fun initAdapter()
- fun loadOptionsView(index: Int)
-
- fun switchView(position: Int)
-
fun hideActionBar()
+
+ fun switchView(index: Int)
+
+ fun notifyOptionsViewLoadData()
}
diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/login/form/LoginFormFragment.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/login/form/LoginFormFragment.kt
index e6020342c..0a66666f6 100644
--- a/app/src/main/java/io/github/wulkanowy/ui/modules/login/form/LoginFormFragment.kt
+++ b/app/src/main/java/io/github/wulkanowy/ui/modules/login/form/LoginFormFragment.kt
@@ -6,11 +6,12 @@ import android.view.View
import android.view.View.GONE
import android.view.View.VISIBLE
import android.view.ViewGroup
-import android.view.inputmethod.EditorInfo
+import android.view.inputmethod.EditorInfo.IME_ACTION_DONE
+import android.view.inputmethod.EditorInfo.IME_NULL
import android.widget.ArrayAdapter
import io.github.wulkanowy.R
import io.github.wulkanowy.ui.base.BaseFragment
-import io.github.wulkanowy.ui.modules.login.LoginSwitchListener
+import io.github.wulkanowy.ui.modules.login.LoginActivity
import io.github.wulkanowy.utils.hideSoftInput
import io.github.wulkanowy.utils.showSoftInput
import kotlinx.android.synthetic.main.fragment_login_form.*
@@ -34,22 +35,21 @@ class LoginFormFragment : BaseFragment(), LoginFormView {
presenter.onAttachView(this)
}
- override fun initInputs() {
+ override fun initView() {
loginSignButton.setOnClickListener {
presenter.attemptLogin(
- loginNicknameEdit.text.toString(),
- loginPassEdit.text.toString(),
- loginSymbolEdit.text.toString(),
- resources.getStringArray(R.array.endpoints_values)[loginHostEdit.selectedItemPosition]
+ loginNicknameEdit.text.toString(),
+ loginPassEdit.text.toString(),
+ loginSymbolEdit.text.toString(),
+ resources.getStringArray(R.array.endpoints_values)[loginHostEdit.selectedItemPosition]
)
}
loginPassEdit.setOnEditorActionListener { _, id, _ -> onEditAction(id) }
- loginHostEdit.run {
- adapter = ArrayAdapter.createFromResource(context, R.array.endpoints_keys, android.R.layout.simple_spinner_item).apply {
- setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
- }
+ loginHostEdit.apply {
+ adapter = ArrayAdapter.createFromResource(context, R.array.endpoints_keys, android.R.layout.simple_spinner_item)
+ .apply { setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) }
}
loginSymbolEdit.run {
@@ -58,13 +58,6 @@ class LoginFormFragment : BaseFragment(), LoginFormView {
}
}
- private fun onEditAction(actionId: Int): Boolean {
- return when (actionId) {
- EditorInfo.IME_ACTION_DONE, EditorInfo.IME_NULL -> loginSignButton.callOnClick()
- else -> false
- }
- }
-
override fun showSymbolInput() {
loginHeader.text = getString(R.string.login_header_symbol)
loginMainForm.visibility = GONE
@@ -73,8 +66,8 @@ class LoginFormFragment : BaseFragment(), LoginFormView {
showSoftKeyboard()
}
- override fun switchNextView() {
- (activity as LoginSwitchListener?)?.switchFragment(1)
+ override fun switchOptionsView() {
+ (activity as? LoginActivity)?.onChildFragmentSwitchOptions()
}
override fun setErrorNicknameRequired() {
@@ -132,11 +125,21 @@ class LoginFormFragment : BaseFragment(), LoginFormView {
activity?.hideSoftInput()
}
- override fun showLoginProgress(show: Boolean) {
- loginFormContainer.visibility = if (show) GONE else VISIBLE
+ override fun showProgress(show: Boolean) {
loginFormProgressContainer.visibility = if (show) VISIBLE else GONE
}
+ override fun showContent(show: Boolean) {
+ loginFormContainer.visibility = if (show) VISIBLE else GONE
+ }
+
+ private fun onEditAction(actionId: Int): Boolean {
+ return when (actionId) {
+ IME_ACTION_DONE, IME_NULL -> loginSignButton.callOnClick()
+ else -> false
+ }
+ }
+
override fun onDestroyView() {
super.onDestroyView()
presenter.onDetachView()
diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/login/form/LoginFormPresenter.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/login/form/LoginFormPresenter.kt
index 36912b2b8..2e7c726cc 100644
--- a/app/src/main/java/io/github/wulkanowy/ui/modules/login/form/LoginFormPresenter.kt
+++ b/app/src/main/java/io/github/wulkanowy/ui/modules/login/form/LoginFormPresenter.kt
@@ -19,27 +19,35 @@ class LoginFormPresenter @Inject constructor(
override fun onAttachView(view: LoginFormView) {
super.onAttachView(view)
- view.initInputs()
+ view.run {
+ initView()
+ errorHandler.doOnBadCredentials = {
+ setErrorPassIncorrect()
+ showSoftKeyboard()
+ Timber.i("Entered wrong username or password")
+ }
+ }
}
fun attemptLogin(email: String, password: String, symbol: String, endpoint: String) {
if (!validateCredentials(email, password, symbol)) return
+
disposable.add(sessionRepository.getConnectedStudents(email, password, symbol, endpoint)
- .observeOn(schedulers.mainThread)
.subscribeOn(schedulers.backgroundThread)
+ .observeOn(schedulers.mainThread)
.doOnSubscribe {
- view?.run {
+ view?.apply {
hideSoftKeyboard()
- showLoginProgress(true)
- errorHandler.doOnBadCredentials = {
- setErrorPassIncorrect()
- showSoftKeyboard()
- Timber.i("Entered wrong username or password")
- }
+ showProgress(true)
+ showContent(false)
+ }
+ }
+ .doFinally {
+ view?.apply {
+ showProgress(false)
+ showContent(true)
}
- sessionRepository.clearCache()
}
- .doFinally { view?.showLoginProgress(false) }
.subscribe({
view?.run {
if (it.isEmpty() && !wasEmpty) {
@@ -50,7 +58,7 @@ class LoginFormPresenter @Inject constructor(
setErrorSymbolIncorrect()
logRegister("No student found", false, if (symbol.isEmpty()) "nil" else symbol, endpoint)
} else {
- switchNextView()
+ switchOptionsView()
logEvent("Found students", mapOf("students" to it.size, "symbol" to it.joinToString { student -> student.symbol }, "endpoint" to endpoint))
}
}
diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/login/form/LoginFormView.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/login/form/LoginFormView.kt
index 949d16b9d..a25593301 100644
--- a/app/src/main/java/io/github/wulkanowy/ui/modules/login/form/LoginFormView.kt
+++ b/app/src/main/java/io/github/wulkanowy/ui/modules/login/form/LoginFormView.kt
@@ -4,7 +4,9 @@ import io.github.wulkanowy.ui.base.BaseView
interface LoginFormView : BaseView {
- fun initInputs()
+ fun initView()
+
+ fun switchOptionsView()
fun setErrorNicknameRequired()
@@ -24,9 +26,9 @@ interface LoginFormView : BaseView {
fun hideSoftKeyboard()
- fun showLoginProgress(show: Boolean)
+ fun showProgress(show: Boolean)
+
+ fun showContent(show: Boolean)
fun showSymbolInput()
-
- fun switchNextView()
}
diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/login/options/LoginOptionsFragment.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/login/options/LoginOptionsFragment.kt
index ea1ccbeda..e242aba33 100644
--- a/app/src/main/java/io/github/wulkanowy/ui/modules/login/options/LoginOptionsFragment.kt
+++ b/app/src/main/java/io/github/wulkanowy/ui/modules/login/options/LoginOptionsFragment.kt
@@ -38,28 +38,21 @@ class LoginOptionsFragment : BaseFragment(), LoginOptionsView {
presenter.onAttachView(this)
}
- override fun initRecycler() {
- loginAdapter.run {
- setOnItemClickListener { position ->
- (getItem(position) as? LoginOptionsItem)?.let {
- presenter.onSelectStudent(it.student)
- }
- }
- }
- loginOptionsRecycler.run {
+ override fun initView() {
+ loginAdapter.apply { setOnItemClickListener { presenter.onSelectItem(getItem(it)) } }
+
+ loginOptionsRecycler.apply {
adapter = loginAdapter
layoutManager = SmoothScrollLinearLayoutManager(context)
}
}
- fun loadData() {
- presenter.refreshData()
+ fun onParentLoadData() {
+ presenter.onParentViewLoadData()
}
override fun updateData(data: List) {
- loginAdapter.run {
- updateDataSet(data, true)
- }
+ loginAdapter.updateDataSet(data, true)
}
override fun openMainView() {
@@ -69,17 +62,20 @@ class LoginOptionsFragment : BaseFragment(), LoginOptionsView {
}
}
- override fun showLoginProgress(show: Boolean) {
+ override fun showProgress(show: Boolean) {
loginOptionsProgressContainer.visibility = if (show) VISIBLE else GONE
- loginOptionsRecycler.visibility = if (show) GONE else VISIBLE
+ }
+
+ override fun showContent(show: Boolean) {
+ loginOptionsRecycler.visibility = if (show) VISIBLE else GONE
}
override fun showActionBar(show: Boolean) {
- (activity as AppCompatActivity?)?.supportActionBar?.run { if (show) show() else hide() }
+ (activity as? AppCompatActivity)?.supportActionBar?.run { if (show) show() else hide() }
}
override fun onDestroyView() {
- super.onDestroyView()
presenter.onDetachView()
+ super.onDestroyView()
}
}
diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/login/options/LoginOptionsPresenter.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/login/options/LoginOptionsPresenter.kt
index 4a7bb38c0..85dfbfd45 100644
--- a/app/src/main/java/io/github/wulkanowy/ui/modules/login/options/LoginOptionsPresenter.kt
+++ b/app/src/main/java/io/github/wulkanowy/ui/modules/login/options/LoginOptionsPresenter.kt
@@ -1,5 +1,6 @@
package io.github.wulkanowy.ui.modules.login.options
+import eu.davidea.flexibleadapter.items.AbstractFlexibleItem
import io.github.wulkanowy.data.ErrorHandler
import io.github.wulkanowy.data.db.entities.Student
import io.github.wulkanowy.data.repositories.SessionRepository
@@ -16,29 +17,31 @@ class LoginOptionsPresenter @Inject constructor(
override fun onAttachView(view: LoginOptionsView) {
super.onAttachView(view)
- view.initRecycler()
+ view.initView()
}
- fun refreshData() {
+ fun onParentViewLoadData() {
disposable.add(repository.cachedStudents
.observeOn(schedulers.mainThread)
.subscribeOn(schedulers.backgroundThread)
.doOnSubscribe { view?.showActionBar(true) }
- .doFinally { repository.clearCache() }
- .subscribe({
- view?.updateData(it.map { student ->
- LoginOptionsItem(student)
- })
- }, { errorHandler.proceed(it) }))
+ .subscribe({ view?.updateData(it.map { student -> LoginOptionsItem(student) }) }, { errorHandler.proceed(it) }))
}
- fun onSelectStudent(student: Student) {
+ fun onSelectItem(item: AbstractFlexibleItem<*>?) {
+ if (item is LoginOptionsItem) {
+ registerStudent(item.student)
+ }
+ }
+
+ private fun registerStudent(student: Student) {
disposable.add(repository.saveStudent(student)
.subscribeOn(schedulers.backgroundThread)
.observeOn(schedulers.mainThread)
.doOnSubscribe {
view?.run {
- showLoginProgress(true)
+ showProgress(true)
+ showContent(false)
showActionBar(false)
}
}
diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/login/options/LoginOptionsView.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/login/options/LoginOptionsView.kt
index 306f8b314..e20912ae3 100644
--- a/app/src/main/java/io/github/wulkanowy/ui/modules/login/options/LoginOptionsView.kt
+++ b/app/src/main/java/io/github/wulkanowy/ui/modules/login/options/LoginOptionsView.kt
@@ -4,13 +4,15 @@ import io.github.wulkanowy.ui.base.BaseView
interface LoginOptionsView : BaseView {
- fun updateData(data: List)
+ fun initView()
- fun initRecycler()
+ fun updateData(data: List)
fun openMainView()
- fun showLoginProgress(show: Boolean)
+ fun showProgress(show: Boolean)
+
+ fun showContent(show: Boolean)
fun showActionBar(show: Boolean)
}
diff --git a/app/src/test/java/io/github/wulkanowy/ui/modules/login/LoginPresenterTest.kt b/app/src/test/java/io/github/wulkanowy/ui/modules/login/LoginPresenterTest.kt
index 4c3210be2..6536ec15a 100644
--- a/app/src/test/java/io/github/wulkanowy/ui/modules/login/LoginPresenterTest.kt
+++ b/app/src/test/java/io/github/wulkanowy/ui/modules/login/LoginPresenterTest.kt
@@ -4,7 +4,10 @@ import org.junit.Assert.assertNotEquals
import org.junit.Before
import org.junit.Test
import org.mockito.Mock
-import org.mockito.Mockito.*
+import org.mockito.Mockito.clearInvocations
+import org.mockito.Mockito.doReturn
+import org.mockito.Mockito.never
+import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
class LoginPresenterTest {
@@ -35,16 +38,19 @@ class LoginPresenterTest {
@Test
fun onPageSelectedTest() {
presenter.onPageSelected(1)
- verify(loginView).loadOptionsView(1)
+ verify(loginView).notifyOptionsViewLoadData()
+ }
+ @Test
+ fun onPageSelectedNeverTest() {
presenter.onPageSelected(0)
- verify(loginView, never()).loadOptionsView(0)
+ verify(loginView, never()).notifyOptionsViewLoadData()
}
@Test
fun onSwitchFragmentTest() {
- presenter.onSwitchFragment(4)
- verify(loginView).switchView(4)
+ presenter.onChildViewSwitchOptions()
+ verify(loginView).switchView(1)
}
@Test
diff --git a/app/src/test/java/io/github/wulkanowy/ui/modules/login/form/LoginFormPresenterTest.kt b/app/src/test/java/io/github/wulkanowy/ui/modules/login/form/LoginFormPresenterTest.kt
index 6bae21d21..8a0c23586 100644
--- a/app/src/test/java/io/github/wulkanowy/ui/modules/login/form/LoginFormPresenterTest.kt
+++ b/app/src/test/java/io/github/wulkanowy/ui/modules/login/form/LoginFormPresenterTest.kt
@@ -9,7 +9,11 @@ import org.junit.Before
import org.junit.Test
import org.mockito.ArgumentMatchers.anyString
import org.mockito.Mock
-import org.mockito.Mockito.*
+import org.mockito.Mockito.clearInvocations
+import org.mockito.Mockito.doReturn
+import org.mockito.Mockito.never
+import org.mockito.Mockito.times
+import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
class LoginFormPresenterTest {
@@ -35,7 +39,7 @@ class LoginFormPresenterTest {
@Test
fun initViewTest() {
- verify(loginFormView).initInputs()
+ verify(loginFormView).initView()
}
@Test
@@ -86,10 +90,11 @@ class LoginFormPresenterTest {
presenter.attemptLogin("@", "123456", "test", "https://fakelog.cf")
verify(loginFormView).hideSoftKeyboard()
- verify(loginFormView).showLoginProgress(true)
- verify(repository).clearCache()
- verify(loginFormView).showLoginProgress(false)
- verify(loginFormView).switchNextView()
+ verify(loginFormView).showProgress(true)
+ verify(loginFormView).showProgress(false)
+ verify(loginFormView).showContent(false)
+ verify(loginFormView).showContent(true)
+ verify(loginFormView).switchOptionsView()
}
@Test
@@ -99,9 +104,10 @@ class LoginFormPresenterTest {
presenter.attemptLogin("@", "123456", "test", "https://fakelog.cf")
verify(loginFormView).hideSoftKeyboard()
- verify(loginFormView).showLoginProgress(true)
- verify(repository).clearCache()
- verify(loginFormView).showLoginProgress(false)
+ verify(loginFormView).showProgress(true)
+ verify(loginFormView).showProgress(false)
+ verify(loginFormView).showContent(false)
+ verify(loginFormView).showContent(true)
verify(loginFormView).showSymbolInput()
}
@@ -113,9 +119,10 @@ class LoginFormPresenterTest {
presenter.attemptLogin("@", "123456", "test", "https://fakelog.cf")
verify(loginFormView, times(2)).hideSoftKeyboard()
- verify(loginFormView, times(2)).showLoginProgress(true)
- verify(repository, times(2)).clearCache()
- verify(loginFormView, times(2)).showLoginProgress(false)
+ verify(loginFormView, times(2)).showProgress(true)
+ verify(loginFormView, times(2)).showProgress(false)
+ verify(loginFormView, times(2)).showContent(false)
+ verify(loginFormView, times(2)).showContent(true)
verify(loginFormView, times(2)).showSymbolInput()
verify(loginFormView).setErrorSymbolIncorrect()
@@ -129,9 +136,10 @@ class LoginFormPresenterTest {
presenter.attemptLogin("@", "123456", "test", "https://fakelog.cf")
verify(loginFormView).hideSoftKeyboard()
- verify(loginFormView).showLoginProgress(true)
- verify(repository).clearCache()
- verify(loginFormView).showLoginProgress(false)
+ verify(loginFormView).showProgress(true)
+ verify(loginFormView).showProgress(false)
+ verify(loginFormView).showContent(false)
+ verify(loginFormView).showContent(true)
verify(errorHandler).proceed(testException)
}
}
diff --git a/app/src/test/java/io/github/wulkanowy/ui/modules/login/options/LoginOptionsPresenterTest.kt b/app/src/test/java/io/github/wulkanowy/ui/modules/login/options/LoginOptionsPresenterTest.kt
index 231b145cf..0a2a0b0fc 100644
--- a/app/src/test/java/io/github/wulkanowy/ui/modules/login/options/LoginOptionsPresenterTest.kt
+++ b/app/src/test/java/io/github/wulkanowy/ui/modules/login/options/LoginOptionsPresenterTest.kt
@@ -9,7 +9,9 @@ import io.reactivex.Single
import org.junit.Before
import org.junit.Test
import org.mockito.Mock
-import org.mockito.Mockito.*
+import org.mockito.Mockito.clearInvocations
+import org.mockito.Mockito.doReturn
+import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
class LoginOptionsPresenterTest {
@@ -39,41 +41,40 @@ class LoginOptionsPresenterTest {
@Test
fun initViewTest() {
- verify(loginOptionsView).initRecycler()
+ verify(loginOptionsView).initView()
}
@Test
fun refreshDataTest() {
doReturn(Single.just(listOf(testStudent))).`when`(repository).cachedStudents
- presenter.refreshData()
+ presenter.onParentViewLoadData()
verify(loginOptionsView).showActionBar(true)
verify(loginOptionsView).updateData(listOf(LoginOptionsItem(testStudent)))
- verify(repository).clearCache()
}
@Test
fun refreshDataErrorTest() {
doReturn(Single.error>(testException)).`when`(repository).cachedStudents
- presenter.refreshData()
+ presenter.onParentViewLoadData()
verify(loginOptionsView).showActionBar(true)
verify(errorHandler).proceed(testException)
- verify(repository).clearCache()
}
@Test
fun onSelectedStudentTest() {
doReturn(Completable.complete()).`when`(repository).saveStudent(testStudent)
- presenter.onSelectStudent(testStudent)
- verify(loginOptionsView).showLoginProgress(true)
+ presenter.onSelectItem(LoginOptionsItem(testStudent))
+ verify(loginOptionsView).showContent(false)
+ verify(loginOptionsView).showProgress(true)
verify(loginOptionsView).openMainView()
-
}
@Test
fun onSelectedStudentErrorTest() {
doReturn(Completable.error(testException)).`when`(repository).saveStudent(testStudent)
- presenter.onSelectStudent(testStudent)
- verify(loginOptionsView).showLoginProgress(true)
+ presenter.onSelectItem(LoginOptionsItem(testStudent))
+ verify(loginOptionsView).showContent(false)
+ verify(loginOptionsView).showProgress(true)
verify(errorHandler).proceed(testException)
}
}