use of io.spine.client.ColumnFilter in project core-java by SpineEventEngine.
the class RecordStorageShould method update_entity_column_values.
@Test
public void update_entity_column_values() {
final Project.Status initialStatus = DONE;
// is used for documentation purposes.
@SuppressWarnings("UnnecessaryLocalVariable") final Project.Status statusAfterUpdate = CANCELLED;
final Int32Value initialStatusValue = Int32Value.newBuilder().setValue(initialStatus.getNumber()).build();
final ColumnFilter status = eq("projectStatusValue", initialStatusValue);
final CompositeColumnFilter aggregatingFilter = CompositeColumnFilter.newBuilder().setOperator(ALL).addFilter(status).build();
final EntityFilters filters = EntityFilters.newBuilder().addFilter(aggregatingFilter).build();
final RecordStorage<I> storage = getStorage();
final EntityQuery<I> query = EntityQueries.from(filters, storage);
final I id = newId();
final TestCounterEntity<I> entity = new TestCounterEntity<>(id);
entity.setStatus(initialStatus);
final EntityRecord record = newStorageRecord(id, newState(id));
final EntityRecordWithColumns recordWithColumns = create(record, entity, storage);
final FieldMask fieldMask = FieldMask.getDefaultInstance();
// Create the record.
storage.write(id, recordWithColumns);
final Iterator<EntityRecord> recordsBefore = storage.readAll(query, fieldMask);
assertSingleRecord(record, recordsBefore);
// Update the entity columns of the record.
entity.setStatus(statusAfterUpdate);
final EntityRecordWithColumns updatedRecordWithColumns = create(record, entity, storage);
storage.write(id, updatedRecordWithColumns);
final Iterator<EntityRecord> recordsAfter = storage.readAll(query, fieldMask);
assertFalse(recordsAfter.hasNext());
}
use of io.spine.client.ColumnFilter in project core-java by SpineEventEngine.
the class EntityQueryMatcherShould method match_Any_instances.
@Test
public void match_Any_instances() {
final String columnName = "column";
final Project someMessage = Sample.messageOfType(Project.class);
final Any actualValue = AnyPacker.pack(someMessage);
final EntityColumn column = mock(EntityColumn.class);
when(column.getType()).thenReturn(Any.class);
when(column.getStoredName()).thenReturn(columnName);
final EntityColumn.MemoizedValue value = mock(EntityColumn.MemoizedValue.class);
when(value.getSourceColumn()).thenReturn(column);
when(value.getValue()).thenReturn(actualValue);
final EntityRecord record = Sample.messageOfType(EntityRecord.class);
final Map<String, EntityColumn.MemoizedValue> columns = singletonMap(columnName, value);
final EntityRecordWithColumns recordWithColumns = createRecord(record, columns);
final Multimap<EntityColumn, ColumnFilter> filters = of(column, eq(columnName, actualValue));
final CompositeQueryParameter parameter = createParams(filters, ALL);
final QueryParameters parameters = QueryParameters.newBuilder().add(parameter).build();
final EntityQuery<?> query = createQuery(emptySet(), parameters);
final EntityQueryMatcher<?> matcher = new EntityQueryMatcher<>(query);
assertTrue(matcher.apply(recordWithColumns));
}
Aggregations