Skip to content

Commit 6d6b21e

Browse files
committed
DATAJDBC-204 - Add nested bean on test
1 parent 17c99a7 commit 6d6b21e

File tree

2 files changed

+172
-18
lines changed

2 files changed

+172
-18
lines changed

src/test/java/org/springframework/data/jdbc/repository/config/EnableJdbcAuditingHsqlIntegrationTests.java

Lines changed: 149 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@
3434

3535
import java.time.LocalDate;
3636
import java.time.LocalDateTime;
37+
import java.util.ArrayList;
38+
import java.util.List;
3739
import java.util.Optional;
3840
import java.util.concurrent.TimeUnit;
3941

@@ -57,31 +59,71 @@ public void auditForAnnotatedEntity() throws InterruptedException {
5759
LocalDateTime now = LocalDateTime.now();
5860

5961
AuditingAnnotatedDummyEntity entity = new AuditingAnnotatedDummyEntity();
60-
entity.setName("Spring Data");
62+
entity.setDateOfBirth(LocalDate.of(2000, 12, 4));
63+
AuditingName name = new AuditingName();
64+
name.setFirst("Spring");
65+
name.setLast("Data");
66+
entity.setName(name);
67+
// {
68+
// AuditingEmail email = new AuditingEmail();
69+
// email.setType("mobile");
70+
// email.setAddress("[email protected]");
71+
// entity.getEmails().add(email);
72+
// }
73+
// {
74+
// AuditingEmail email = new AuditingEmail();
75+
// email.setType("pc");
76+
// email.setAddress("[email protected]");
77+
// entity.getEmails().add(email);
78+
// }
79+
6180
repository.save(entity);
6281

63-
assertThat(entity.id).isNotNull();
82+
assertThat(entity.getId()).isNotNull();
6483
assertThat(entity.getCreatedBy()).isEqualTo("user01");
6584
assertThat(entity.getCreatedDate()).isAfter(now);
6685
assertThat(entity.getLastModifiedBy()).isEqualTo("user01");
6786
assertThat(entity.getLastModifiedDate()).isAfterOrEqualTo(entity.getCreatedDate());
6887
assertThat(entity.getLastModifiedDate()).isAfter(now);
69-
assertThat(repository.findById(entity.id).get()).isEqualTo(entity);
88+
assertThat(entity.getName().getId()).isNotNull();
89+
assertThat(entity.getName().getCreatedBy()).isEqualTo("user01");
90+
assertThat(entity.getName().getCreatedDate()).isAfter(now);
91+
assertThat(entity.getName().getLastModifiedBy()).isEqualTo("user01");
92+
assertThat(entity.getName().getLastModifiedDate()).isAfterOrEqualTo(entity.getName().getCreatedDate());
93+
assertThat(entity.getName().getLastModifiedDate()).isAfter(now);
94+
// assertThat(entity.getEmails().get(0).getId()).isNotNull();
95+
// assertThat(entity.getEmails().get(0).getCreatedBy()).isEqualTo("user01");
96+
// assertThat(entity.getEmails().get(0).getCreatedDate()).isAfter(now);
97+
// assertThat(entity.getEmails().get(0).getLastModifiedBy()).isEqualTo("user01");
98+
// assertThat(entity.getEmails().get(0).getLastModifiedDate()).isAfterOrEqualTo(entity.getEmails().get(0).getCreatedDate());
99+
// assertThat(entity.getEmails().get(0).getLastModifiedDate()).isAfter(now);
100+
// assertThat(entity.getEmails().get(1).getId()).isNotNull();
101+
// assertThat(entity.getEmails().get(1).getCreatedBy()).isEqualTo("user01");
102+
// assertThat(entity.getEmails().get(1).getCreatedDate()).isAfter(now);
103+
// assertThat(entity.getEmails().get(1).getLastModifiedBy()).isEqualTo("user01");
104+
// assertThat(entity.getEmails().get(1).getLastModifiedDate()).isAfterOrEqualTo(entity.getEmails().get(0).getCreatedDate());
105+
// assertThat(entity.getEmails().get(1).getLastModifiedDate()).isAfter(now);
106+
assertThat(repository.findById(entity.getId()).get()).isEqualTo(entity);
70107

71108
LocalDateTime beforeCreatedDate = entity.getCreatedDate();
72109
LocalDateTime beforeLastModifiedDate = entity.getLastModifiedDate();
73110

74111
TimeUnit.MILLISECONDS.sleep(100);
75112
AuditingConfiguration.currentAuditor = "user02";
76113

77-
entity.setName("Spring Data JDBC");
114+
name.setFirst("Spring");
115+
name.setLast("Data JDBC");
78116
repository.save(entity);
79117

80118
assertThat(entity.getCreatedBy()).isEqualTo("user01");
81119
assertThat(entity.getCreatedDate()).isEqualTo(beforeCreatedDate);
82120
assertThat(entity.getLastModifiedBy()).isEqualTo("user02");
83121
assertThat(entity.getLastModifiedDate()).isAfter(beforeLastModifiedDate);
84-
assertThat(repository.findById(entity.id).get()).isEqualTo(entity);
122+
assertThat(entity.getName().getCreatedBy()).isEqualTo("user01");
123+
assertThat(entity.getName().getCreatedDate()).isEqualTo(beforeCreatedDate);
124+
assertThat(entity.getName().getLastModifiedBy()).isEqualTo("user02");
125+
assertThat(entity.getName().getLastModifiedDate()).isAfter(beforeLastModifiedDate);
126+
assertThat(repository.findById(entity.getId()).get()).isEqualTo(entity);
85127
}
86128
}
87129

