package pl.llp.aircasting.sync; import pl.llp.aircasting.api.SessionDriver; import pl.llp.aircasting.api.data.DeleteSessionResponse; import pl.llp.aircasting.model.Session; import pl.llp.aircasting.storage.repository.SessionRepository; import pl.llp.aircasting.util.http.HttpResult; import com.xtremelabs.robolectric.RobolectricTestRunner; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Matchers; import org.mockito.Mockito; import java.util.List; import static com.google.common.collect.Lists.newArrayList; import static org.fest.assertions.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @RunWith(RobolectricTestRunner.class) public class SyncServiceTest { SyncService service; List<Session> sessions; private HttpResult<DeleteSessionResponse> result; @Before public void setUp() throws Exception { sessions = newArrayList(); service = new SyncService(); service.sessionDriver = mock(SessionDriver.class); service.sessionRepository = mock(SessionRepository.class); result = mock(HttpResult.class); when(result.getContent()).thenReturn(new DeleteSessionResponse(Boolean.TRUE)); when(service.sessionDriver.deleteSession(Matchers.<Session>any())).thenReturn(result); } @Test public void testPrepareSessions() throws Exception { service.prepareSessions(sessions); } @Test public void should_try_to_delete_sessions_marked_for_deletion() throws Exception { // given Session session = new Session(); session.setMarkedForRemoval(true); sessions.add(session); // when List<Session> withoutDeleted = service.prepareSessions(sessions); // then verify(service.sessionDriver).deleteSession(Mockito.any(Session.class)); assertThat(withoutDeleted).isEmpty(); } }