package ua.kpi.ecampus.ui.presenter; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.powermock.api.mockito.PowerMockito; import java.util.ArrayList; import java.util.List; import ua.kpi.ecampus.model.Recipient; import ua.kpi.ecampus.model.pojo.Bulletin; import ua.kpi.ecampus.model.pojo.Item; import ua.kpi.ecampus.model.pojo.User; import ua.kpi.ecampus.rx.BulletinRxLoader; import ua.kpi.ecampus.ui.activity.SaveBulletinActivity; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.powermock.api.mockito.PowerMockito.doReturn; import static org.powermock.api.mockito.PowerMockito.mockStatic; import static org.powermock.api.support.SuppressCode.suppressConstructor; /** * Created by Admin on 18.05.2016. */ public class SaveBulletinPresenterTest { private SaveBulletinPresenter mPresenter; @Mock private SaveBulletinPresenter.IView mView; @Mock private BulletinRxLoader mLoader; @Before public void setUp() { MockitoAnnotations.initMocks(this); mPresenter = new SaveBulletinPresenter(); mView = mock(SaveBulletinActivity.class); mPresenter.setView(mView); mPresenter.setLoader(mLoader); } @Ignore @Test public void initializeViewComponent() { List<Item> subdivisions = getStubSubdivision(); String id = subdivisions.get(0).getId().toString(); PowerMockito.suppress(PowerMockito.constructor(User.class)); User mockUser = PowerMockito.mock(User.class); PowerMockito.mockStatic(User.class); doReturn(mockUser).when(Mockito.spy(User.getInstance())); doReturn(subdivisions).when(mockUser).getSubdivision(); mPresenter.initializeViewComponent(); verify(mView).setViewComponent(); verify(mLoader).loadDescSubdivisions(id); verify(mLoader).loadGroupsOf(id); verify(mLoader).loadProfiles(); } @Test public void onStartRequest() { CudAction action = mock(CudAction.class); mPresenter.onStartRequest(action); verify(mView).showProgressDialog(); } @Test public void onFinishRequest() { int code = 0; String msg = "msg"; mPresenter.onFinishRequest(code, msg); verify(mView).dismissProgressDialog(); verify(mView).showResponse(code, msg); } @Test public void loadGroups() { String subdivId = "1"; mPresenter.loadGroupsOfSubdivision(subdivId); verify(mLoader).loadGroupsOf(subdivId); } @Test public void setDescendantSubdivisions() { List<Item> subdivisions = getStubSubdivision(); mPresenter.setDescSubdivisions(subdivisions); verify(mView).setSubdivisionAdapter(subdivisions); } @Test public void setProfiles() { List<Item> stub = getStubSubdivision(); mPresenter.setProfiles(stub); verify(mView).setProfileAdapter(stub); } @Test public void setGroups() { List<Item> stub = getStubSubdivision(); mPresenter.setGroups(stub); verify(mView).setGroupAdapter(stub); } @Test public void setRecipients() { List<Recipient> stub = getStubRecipients(); mPresenter.setRecipients(stub); verify(mView).setRecipientsList(stub); } @Test public void addBulletin() { Bulletin stub = stubBulletin(); when(mView.formBulletin()).thenReturn(stub); mPresenter.addBulletin(); verify(mView).formBulletin(); verify(mLoader).addBulletin(stub); } @Test public void editBulletin() { Bulletin stub = stubBulletin(); when(mView.formBulletin()).thenReturn(stub); mPresenter.editBulletin(); verify(mView).formBulletin(); verify(mLoader).editBulletin(stub); } @Test public void deleteBulletin() { String stubId = "1"; when(mView.getBulletinId()).thenReturn(stubId); mPresenter.deleteBulletin(); verify(mView).getBulletinId(); verify(mLoader).deleteBulletin(stubId); } @Test public void loadRecipient() { String stubId = "1"; when(mView.getBulletinId()).thenReturn(stubId); mPresenter.loadRecipients(); verify(mView).getBulletinId(); verify(mLoader).loadRecipients(stubId); } private List<Item> getStubSubdivision() { return new ArrayList<Item>() {{ add(new Item(1, "s1")); }}; } private List<Recipient> getStubRecipients() { return new ArrayList<Recipient>() {{ add(new Recipient()); }}; } private Bulletin stubBulletin() { return new Bulletin("1", "subject", "author", "2016"); } }