#177 - Add tests for NOT IN.

This commit is contained in:
Mark Paluch
2019-09-11 16:41:37 +02:00
parent 353a7e7037
commit 63310031cb
2 changed files with 26 additions and 5 deletions

View File

@@ -16,6 +16,7 @@
package org.springframework.data.r2dbc.core;
import static org.mockito.Mockito.*;
import static org.springframework.data.r2dbc.query.Criteria.*;
import io.r2dbc.spi.Connection;
import io.r2dbc.spi.ConnectionFactory;
@@ -260,4 +261,26 @@ public class DefaultDatabaseClientUnitTests {
verify(statement).bind(0, "foo");
}
@Test // gh-177
public void deleteNotInShouldRenderCorrectQuery() {
Statement statement = mock(Statement.class);
when(connection.createStatement("DELETE FROM tab WHERE tab.pole = $1 AND tab.id NOT IN ($2, $3)"))
.thenReturn(statement);
when(statement.execute()).thenReturn(Mono.empty());
DefaultDatabaseClient databaseClient = (DefaultDatabaseClient) DatabaseClient.builder()
.connectionFactory(connectionFactory)
.dataAccessStrategy(new DefaultReactiveDataAccessStrategy(PostgresDialect.INSTANCE)).build();
databaseClient.delete().from("tab").matching(where("pole").is("foo").and("id").notIn(1, 2)) //
.then() //
.as(StepVerifier::create) //
.verifyComplete();
verify(statement).bind(0, "foo");
verify(statement).bind(1, (Object) 1);
verify(statement).bind(2, (Object) 2);
}
}

View File

@@ -20,15 +20,13 @@ import static org.mockito.Mockito.*;
import static org.springframework.data.domain.Sort.Order.*;
import org.junit.Test;
import org.springframework.data.domain.Sort;
import org.springframework.data.r2dbc.convert.MappingR2dbcConverter;
import org.springframework.data.r2dbc.convert.R2dbcConverter;
import org.springframework.data.r2dbc.dialect.BindMarkersFactory;
import org.springframework.data.r2dbc.dialect.BindTarget;
import org.springframework.data.r2dbc.mapping.SettableValue;
import org.springframework.data.r2dbc.query.BoundCondition;
import org.springframework.data.r2dbc.query.Criteria;
import org.springframework.data.r2dbc.query.QueryMapper;
import org.springframework.data.relational.core.mapping.Column;
import org.springframework.data.relational.core.mapping.RelationalMappingContext;
import org.springframework.data.relational.core.sql.Table;
@@ -158,14 +156,14 @@ public class QueryMapperUnitTests {
assertThat(bindings.getCondition().toString()).isEqualTo("person.name IN (?[$1], ?[$2], ?[$3])");
}
@Test // gh-64
@Test // gh-64, gh-177
public void shouldMapIsNotIn() {
Criteria criteria = Criteria.where("name").notIn("a", "b", "c");
BoundCondition bindings = map(criteria);
assertThat(bindings.getCondition().toString()).isEqualTo("NOT person.name IN (?[$1], ?[$2], ?[$3])");
assertThat(bindings.getCondition().toString()).isEqualTo("person.name NOT IN (?[$1], ?[$2], ?[$3])");
}
@Test // gh-64