use of com.scalar.db.api.PutIf in project scalardb by scalar-labs.
the class DynamoMutationTest method getConditionBindMap_PutWithPutIfGiven_ShouldReturnBindMap.
@Test
public void getConditionBindMap_PutWithPutIfGiven_ShouldReturnBindMap() {
// Arrange
PutIf conditions = new PutIf(new ConditionalExpression(ANY_NAME_3, ANY_INT_VALUE, Operator.EQ), new ConditionalExpression(ANY_NAME_4, ANY_INT_VALUE, Operator.GT));
Put put = preparePut().withCondition(conditions);
Map<String, AttributeValue> expected = new HashMap<>();
expected.put(DynamoOperation.CONDITION_VALUE_ALIAS + "0", AttributeValue.builder().n(String.valueOf(ANY_INT_3)).build());
expected.put(DynamoOperation.CONDITION_VALUE_ALIAS + "1", AttributeValue.builder().n(String.valueOf(ANY_INT_3)).build());
DynamoMutation dynamoMutation = new DynamoMutation(put, metadata);
// Act
Map<String, AttributeValue> actual = dynamoMutation.getConditionBindMap();
// Assert
assertThat(actual).isEqualTo(expected);
}
use of com.scalar.db.api.PutIf in project scalardb by scalar-labs.
the class ConditionalQueryBuilderTest method visit_PutIfAcceptCalled_ShouldCallWhere.
@Test
public void visit_PutIfAcceptCalled_ShouldCallWhere() {
// Arrange
PutIf condition = new PutIf(new ConditionalExpression(ANY_NAME_1, ANY_INT_VALUE, Operator.EQ), new ConditionalExpression(ANY_NAME_2, ANY_INT_VALUE, Operator.GT));
ConditionalQueryBuilder builder = new ConditionalQueryBuilder(select);
// Act
condition.accept(builder);
// Assert
verify(select).and(DSL.field("r.values[\"" + ANY_NAME_1 + "\"]").equal(ANY_INT));
verify(select).and(DSL.field("r.values[\"" + ANY_NAME_2 + "\"]").greaterThan(ANY_INT));
}
use of com.scalar.db.api.PutIf in project scalardb by scalar-labs.
the class ConditionalQueryBuilderTest method getQuery_PutIfAcceptCalled_ShouldReturnQuery.
@Test
public void getQuery_PutIfAcceptCalled_ShouldReturnQuery() {
// Arrange
SelectConditionStep<org.jooq.Record> testSelect = DSL.using(SQLDialect.DEFAULT).selectFrom("Record r").where(DSL.field("r.id").eq(ANY_ID));
PutIf condition = ConditionBuilder.putIf(ConditionBuilder.column(ANY_NAME_1).isEqualToInt(ANY_INT_VALUE.getAsInt())).and(ConditionBuilder.column(ANY_NAME_2).isGreaterThanInt(ANY_INT_VALUE.getAsInt())).and(ConditionBuilder.column(ANY_NAME_3).isNullInt()).and(ConditionBuilder.column(ANY_NAME_4).isNotNullInt()).build();
ConditionalQueryBuilder builder = new ConditionalQueryBuilder(testSelect);
// Act
condition.accept(builder);
String actual = builder.getQuery();
// Assert
assertThat(actual).isEqualTo("select * from Record r where (r.id = '" + ANY_ID + "' and r.values[\"" + ANY_NAME_1 + "\"]" + " = " + ANY_INT + " and r.values[\"" + ANY_NAME_2 + "\"]" + " > " + ANY_INT + " and (NOT IS_DEFINED(r.values[\"" + ANY_NAME_3 + "\"])) and (IS_DEFINED(r.values[\"" + ANY_NAME_4 + "\"])))");
}
use of com.scalar.db.api.PutIf in project scalardb by scalar-labs.
the class CosmosMutationTest method makeConditionalQuery_MutationWithConditionsGiven_ShouldReturnQuery.
@Test
public void makeConditionalQuery_MutationWithConditionsGiven_ShouldReturnQuery() {
// Arrange
PutIf conditions = new PutIf(new ConditionalExpression(ANY_NAME_3, ANY_INT_VALUE, Operator.EQ), new ConditionalExpression(ANY_NAME_4, ANY_INT_VALUE, Operator.GT));
Put put = preparePut().withCondition(conditions);
CosmosMutation cosmosMutation = new CosmosMutation(put, metadata);
String id = cosmosMutation.getId();
// Act
String actual = cosmosMutation.makeConditionalQuery();
// Assert
assertThat(actual).isEqualTo("select * from Record r where (r.id = '" + id + "' and r.values[\"" + ANY_NAME_3 + "\"]" + " = " + ANY_INT_3 + " and r.values[\"" + ANY_NAME_4 + "\"]" + " > " + ANY_INT_3 + ")");
}
use of com.scalar.db.api.PutIf in project scalardb by scalar-labs.
the class UpdateStatementHandlerTest method prepare_PutOperationWithIfGiven_ShouldCallAccept.
@Test
public void prepare_PutOperationWithIfGiven_ShouldCallAccept() {
// Arrange
configureBehavior(null);
put = preparePutWithClusteringKey();
PutIf putIf = Mockito.spy(new PutIf(new ConditionalExpression(ANY_NAME_4, new IntValue(ANY_INT_2), Operator.EQ)));
put.withCondition(putIf);
// Act
handler.prepare(put);
// Assert
verify(putIf).accept(any(ConditionSetter.class));
}
Aggregations