@@ -93,13 +135,35 @@ public void noAnnotatedEntity() {
93135
DummyEntityRepository repository = context.getBean(DummyEntityRepository.class);
94136

95137
DummyEntity entity = new DummyEntity();
96-
entity.setName("Spring Data");
138+
entity.setDateOfBirth(LocalDate.of(2000, 12, 4));
139+
Name name = new Name();
140+
name.setFirst("Spring");
141+
name.setLast("Data");
142+
entity.setName(name);
143+
{
144+
Email email = new Email();
145+
email.setType("mobile");
146+
email.setAddress("[email protected]");
147+
entity.getEmails().add(email);
148+
}
149+
{
150+
Email email = new Email();
151+
email.setType("pc");
152+
email.setAddress("[email protected]");
153+
entity.getEmails().add(email);
154+
}
155+
97156
repository.save(entity);
98157

99-
assertThat(entity.id).isNotNull();
100-
assertThat(repository.findById(entity.id).get()).isEqualTo(entity);
158+
assertThat(entity.getId()).isNotNull();
159+
assertThat(entity.getName().getId()).isNotNull();
160+
assertThat(entity.getEmails().get(0).getId()).isNotNull();
161+
assertThat(entity.getEmails().get(1).getId()).isNotNull();
162+
assertThat(repository.findById(entity.getId()).get()).isEqualTo(entity);
163+
164+
name.setFirst("Spring");
165+
name.setLast("Data JDBC");
101166

102-
entity.setName("Spring Data JDBC");
103167
repository.save(entity);
104168

105169
assertThat(repository.findById(entity.id).get()).isEqualTo(entity);
@@ -117,10 +181,14 @@ public void customizeEnableJdbcAuditingAttributes() {
117181
CustomizeAuditingConfiguration1.currentDateTime = currentDateTime;
118182

119183
AuditingAnnotatedDummyEntity entity = new AuditingAnnotatedDummyEntity();
120-
entity.setName("Spring Data JDBC");
184+
AuditingName name = new AuditingName();
185+
name.setFirst("Spring");
186+
name.setLast("Data JDBC");
187+
entity.setName(name);
188+
121189
repository.save(entity);
122190

123-
assertThat(entity.id).isNotNull();
191+
assertThat(entity.getId()).isNotNull();
124192
assertThat(entity.getCreatedBy()).isEqualTo("custom user");
125193
assertThat(entity.getCreatedDate()).isEqualTo(currentDateTime);
126194
assertThat(entity.getLastModifiedBy()).isNull();
@@ -132,10 +200,14 @@ public void customizeEnableJdbcAuditingAttributes() {
132200
AuditingAnnotatedDummyEntityRepository repository = context.getBean(AuditingAnnotatedDummyEntityRepository.class);
133201

134202
AuditingAnnotatedDummyEntity entity = new AuditingAnnotatedDummyEntity();
135-
entity.setName("Spring Data JDBC");
203+
AuditingName name = new AuditingName();
204+
name.setFirst("Spring");
205+
name.setLast("Data JDBC");
206+
entity.setName(name);
207+
136208
repository.save(entity);
137209

138-
assertThat(entity.id).isNotNull();
210+
assertThat(entity.getId()).isNotNull();
139211
assertThat(entity.getCreatedBy()).isEqualTo("user");
140212
assertThat(entity.getCreatedDate()).isNull();
141213
assertThat(entity.getLastModifiedBy()).isEqualTo("user");
@@ -151,7 +223,41 @@ interface AuditingAnnotatedDummyEntityRepository extends CrudRepository<Auditing
151223
static class AuditingAnnotatedDummyEntity {
152224
@Id
153225
private Long id;
154-
private String name;
226+
private LocalDate dateOfBirth;
227+
private AuditingName name;
228+
// private List<AuditingEmail> emails = new ArrayList<>();
229+
@CreatedBy
230+
private String createdBy;
231+
@CreatedDate
232+
private LocalDateTime createdDate;
233+
@LastModifiedBy
234+
private String lastModifiedBy;
235+
@LastModifiedDate
236+
private LocalDateTime lastModifiedDate;
237+
}
238+
239+
@Data
240+
static class AuditingName {
241+
@Id
242+
private Long id;
243+
private String first;
244+
private String last;
245+
@CreatedBy
246+
private String createdBy;
247+
@CreatedDate
248+
private LocalDateTime createdDate;
249+
@LastModifiedBy
250+
private String lastModifiedBy;
251+
@LastModifiedDate
252+
private LocalDateTime lastModifiedDate;
253+
}
254+
255+
@Data
256+
static class AuditingEmail {
257+
@Id
258+
private Long id;
259+
private String type;
260+
private String address;
155261
@CreatedBy
156262
private String createdBy;
157263
@CreatedDate
@@ -169,7 +275,25 @@ interface DummyEntityRepository extends CrudRepository<DummyEntity, Long> {
169275
static class DummyEntity {
170276
@Id
171277
private Long id;
172-
private String name;
278+
private LocalDate dateOfBirth;
279+
private Name name;
280+
private List<Email> emails = new ArrayList<>();
281+
}
282+
283+
@Data
284+
static class Name {
285+
@Id
286+
private Long id;
287+
private String first;
288+
private String last;
289+
}
290+
291+
@Data
292+
static class Email {
293+
@Id
294+
private Long id;
295+
private String type;
296+
private String address;
173297
}
174298

175299
@ComponentScan("org.springframework.data.jdbc.testing")
@@ -185,7 +309,16 @@ Class<?> testClass() {
185309
NamingStrategy namingStrategy() {
186310
return new NamingStrategy() {
187311
public String getTableName(Class<?> type) {
188-
return "DummyEntity";
312+
if (type.getSimpleName().endsWith("DummyEntity")) {
313+
return "DummyEntity";
314+
}
315+
if (type.getSimpleName().endsWith("Name")) {
316+
return "Name";
317+
}
318+
if (type.getSimpleName().endsWith("Email")) {
319+
return "Email";
320+
}
321+
return type.getSimpleName();
189322
}
190323
};
191324
}
Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,29 @@
11
CREATE TABLE DummyEntity (
22
id BIGINT GENERATED BY DEFAULT AS IDENTITY ( START WITH 1 ) PRIMARY KEY,
3-
name VARCHAR(128),
3+
dateOfBirth DATE,
44
createdBy VARCHAR(128),
55
createdDate TIMESTAMP,
66
lastModifiedBy VARCHAR(128),
77
lastModifiedDate TIMESTAMP
8-
);
8+
);
9+
CREATE TABLE Name (
10+
id BIGINT GENERATED BY DEFAULT AS IDENTITY ( START WITH 1 ) PRIMARY KEY,
11+
DummyEntity BIGINT NOT NULL,
12+
first VARCHAR(128),
13+
last VARCHAR(128),
14+
createdBy VARCHAR(128),
15+
createdDate TIMESTAMP,
16+
lastModifiedBy VARCHAR(128),
17+
lastModifiedDate TIMESTAMP
18+
);
19+
CREATE TABLE EMail (
20+
id BIGINT GENERATED BY DEFAULT AS IDENTITY ( START WITH 1 ) PRIMARY KEY,
21+
DummyEntity BIGINT NOT NULL,
22+
DummyEntity_key BIGINT NOT NULL,
23+
type VARCHAR(10),
24+
address VARCHAR(256),
25+
createdBy VARCHAR(128),
26+
createdDate TIMESTAMP,
27+
lastModifiedBy VARCHAR(128),
28+
lastModifiedDate TIMESTAMP
29+
);

0 commit comments

Comments
 (0)