use of com.yahoo.elide.core.datastore.DataStoreIterable in project elide by yahoo.
the class InMemoryStoreTransactionTest method testDataStoreRequiresTotalInMemoryFilter.
@Test
public void testDataStoreRequiresTotalInMemoryFilter() {
FilterExpression expression = new InPredicate(new Path(Book.class, dictionary, "genre"), "Literary Fiction");
EntityProjection projection = EntityProjection.builder().type(Book.class).filterExpression(expression).build();
DataStoreIterable filterInMemory = new DataStoreIterableBuilder(books).filterInMemory(true).build();
when(wrappedTransaction.loadObjects(any(), eq(scope))).thenReturn(filterInMemory);
Collection<Object> loaded = ImmutableList.copyOf(inMemoryStoreTransaction.loadObjects(projection, scope));
verify(wrappedTransaction, times(1)).loadObjects(any(EntityProjection.class), eq(scope));
assertEquals(2, loaded.size());
assertTrue(loaded.contains(book1));
assertTrue(loaded.contains(book3));
}
use of com.yahoo.elide.core.datastore.DataStoreIterable in project elide by yahoo.
the class InMemoryStoreTransactionTest method testDataStoreRequiresInMemoryPagination.
@Test
public void testDataStoreRequiresInMemoryPagination() {
PaginationImpl pagination = new PaginationImpl(ClassType.of(Book.class), 0, 2, 10, 10, false, false);
EntityProjection projection = EntityProjection.builder().type(Book.class).pagination(pagination).build();
DataStoreIterable paginateInMemory = new DataStoreIterableBuilder(books).paginateInMemory(true).build();
when(wrappedTransaction.loadObjects(any(), eq(scope))).thenReturn(paginateInMemory);
Collection<Object> loaded = Lists.newArrayList(inMemoryStoreTransaction.loadObjects(projection, scope));
verify(wrappedTransaction, times(1)).loadObjects(any(EntityProjection.class), eq(scope));
assertEquals(2, loaded.size());
assertTrue(loaded.contains(book1));
assertTrue(loaded.contains(book2));
}
use of com.yahoo.elide.core.datastore.DataStoreIterable in project elide by yahoo.
the class InMemoryStoreTransactionTest method testFilteringRequiresInMemorySorting.
@Test
public void testFilteringRequiresInMemorySorting() {
FilterExpression expression = new InPredicate(new Path(Book.class, dictionary, "genre"), "Literary Fiction");
Map<String, Sorting.SortOrder> sortOrder = new HashMap<>();
sortOrder.put("title", Sorting.SortOrder.desc);
Sorting sorting = new SortingImpl(sortOrder, Book.class, dictionary);
EntityProjection projection = EntityProjection.builder().type(Book.class).filterExpression(expression).sorting(sorting).build();
DataStoreIterable filterInMemory = new DataStoreIterableBuilder(books).filterInMemory(true).build();
when(wrappedTransaction.loadObjects(any(), eq(scope))).thenReturn(filterInMemory);
Collection<Object> loaded = Lists.newArrayList(inMemoryStoreTransaction.loadObjects(projection, scope));
verify(wrappedTransaction, times(1)).loadObjects(any(EntityProjection.class), eq(scope));
assertEquals(2, loaded.size());
List<String> bookTitles = loaded.stream().map((o) -> ((Book) o).getTitle()).collect(Collectors.toList());
assertEquals(Lists.newArrayList("Book 3", "Book 1"), bookTitles);
}
use of com.yahoo.elide.core.datastore.DataStoreIterable in project elide by yahoo.
the class InMemoryStoreTransactionTest method testFullFilterPredicatePushDown.
@Test
public void testFullFilterPredicatePushDown() {
FilterExpression expression = new InPredicate(new Path(Book.class, dictionary, "genre"), "Literary Fiction");
EntityProjection projection = EntityProjection.builder().type(Book.class).filterExpression(expression).build();
DataStoreIterable expected = new DataStoreIterableBuilder<>(books).build();
when(wrappedTransaction.loadObjects(eq(projection), eq(scope))).thenReturn(expected);
DataStoreIterable actual = inMemoryStoreTransaction.loadObjects(projection, scope);
assertEquals(expected, actual);
verify(wrappedTransaction, times(1)).loadObjects(eq(projection), eq(scope));
}
use of com.yahoo.elide.core.datastore.DataStoreIterable in project elide by yahoo.
the class InMemoryStoreTransactionTest method testDataStoreRequiresInMemorySorting.
@Test
public void testDataStoreRequiresInMemorySorting() {
Map<String, Sorting.SortOrder> sortOrder = new HashMap<>();
sortOrder.put("title", Sorting.SortOrder.desc);
Sorting sorting = new SortingImpl(sortOrder, Book.class, dictionary);
EntityProjection projection = EntityProjection.builder().type(Book.class).sorting(sorting).build();
DataStoreIterable sortInMemory = new DataStoreIterableBuilder(books).sortInMemory(true).build();
when(wrappedTransaction.loadObjects(any(), eq(scope))).thenReturn(sortInMemory);
Collection<Object> loaded = Lists.newArrayList(inMemoryStoreTransaction.loadObjects(projection, scope));
verify(wrappedTransaction, times(1)).loadObjects(any(EntityProjection.class), eq(scope));
assertEquals(3, loaded.size());
List<String> bookTitles = loaded.stream().map((o) -> ((Book) o).getTitle()).collect(Collectors.toList());
assertEquals(bookTitles, Lists.newArrayList("Book 3", "Book 2", "Book 1"));
}
Aggregations