Search in sources :

Example 1 with AnyRepositoryValue

use of com.karumi.rosie.doubles.AnyRepositoryValue in project Rosie by Karumi.

the class PaginatedRosieRepositoryTest method shouldReturnItemsFromReadableDataSourceIfCacheDataSourceHasNoData.

@Test
public void shouldReturnItemsFromReadableDataSourceIfCacheDataSourceHasNoData() throws Exception {
    Page page = Page.withOffsetAndLimit(ANY_OFFSET, ANY_LIMIT);
    givenCacheDataSourceReturnsNull(page);
    PaginatedCollection<AnyRepositoryValue> readableValues = givenReadableDataSourceReturnsValues(page);
    PaginatedRosieRepository<AnyRepositoryKey, AnyRepositoryValue> repository = givenAPaginatedRepository();
    PaginatedCollection<AnyRepositoryValue> values = repository.getPage(page);
    assertEquals(readableValues, values);
}
Also used : AnyRepositoryKey(com.karumi.rosie.doubles.AnyRepositoryKey) Page(com.karumi.rosie.repository.datasource.paginated.Page) AnyRepositoryValue(com.karumi.rosie.doubles.AnyRepositoryValue) Test(org.junit.Test)

Example 2 with AnyRepositoryValue

use of com.karumi.rosie.doubles.AnyRepositoryValue in project Rosie by Karumi.

the class PaginatedRosieRepositoryTest method shouldNotRemoveDataFromCacheIfCacheDoNotHaveThisPage.

@Test
public void shouldNotRemoveDataFromCacheIfCacheDoNotHaveThisPage() throws Exception {
    Page page = Page.withOffsetAndLimit(ANY_OFFSET, ANY_LIMIT);
    givenCacheDataSourceReturnsNonValidValues(page);
    givenReadableDataSourceReturnsValues(page);
    PaginatedRosieRepository<AnyRepositoryKey, AnyRepositoryValue> repository = givenAPaginatedRepository();
    repository.getPage(page);
    Page nextPage = Page.withOffsetAndLimit(ANY_OFFSET + ANY_LIMIT, ANY_LIMIT);
    repository.getPage(nextPage);
    verify(cacheDataSource, times(1)).deleteAll();
}
Also used : AnyRepositoryKey(com.karumi.rosie.doubles.AnyRepositoryKey) Page(com.karumi.rosie.repository.datasource.paginated.Page) AnyRepositoryValue(com.karumi.rosie.doubles.AnyRepositoryValue) Test(org.junit.Test)

Example 3 with AnyRepositoryValue

use of com.karumi.rosie.doubles.AnyRepositoryValue in project Rosie by Karumi.

the class PaginatedRosieRepositoryTest method shouldReturnValuesFromReadableDataSourceIfCacheDoNotHaveThisPage.

@Test
public void shouldReturnValuesFromReadableDataSourceIfCacheDoNotHaveThisPage() throws Exception {
    Page page = Page.withOffsetAndLimit(ANY_OFFSET, ANY_LIMIT);
    givenCacheDataSourceReturnsNonValidValues(page);
    givenReadableDataSourceReturnsValues(page);
    PaginatedRosieRepository<AnyRepositoryKey, AnyRepositoryValue> repository = givenAPaginatedRepository();
    repository.getPage(page);
    Page nextPage = Page.withOffsetAndLimit(ANY_OFFSET + ANY_LIMIT, ANY_LIMIT);
    repository.getPage(nextPage);
    verify(cacheDataSource).getPage(page);
    verify(readableDataSource).getPage(page);
    verify(cacheDataSource).getPage(nextPage);
    verify(readableDataSource).getPage(nextPage);
}
Also used : AnyRepositoryKey(com.karumi.rosie.doubles.AnyRepositoryKey) Page(com.karumi.rosie.repository.datasource.paginated.Page) AnyRepositoryValue(com.karumi.rosie.doubles.AnyRepositoryValue) Test(org.junit.Test)

Example 4 with AnyRepositoryValue

use of com.karumi.rosie.doubles.AnyRepositoryValue in project Rosie by Karumi.

the class PaginatedRosieRepositoryTest method shouldReturnValuesFromCacheDataSourceIfDataIsValid.

@Test
public void shouldReturnValuesFromCacheDataSourceIfDataIsValid() throws Exception {
    Page page = Page.withOffsetAndLimit(ANY_OFFSET, ANY_LIMIT);
    PaginatedCollection<AnyRepositoryValue> cacheValues = givenCacheDataSourceReturnsValidValues(page);
    PaginatedRosieRepository<AnyRepositoryKey, AnyRepositoryValue> repository = givenAPaginatedRepository();
    PaginatedCollection<AnyRepositoryValue> values = repository.getPage(page);
    assertEquals(cacheValues, values);
}
Also used : AnyRepositoryKey(com.karumi.rosie.doubles.AnyRepositoryKey) Page(com.karumi.rosie.repository.datasource.paginated.Page) AnyRepositoryValue(com.karumi.rosie.doubles.AnyRepositoryValue) Test(org.junit.Test)

Example 5 with AnyRepositoryValue

use of com.karumi.rosie.doubles.AnyRepositoryValue in project Rosie by Karumi.

the class RosieRepositoryTest method givenWriteableDataSourceWritesValue.

private AnyRepositoryValue givenWriteableDataSourceWritesValue(AnyRepositoryValue value) throws Exception {
    AnyRepositoryValue writeableValue = new AnyRepositoryValue(value.getKey());
    when(writeableDataSource.addOrUpdate(value)).thenReturn(writeableValue);
    return writeableValue;
}
Also used : AnyRepositoryValue(com.karumi.rosie.doubles.AnyRepositoryValue)

Aggregations

AnyRepositoryValue (com.karumi.rosie.doubles.AnyRepositoryValue)25 AnyRepositoryKey (com.karumi.rosie.doubles.AnyRepositoryKey)21 Test (org.junit.Test)19 Page (com.karumi.rosie.repository.datasource.paginated.Page)12 LinkedList (java.util.LinkedList)3 NonNull (android.support.annotation.NonNull)2