#177 - Add tests for NOT IN.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user