Skip to content

Instantly share code, notes, and snippets.

View CyxouD's full-sized avatar

Dmitriy Zasukha CyxouD

  • Ukraine, Dnipro
View GitHub Profile
@CyxouD
CyxouD / AddEditCardPresenter.kt
Created July 19, 2018 15:01
Organize between with View (view: AddEditCardContract.View) and Model (repository: DataSource). Performs logic which is not View-dependant and process data from Model before passing it to View
class AddEditCardPresenter(override val repository: DataSource,
val view: AddEditCardContract.View,
override val schedulerProvider: BaseSchedulerProvider,
override val mCompositeDisposable: CompositeDisposable = CompositeDisposable()) : AddEditCardContract.Presenter {
init {
view.setPresenter(this)
}
override fun subscribe() {
}
@CyxouD
CyxouD / AddEditCardFragment.kt
Created July 19, 2018 14:59
Fragment which is MVP View which can show credit card logo, show that there is no credit card logo, show credit card number was validated successfully etc (everything defined in AddEditCardContract.kt)
//MVP View
class AddEditCardFragment : BaseFragment<AddEditCardContract.Presenter>(), AddEditCardContract.View {
// ...Android lifecycle methods
override fun setPresenter(presenter: AddEditCardContract.Presenter) {
mPresenter = presenter
}
override fun showCreditCardLogo(creditCardEnum: CreditCardEnum) {
@CyxouD
CyxouD / AddEditCardContract.kt
Created July 19, 2018 14:57
Contract (interface) which declare action of Presenter and MVP View. In this case AddEditCardFragment will implement AddEditCardContract.View interface and AddEditCardPresenter will implement AddEditCardContract.Presenter interface
interface AddEditCardContract {
interface Presenter : BasePresenter {
fun getCreditCardLogo(creditCardNumber: String)
fun validateCreditCardNumber(creditCardNumber: String)
fun validateCreditCardHolder(creditCardHolder: String)
fun validateCreditCardExpiryDate(creditExpiryDate: String)
fun validateCreditCardCVV(creditCVV: String)
fun validateCreditCardTypeAndPriority(creditCardType: String, creditCardPriority: String)
fun saveCreditCard(number: String,
holderName: String,
@CyxouD
CyxouD / AddEditCardContract.kt
Last active April 8, 2019 11:58
Model-View-Presenter+Repository architecture example
//contract which declare action of Presenter and MVP View
interface AddEditCardContract {
interface Presenter : BasePresenter {
fun getCreditCardLogo(creditCardNumber: String)
fun validateCreditCardNumber(creditCardNumber: String)
fun validateCreditCardHolder(creditCardHolder: String)
fun validateCreditCardExpiryDate(creditExpiryDate: String)
fun validateCreditCardCVV(creditCVV: String)
fun validateCreditCardTypeAndPriority(creditCardType: String, creditCardPriority: String)
fun saveCreditCard(number: String,
@CyxouD
CyxouD / Model-View-Presenter Communication.kt
Last active April 8, 2019 12:18
Examples of tests for: 1) testing MVP architecture (Model-View-Presenter Communication.kt) - tests communication between view and presenter and mocking repository behavior; 2) Repository (Repository.kt) - tests how data from local data source and remote data source is received and processed; 3) UI (UI (Integration).kt) - tests UI behavior
//imports are missing
class CardsListPresenterTest {
private lateinit var presenter: CardsListPresenter
private val view = mock<CardsListContact.View>()
private val repository = mock<Repository>()
private val scheduleProvider = ImmediateSchedulerProvider()
// ... some other tests
@Test