package org.openlmis.core.presenter;
import com.google.inject.AbstractModule;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.openlmis.core.LMISTestRunner;
import org.openlmis.core.model.SyncType;
import org.openlmis.core.model.repository.SyncErrorsRepository;
import org.robolectric.RuntimeEnvironment;
import roboguice.RoboGuice;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@RunWith(LMISTestRunner.class)
public class SyncErrorsPresenterTest{
protected SyncErrorsPresenter presenter;
protected SyncErrorsRepository errorsRepository;
@Before
public void setup() throws Exception {
errorsRepository = mock(SyncErrorsRepository.class);
RoboGuice.overrideApplicationInjector(RuntimeEnvironment.application, new MyTestModule());
presenter = RoboGuice.getInjector(RuntimeEnvironment.application).getInstance(SyncErrorsPresenter.class);
}
@Test
public void shouldGetSyncErrorsWhenHaveSyncFailed() throws Exception {
when(errorsRepository.hasSyncErrorOf(SyncType.RnRForm)).thenReturn(true);
when(errorsRepository.hasSyncErrorOf(SyncType.StockCards)).thenReturn(false);
boolean hasRnrSyncError = presenter.hasRnrSyncError();
boolean hasStockCardsSyncError = presenter.hasStockCardSyncError();
assertTrue(hasRnrSyncError);
assertFalse(hasStockCardsSyncError);
}
public class MyTestModule extends AbstractModule {
@Override
protected void configure() {
bind(SyncErrorsRepository.class).toInstance(errorsRepository);
}
}
}