use of com.karumi.rosie.repository.datasource.paginated.Page in project Rosie by Karumi.
the class GetCharacters method getAllCharactersInCache.
public PaginatedCollection<Character> getAllCharactersInCache() {
Collection<Character> all;
try {
all = charactersRepository.getAll(ReadPolicy.CACHE_ONLY);
} catch (Exception e) {
all = new ArrayList<>();
}
if (all == null) {
all = new ArrayList<>();
}
Page page = Page.withOffsetAndLimit(0, all.size());
PaginatedCollection<Character> comics = new PaginatedCollection<>(all);
comics.setPage(page);
comics.setHasMore(true);
return comics;
}
use of com.karumi.rosie.repository.datasource.paginated.Page 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);
}
use of com.karumi.rosie.repository.datasource.paginated.Page 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();
}
use of com.karumi.rosie.repository.datasource.paginated.Page 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);
}
use of com.karumi.rosie.repository.datasource.paginated.Page 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);
}
Aggregations