Skip to content
This repository has been archived by the owner on Aug 15, 2021. It is now read-only.

Commit

Permalink
2020-04-15 Version 4.0.0: Refactored to MVP
Browse files Browse the repository at this point in the history
  • Loading branch information
fartem committed Apr 15, 2020
1 parent fddc2d1 commit 0908c13
Show file tree
Hide file tree
Showing 76 changed files with 988 additions and 539 deletions.
7 changes: 6 additions & 1 deletion app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'io.gitlab.arturbosch.detekt'
apply plugin: 'kotlin-kapt'
apply plugin: "kotlin-allopen"
apply from: 'detekt.gradle'
apply from: 'cpd.gradle'
apply from: 'jacoco.gradle'
Expand All @@ -15,7 +16,7 @@ android {
minSdkVersion 21
targetSdkVersion 29
versionCode 1
versionName '3.2.1'
versionName '4.0.0'

testInstrumentationRunner 'com.smlnskgmail.jaman.randomnotes.runner.AndroidJacocoTestRunner'

Expand Down Expand Up @@ -53,6 +54,10 @@ android {
}
}

allOpen {
annotation('com.smlnskgmail.jaman.randomnotes.utils.OpenForTests')
}

dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.1.0'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,15 @@ import com.smlnskgmail.jaman.randomnotes.di.components.TestAppComponent
import com.smlnskgmail.jaman.randomnotes.di.modules.CloudAuthModule
import com.smlnskgmail.jaman.randomnotes.di.modules.CloudInviteModule
import com.smlnskgmail.jaman.randomnotes.di.modules.DataRepositoryModule
import com.smlnskgmail.jaman.randomnotes.logic.repository.api.cloud.CloudInvite
import com.smlnskgmail.jaman.randomnotes.logic.repository.impl.cloud.fake.FakeCloudAuth
import com.smlnskgmail.jaman.randomnotes.logic.repository.impl.cloud.fake.FakeCloudDataSource
import com.smlnskgmail.jaman.randomnotes.logic.repository.impl.local.ormlite.OrmLiteDataSource
import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudInvite
import com.smlnskgmail.jaman.randomnotes.model.impl.cloud.fake.FakeCloudAuth
import com.smlnskgmail.jaman.randomnotes.model.impl.cloud.fake.FakeCloudDataSource
import com.smlnskgmail.jaman.randomnotes.model.impl.ormlite.OrmLiteDataSource
import org.junit.Before
import org.junit.Rule
import org.mockito.Mock
import org.mockito.MockitoAnnotations


