package com.arellomobile.mvp.provide_methods_test;
import android.os.Bundle;
import com.arellomobile.mvp.MvpDelegate;
import com.arellomobile.mvp.provide_methods_test.resources.LocalProvidedView;
import com.arellomobile.mvp.provide_methods_test.resources.TwoLocalProvidedView;
import com.arellomobile.mvp.provide_methods_test.resources.TwoWeakWithSamePresenterIdView;
import com.arellomobile.mvp.provide_methods_test.resources.WeakProvidedView;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
/**
* Date: 30.12.2016
* Time: 11:18
*
* @author Yuri Shmakov
*/
@RunWith(RobolectricTestRunner.class)
@Config(manifest = Config.NONE)
public class ProvideMethodsTest {
@Test
public void testLocalIsProvided() {
LocalProvidedView view = new LocalProvidedView();
view.delegate = new MvpDelegate<>(view);
view.delegate.onCreate(new Bundle());
Assert.assertNotNull(view.oneLocalPresenter);
Assert.assertSame(view.oneLocalPresenter, view.oneLocalProvidedPresenter);
}
@Test
public void testTwoLocalUseDifferentProvided() {
TwoLocalProvidedView view = new TwoLocalProvidedView();
view.delegate = new MvpDelegate<>(view);
view.delegate.onCreate(new Bundle());
Assert.assertNotSame(view.oneLocalPresenter, view.secondLocalPresenter);
}
@Test
public void testWeakPresenterWithHardcodedTag() {
WeakProvidedView view = new WeakProvidedView();
view.delegate = new MvpDelegate<>(view);
view.delegate.onCreate(new Bundle());
Assert.assertNotNull(view.weakPresenter);
Assert.assertSame(view.weakPresenter, view.weakProvidedPresenter);
}
@Test
public void testTwoWeakPresenterWithSamePresenterIdTest() {
TwoWeakWithSamePresenterIdView view = new TwoWeakWithSamePresenterIdView();
view.delegate = new MvpDelegate<>(view);
view.delegate.onCreate(new Bundle());
Assert.assertNotNull(view.oneWeakPresenter);
Assert.assertNotNull(view.secondWeakPresenter);
Assert.assertSame(view.oneWeakPresenter, view.secondWeakPresenter);
}
}