Browse Source

Add test to verify interface projections through R2dbcEntityTemplate.

See #1690
pull/1701/head
Mark Paluch 2 years ago
parent
commit
40ba2c99bf
No known key found for this signature in database
GPG Key ID: 55BC6374BAA9D973
  1. 31
      spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/core/R2dbcEntityTemplateUnitTests.java

31
spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/core/R2dbcEntityTemplateUnitTests.java

@ -17,6 +17,7 @@ package org.springframework.data.r2dbc.core; @@ -17,6 +17,7 @@ package org.springframework.data.r2dbc.core;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*;
import static org.springframework.data.relational.core.query.Criteria.*;
import io.r2dbc.spi.R2dbcType;
import io.r2dbc.spi.test.MockColumnMetadata;
@ -87,8 +88,6 @@ public class R2dbcEntityTemplateUnitTests { @@ -87,8 +88,6 @@ public class R2dbcEntityTemplateUnitTests {
@Test // gh-220
void shouldCountBy() {
MockRowMetadata metadata = MockRowMetadata.builder()
.columnMetadata(MockColumnMetadata.builder().name("name").type(R2dbcType.VARCHAR).build()).build();
MockResult result = MockResult.builder().row(MockRow.builder().identified(0, Long.class, 1L).build()).build();
recorder.addStubbing(s -> s.startsWith("SELECT"), result);
@ -104,11 +103,28 @@ public class R2dbcEntityTemplateUnitTests { @@ -104,11 +103,28 @@ public class R2dbcEntityTemplateUnitTests {
assertThat(statement.getBindings()).hasSize(1).containsEntry(0, Parameter.from("Walter"));
}
@Test // GH-1690
void shouldApplyInterfaceProjection() {
MockRowMetadata metadata = MockRowMetadata.builder()
.columnMetadata(MockColumnMetadata.builder().name("THE_NAME").type(R2dbcType.VARCHAR).build()).build();
MockResult result = MockResult.builder()
.row(MockRow.builder().identified("THE_NAME", Object.class, "Walter").metadata(metadata).build()).build();
recorder.addStubbing(s -> s.startsWith("SELECT"), result);
entityTemplate.select(Person.class) //
.from("foo") //
.as(PersonProjection.class) //
.matching(Query.query(Criteria.where("name").is("Walter"))) //
.all() //
.as(StepVerifier::create) //
.assertNext(actual -> assertThat(actual.getName()).isEqualTo("Walter")).verifyComplete();
}
@Test // gh-469
void shouldProjectExistsResult() {
MockRowMetadata metadata = MockRowMetadata.builder()
.columnMetadata(MockColumnMetadata.builder().name("name").type(R2dbcType.VARCHAR).build()).build();
MockResult result = MockResult.builder().row(MockRow.builder().identified(0, Object.class, null).build()).build();
recorder.addStubbing(s -> s.startsWith("SELECT"), result);
@ -271,7 +287,7 @@ public class R2dbcEntityTemplateUnitTests { @@ -271,7 +287,7 @@ public class R2dbcEntityTemplateUnitTests {
recorder.addStubbing(s -> s.startsWith("DELETE"), result);
entityTemplate.delete(Query.query(Criteria.where("name").is("Walter")), Person.class) //
entityTemplate.delete(Query.query(where("name").is("Walter")), Person.class) //
.as(StepVerifier::create) //
.expectNext(1L) //
.verifyComplete();
@ -564,6 +580,11 @@ public class R2dbcEntityTemplateUnitTests { @@ -564,6 +580,11 @@ public class R2dbcEntityTemplateUnitTests {
}
}
interface PersonProjection {
String getName();
}
record VersionedPerson(@Id String id, @Version long version, String name) {
public VersionedPerson withId(String id) {

Loading…
Cancel
Save