open class BaseAuthTest {

@get:Rule
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import androidx.test.runner.AndroidJUnit4
import com.nhaarman.mockito_kotlin.any
import com.nhaarman.mockito_kotlin.whenever
import com.smlnskgmail.jaman.randomnotes.R
import com.smlnskgmail.jaman.randomnotes.logic.login.LoginFragment
import com.smlnskgmail.jaman.randomnotes.logic.main.MainFragment
import com.smlnskgmail.jaman.randomnotes.view.auth.CloudAuthFragment
import com.smlnskgmail.jaman.randomnotes.view.list.NotesListFragment
import org.junit.Assert.assertEquals
import org.junit.Test
import org.junit.runner.RunWith
Expand Down Expand Up @@ -61,7 +61,7 @@ class EmailAuthTest : BaseAuthTest() {
fragmentManager.fragments.size
)
assertEquals(
MainFragment::class.java.simpleName,
NotesListFragment::class.java.simpleName,
fragmentManager.fragments[0].javaClass.simpleName
)
}
Expand Down Expand Up @@ -110,7 +110,7 @@ class EmailAuthTest : BaseAuthTest() {
fragmentManager.fragments.size
)
assertEquals(
LoginFragment::class.java.simpleName,
CloudAuthFragment::class.java.simpleName,
fragmentManager.fragments[1].javaClass.simpleName
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ import androidx.test.runner.AndroidJUnit4
import com.nhaarman.mockito_kotlin.any
import com.nhaarman.mockito_kotlin.whenever
import com.smlnskgmail.jaman.randomnotes.R
import com.smlnskgmail.jaman.randomnotes.logic.login.LoginFragment
import com.smlnskgmail.jaman.randomnotes.logic.main.MainFragment
import com.smlnskgmail.jaman.randomnotes.view.auth.CloudAuthFragment
import com.smlnskgmail.jaman.randomnotes.view.list.NotesListFragment
import org.junit.Assert.assertEquals
import org.junit.Test
import org.junit.runner.RunWith
Expand Down Expand Up @@ -39,7 +39,7 @@ class FacebookAuthTest : BaseAuthTest() {
fragmentManager.fragments.size
)
assertEquals(
MainFragment::class.java.simpleName,
NotesListFragment::class.java.simpleName,
fragmentManager.fragments[0].javaClass.simpleName
)
}
Expand Down Expand Up @@ -68,7 +68,7 @@ class FacebookAuthTest : BaseAuthTest() {
fragmentManager.fragments.size
)
assertEquals(
LoginFragment::class.java.simpleName,
CloudAuthFragment::class.java.simpleName,
fragmentManager.fragments[1].javaClass.simpleName
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import androidx.test.runner.AndroidJUnit4
import com.nhaarman.mockito_kotlin.any
import com.nhaarman.mockito_kotlin.whenever
import com.smlnskgmail.jaman.randomnotes.R
import com.smlnskgmail.jaman.randomnotes.logic.login.LoginFragment
import com.smlnskgmail.jaman.randomnotes.logic.main.MainFragment
import com.smlnskgmail.jaman.randomnotes.view.auth.CloudAuthFragment
import com.smlnskgmail.jaman.randomnotes.view.list.NotesListFragment
import org.junit.Assert.assertEquals
import org.junit.Test
import org.junit.runner.RunWith
Expand Down Expand Up @@ -38,7 +38,7 @@ class GoogleAuthTest : BaseAuthTest() {
fragmentManager.fragments.size
)
assertEquals(
MainFragment::class.java.simpleName,
NotesListFragment::class.java.simpleName,
fragmentManager.fragments[0].javaClass.simpleName
)
}
Expand Down Expand Up @@ -67,7 +67,7 @@ class GoogleAuthTest : BaseAuthTest() {
fragmentManager.fragments.size
)
assertEquals(
LoginFragment::class.java.simpleName,
CloudAuthFragment::class.java.simpleName,
fragmentManager.fragments[1].javaClass.simpleName
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ import com.smlnskgmail.jaman.randomnotes.di.components.DaggerTestAppComponent
import com.smlnskgmail.jaman.randomnotes.di.modules.CloudAuthModule
import com.smlnskgmail.jaman.randomnotes.di.modules.CloudInviteModule
import com.smlnskgmail.jaman.randomnotes.di.modules.DataRepositoryModule
import com.smlnskgmail.jaman.randomnotes.logic.repository.api.cloud.CloudAuth
import com.smlnskgmail.jaman.randomnotes.logic.repository.api.cloud.CloudDataSource
import com.smlnskgmail.jaman.randomnotes.logic.repository.api.cloud.CloudInvite
import com.smlnskgmail.jaman.randomnotes.logic.repository.api.local.LocalDataSource
import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudAuth
import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudDataSource
import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudInvite
import com.smlnskgmail.jaman.randomnotes.model.api.local.LocalDataSource
import org.junit.Before
import org.junit.Rule
import org.junit.Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@ import com.smlnskgmail.jaman.randomnotes.di.components.TestAppComponent
import com.smlnskgmail.jaman.randomnotes.di.modules.CloudAuthModule
import com.smlnskgmail.jaman.randomnotes.di.modules.CloudInviteModule
import com.smlnskgmail.jaman.randomnotes.di.modules.DataRepositoryModule
import com.smlnskgmail.jaman.randomnotes.logic.repository.DataRepository
import com.smlnskgmail.jaman.randomnotes.logic.repository.api.cloud.CloudInvite
import com.smlnskgmail.jaman.randomnotes.logic.repository.api.entities.Note
import com.smlnskgmail.jaman.randomnotes.logic.repository.impl.cloud.fake.FakeCloudAuth
import com.smlnskgmail.jaman.randomnotes.logic.repository.impl.cloud.fake.FakeCloudDataSource
import com.smlnskgmail.jaman.randomnotes.logic.repository.impl.local.ormlite.OrmLiteDataSource
import com.smlnskgmail.jaman.randomnotes.model.DataRepository
import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudInvite
import com.smlnskgmail.jaman.randomnotes.model.api.entities.Note
import com.smlnskgmail.jaman.randomnotes.model.impl.cloud.fake.FakeCloudAuth
import com.smlnskgmail.jaman.randomnotes.model.impl.cloud.fake.FakeCloudDataSource
import com.smlnskgmail.jaman.randomnotes.model.impl.ormlite.OrmLiteDataSource
import org.junit.Before
import org.junit.Rule
import org.mockito.Mock
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import androidx.test.espresso.contrib.RecyclerViewActions.actionOnItemAtPosition
import androidx.test.espresso.matcher.ViewMatchers.withId
import androidx.test.runner.AndroidJUnit4
import com.smlnskgmail.jaman.randomnotes.R
import com.smlnskgmail.jaman.randomnotes.logic.main.noteslist.NoteHolder
import com.smlnskgmail.jaman.randomnotes.utils.ViewChildClick.withChildId
import com.smlnskgmail.jaman.randomnotes.view.list.recycler.NoteHolder
import org.junit.Assert.assertEquals
import org.junit.Test
import org.junit.runner.RunWith
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,6 @@ class NotesRestoreTest : BaseNoteTest() {
onView(withId(R.id.restore_notes)).perform(click())
delay()

assertEquals(
1,
dataRepository.allNotes().size
)
assertEquals(
dataRepository.allNotes().size,
(activityTestRule.activity.findViewById(
Expand Down
22 changes: 11 additions & 11 deletions app/src/main/java/com/smlnskgmail/jaman/randomnotes/App.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,17 @@ import com.smlnskgmail.jaman.randomnotes.di.components.DaggerAppComponent
import com.smlnskgmail.jaman.randomnotes.di.modules.CloudAuthModule
import com.smlnskgmail.jaman.randomnotes.di.modules.CloudInviteModule
import com.smlnskgmail.jaman.randomnotes.di.modules.DataRepositoryModule
import com.smlnskgmail.jaman.randomnotes.logic.repository.DataRepository
import com.smlnskgmail.jaman.randomnotes.logic.repository.api.cloud.CloudAuth
import com.smlnskgmail.jaman.randomnotes.logic.repository.api.cloud.CloudDataSource
import com.smlnskgmail.jaman.randomnotes.logic.repository.api.cloud.CloudInvite
import com.smlnskgmail.jaman.randomnotes.logic.repository.impl.cloud.fake.FakeCloudAuth
import com.smlnskgmail.jaman.randomnotes.logic.repository.impl.cloud.fake.FakeCloudDataSource
import com.smlnskgmail.jaman.randomnotes.logic.repository.impl.cloud.fake.FakeCloudInvite
import com.smlnskgmail.jaman.randomnotes.logic.repository.impl.cloud.parse.ParseServerAuth
import com.smlnskgmail.jaman.randomnotes.logic.repository.impl.cloud.parse.ParseServerDataSource
import com.smlnskgmail.jaman.randomnotes.logic.repository.impl.cloud.parse.ParseServerInvite
import com.smlnskgmail.jaman.randomnotes.logic.repository.impl.local.ormlite.OrmLiteDataSource
import com.smlnskgmail.jaman.randomnotes.model.DataRepository
import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudAuth
import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudDataSource
import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudInvite
import com.smlnskgmail.jaman.randomnotes.model.impl.cloud.fake.FakeCloudAuth
import com.smlnskgmail.jaman.randomnotes.model.impl.cloud.fake.FakeCloudDataSource
import com.smlnskgmail.jaman.randomnotes.model.impl.cloud.fake.FakeCloudInvite
import com.smlnskgmail.jaman.randomnotes.model.impl.cloud.parse.ParseServerAuth
import com.smlnskgmail.jaman.randomnotes.model.impl.cloud.parse.ParseServerDataSource
import com.smlnskgmail.jaman.randomnotes.model.impl.cloud.parse.ParseServerInvite
import com.smlnskgmail.jaman.randomnotes.model.impl.ormlite.OrmLiteDataSource
import javax.inject.Inject

class App : Application() {
Expand Down
33 changes: 14 additions & 19 deletions app/src/main/java/com/smlnskgmail/jaman/randomnotes/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,40 +2,35 @@ package com.smlnskgmail.jaman.randomnotes

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.smlnskgmail.jaman.randomnotes.components.fragments.BaseFragment
import com.smlnskgmail.jaman.randomnotes.components.views.LongSnackbar
import com.smlnskgmail.jaman.randomnotes.logic.login.LoginFragment
import com.smlnskgmail.jaman.randomnotes.logic.main.MainFragment
import com.smlnskgmail.jaman.randomnotes.components.BaseFragment
import com.smlnskgmail.jaman.randomnotes.view.auth.CloudAuthFragment
import com.smlnskgmail.jaman.randomnotes.view.list.NotesListFragment

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
showMainFragment()
supportFragmentManager.addOnBackStackChangedListener {
val count = supportFragmentManager.fragments.size
val currentFragment = supportFragmentManager.fragments[count - 1]
if (currentFragment is BaseFragment) {
currentFragment.showed()
}
}
showNotesListFragment()
}

private fun showMainFragment() {
fun showNotesListFragment() {
showBaseFragment(
MainFragment(),
NotesListFragment(),
true
)
}

fun loginComplete() {
showMainFragment()
}

fun loginError() {
LongSnackbar(
findViewById(android.R.id.content),
getString(R.string.error_auth)
).show()
}

fun showLoginFragment() {
showBaseFragment(
LoginFragment()
CloudAuthFragment()
)
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,31 +1,26 @@
package com.smlnskgmail.jaman.randomnotes.components.fragments
package com.smlnskgmail.jaman.randomnotes.components

import android.os.Bundle
import android.view.*
import androidx.fragment.app.Fragment

abstract class BaseFragment : Fragment(), FragmentResume {
abstract class BaseFragment : Fragment() {

private lateinit var menu: Menu
private var menu: Menu? = null

override fun onViewCreated(
view: View,
savedInstanceState: Bundle?
) {
setHasOptionsMenu(true)
setTitle()
}

private fun setTitle() {
fun showed() {
activity!!.setTitle(
getTitleResId()
)
}

override fun onFragmentResume() {
setTitle()
}

abstract fun getTitleResId(): Int

abstract fun showToolbarMenu(): Boolean
Expand Down Expand Up @@ -55,10 +50,10 @@ abstract class BaseFragment : Fragment(), FragmentResume {
menu.clear()
}
this.menu = menu
onPostMenuInflated()
onMenuInflated()
}

open fun onPostMenuInflated() {
open fun onMenuInflated() {

}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.smlnskgmail.jaman.randomnotes.components.views
package com.smlnskgmail.jaman.randomnotes.components

import android.view.View
import com.google.android.material.snackbar.Snackbar
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.smlnskgmail.jaman.randomnotes.components.views;
package com.smlnskgmail.jaman.randomnotes.components;

import android.content.Context;
import android.content.res.TypedArray;
Expand Down Expand Up @@ -54,11 +54,11 @@ private void initSupportVectorDrawablesAttrs(AttributeSet attrs) {
this,
getDrawable(
attributeArray,
DRAWABLE_TOP_ID
DRAWABLE_START_ID
),
getDrawable(
attributeArray,
DRAWABLE_START_ID
DRAWABLE_TOP_ID
),
getDrawable(
attributeArray,
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ import com.smlnskgmail.jaman.randomnotes.App
import com.smlnskgmail.jaman.randomnotes.di.modules.CloudAuthModule
import com.smlnskgmail.jaman.randomnotes.di.modules.CloudInviteModule
import com.smlnskgmail.jaman.randomnotes.di.modules.DataRepositoryModule
import com.smlnskgmail.jaman.randomnotes.logic.invite.InviteDialog
import com.smlnskgmail.jaman.randomnotes.logic.login.LoginFragment
import com.smlnskgmail.jaman.randomnotes.logic.main.MainFragment
import com.smlnskgmail.jaman.randomnotes.view.auth.CloudAuthFragment
import com.smlnskgmail.jaman.randomnotes.view.invite.CloudInviteDialog
import com.smlnskgmail.jaman.randomnotes.view.list.NotesListFragment
import dagger.Component
import javax.inject.Singleton

Expand All @@ -21,8 +21,8 @@ import javax.inject.Singleton
interface AppComponent {

fun inject(app: App)
fun inject(mainFragment: MainFragment)
fun inject(loginFragment: LoginFragment)
fun inject(inviteDialog: InviteDialog)
fun inject(notesListFragment: NotesListFragment)
fun inject(cloudAuthFragment: CloudAuthFragment)
fun inject(cloudInviteDialog: CloudInviteDialog)

}
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
package com.smlnskgmail.jaman.randomnotes.di.modules

import com.smlnskgmail.jaman.randomnotes.logic.repository.api.cloud.CloudAuth
import com.smlnskgmail.jaman.randomnotes.model.api.cloud.CloudAuth
import com.smlnskgmail.jaman.randomnotes.utils.OpenForTests
import dagger.Module
import dagger.Provides
import javax.inject.Singleton

@OpenForTests
@Module
open class CloudAuthModule(
class CloudAuthModule(
private val cloudAuth: CloudAuth
) {

Expand Down
Loading

0 comments on commit 0908c13

Please sign in to comment.