Search in sources :

Example 1 with Page

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;
}
Also used : Character(com.karumi.rosie.sample.characters.domain.model.Character) ArrayList(java.util.ArrayList) Page(com.karumi.rosie.repository.datasource.paginated.Page) PaginatedCollection(com.karumi.rosie.repository.PaginatedCollection)

Example 2 with Page

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);
}
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 Page

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();
}
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 Page

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);
}
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 Page

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);
}
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)

Aggregations

Page (com.karumi.rosie.repository.datasource.paginated.Page)14 AnyRepositoryKey (com.karumi.rosie.doubles.AnyRepositoryKey)12 AnyRepositoryValue (com.karumi.rosie.doubles.AnyRepositoryValue)12 Test (org.junit.Test)12 PaginatedCollection (com.karumi.rosie.repository.PaginatedCollection)2 ArrayList (java.util.ArrayList)2 Character (com.karumi.rosie.sample.characters.domain.model.Character)1 ComicSeries (com.karumi.rosie.sample.comics.domain.model.ComicSeries)1