package ua.kpi.ecampus.ui.presenter;
import android.content.Context;
import android.content.res.Resources;
import android.content.res.TypedArray;
import junit.framework.Assert;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import java.util.List;
import ua.kpi.ecampus.R;
import ua.kpi.ecampus.model.Subsystem;
import ua.kpi.ecampus.ui.Navigator;
import ua.kpi.ecampus.ui.Preference;
import ua.kpi.ecampus.ui.activity.MainActivity;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
/**
* Created by Admin on 17.05.2016.
*/
public class MainPresenterTest {
private MainPresenter mPresenter;
@Mock
private MainPresenter.IView mView;
@Mock
private Navigator mNavigator;
@Mock
private Preference mPreference;
@Mock
private Context mContext;
@Mock
private Resources resources;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mPresenter = new MainPresenter(mContext, mNavigator, mPreference);
mView = mock(MainActivity.class);
mPresenter.setView(mView);
}
@Test
public void startActivityOfSubsystem() {
mPresenter.startActivityBasedOn(0);
verify(mNavigator).startBulletinBoardActivity();
}
@Test
public void logout() {
mPresenter.logout();
verify(mPreference).saveLogoutInfo();
verify(mNavigator).startLoginActivity();
}
@Test
public void getSubsystems() {
int subsystemNumber = 6;
String[] names = new String[]{"1", "2", "3", "4", "5", "6"};
when(mContext.getResources()).thenReturn(resources);
when(mContext.getResources().getStringArray(R.array.full_subsystem)).thenReturn(names);
TypedArray img = mock(TypedArray.class);
for(int i = 0; i < subsystemNumber; i++)
when(img.getResourceId(i, -1)).thenReturn(-1);
when(resources.obtainTypedArray(R.array.full_subsystem_image)).thenReturn(img);
List<Subsystem> list = mPresenter.getData();
Assert.assertEquals(subsystemNumber, list.size());
}
@Test
public void userIsLogged() {
mPresenter.checkUserIsLogged();
verify(mPreference).getTokenExpirationDate();
verify(mPreference).getIsLogged();
verify(mNavigator).startLoginActivity();
}
}