From 63310031cb3e207a9b0597d3357aa525fcc4a380 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Wed, 11 Sep 2019 16:41:37 +0200 Subject: [PATCH] #177 - Add tests for NOT IN. --- .../core/DefaultDatabaseClientUnitTests.java | 23 +++++++++++++++++++ .../r2dbc/query/QueryMapperUnitTests.java | 8 +++---- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/src/test/java/org/springframework/data/r2dbc/core/DefaultDatabaseClientUnitTests.java b/src/test/java/org/springframework/data/r2dbc/core/DefaultDatabaseClientUnitTests.java index 97b9c8f..f545b58 100644 --- a/src/test/java/org/springframework/data/r2dbc/core/DefaultDatabaseClientUnitTests.java +++ b/src/test/java/org/springframework/data/r2dbc/core/DefaultDatabaseClientUnitTests.java @@ -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); + } } diff --git a/src/test/java/org/springframework/data/r2dbc/query/QueryMapperUnitTests.java b/src/test/java/org/springframework/data/r2dbc/query/QueryMapperUnitTests.java index ba429cb..c5f8b21 100644 --- a/src/test/java/org/springframework/data/r2dbc/query/QueryMapperUnitTests.java +++ b/src/test/java/org/springframework/data/r2dbc/query/QueryMapperUnitTests.java @@ -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