@Test
void testSaveUser() {
UserEntity user = repository.save(new UserEntity(
"Homer Simpson",
"homer@simpson.net")
);
assertThat(user).isNotNull();
assertThat(user.getName()).isEqualTo("Homer Simpson");
}
Julien Roy - Sofware Architect
@Test
void testSaveUser() {
UserEntity user = repository.save(new UserEntity(
"Homer Simpson",
"homer@simpson.net")
);
assertThat(user).isNotNull();
assertThat(user.getName()).isEqualTo("Homer Simpson");
}
select * from user;
------------ USER ------------
ID | NAME | EMAIL
1 | | homer@simpson.net
@Test
void testSaveUserWithFind() {
UserEntity savedUser = repository.save(new UserEntity(
"Lisa Simpson",
"lisa@simpson.net")
);
UserEntity user = repository.getOne(savedUser.getId());
assertThat(user).isNotNull();
assertThat(user.getName()).isEqualTo("Lisa Simpson");
}
select * from user;
------------ USER ------------
ID | NAME | EMAIL
1 | | lisa@simpson.net
@Entity(name = "user")
public class UserEntity {
@Id
@GeneratedValue(generator = "user_seq")
private Long id;
@Transient
private String name;
private String email;
public UserEntity(String name, String email) {
this.name = name;
this.email = email;
}
}
@Test
@ExpectedDatabase("expected-users.xml")
void testSaveUser() {
repository.saveAndFlush(new UserEntity(
"Homer Simpson",
"homer@simpson.net")
);
}
<?xml version="1.0" encoding="UTF-8"?>
<dataset>
<User id="1" name="Homer Simpson" email="homer@simpson.net"/>
</dataset>
Manque de souplesse dans les assertions
Difficulté de composition
XML :'(
Assertions du contenu en DB
Créée par Régis Pouiller en 2014
Module AssertJ ( Joel Costigliola, Stefano Cordio )
Syntaxe fluide
Version 3.0.0
Compatible Java >= 8
AssertDbConnection
AssertDbConnectionFactory
Table / Request / Changes
Row / Column / Value
isNull / isText / isNumber / …
isEqualTo / isNotEqualTo / isBefore / isCloseTo / …
is / isNot / has / …
class UserRepositoryAssertJDBTest {
@Autowired
private DataSource dataSource;
private AssertDbConnection assertDb;
@BeforeEach
void initAssertDbConnection() {
assertDb = AssertDbConnectionFactory.of(dataSource).create();
}
@Test
void testSaveUser_Table() {
repository.saveAndFlush(
new UserEntity("Homer Simpson", "homer@simpson.net")
);
Table table = assertDb.table("user").build();
assertThat(table)
.hasNumberOfRows(1)
.row(0)
.value("id").isEqualTo(1)
.value("name").isEqualTo("Homer Simpson")
.value("email").isEqualTo("homer@simpson.net");
}
@Test
void testSaveUser_Request() {
repository.saveAndFlush(
new UserEntity("Homer Simpson", "homer@simpson.net")
);
Request request = assertDb.request(
"select * from user where email like ?;"
).parameters("%@simpson.net").build();
assertThat(request).hasNumberOfRows(1)
.row(0)
.value("id").isEqualTo(1)
.value("name").isEqualTo("Homer Simpson")
.value("email").isEqualTo("homer@simpson.net");
}
@Test
void testSaveUser_Changes() {
Changes changes = assertDb.changes().build();
changes.setStartPointNow();
repository.saveAndFlush(
new UserEntity("Homer Simpson", "homer@simpson.net")
);
changes.setEndPointNow();
assertThat(changes)
.hasNumberOfChanges(1)
.ofCreationOnTable("user")
.change(0)
.rowAtEndPoint()
.value("name").isEqualTo("Homer Simpson");
}
Table table = assertDb.table("user").build();
// Output the content of the table in the console
Outputs.output(table).toConsole();
[USERS table]
|----------|--------------|------------------|
| ID | NAME | EMAIL |
| (NUMBER) | (TEXT) | (TEXT) |
|----------|--------------|------------------|
| 1 | Lisa Simpson | lisa@simpson.net |
|--------------------------------------------|
@Test
void testSaveUser_Conditions() {
repository.saveAndFlush(
new UserEntity("Homer Simpson", "homer@simpson.net")
);
Condition<String> aSimpson = new Condition<>(
s -> s != null && s.endsWith("Simpson"),
"is simpson"
);
assertThat(assertDb.table("user").build())
.row(0)
.value("name").is(aSimpson);
}
@Test
void testSaveUser_SoftAssertions() {
repository.saveAndFlush(new UserEntity(
"Lisa Simpson",
"lisa@simpson.net"));
SoftAssertions soft = new SoftAssertions();
soft.assertThat(assertDb.table("user").build())
.row(0).value("name").isEqualTo("Lisa Simpson");
soft.assertThat(assertDb.table("family").build())
.row(0).value("name").isEqualTo("Simpson");
soft.assertAll();
}
@Test
void testSaveUser_LocalDate() {
repository.saveAndFlush(
new UserEntity("Homer Simpson", "homer@simpson.net", "1956-05-12")
);
assertThat(assertDb.table("user").build())
.row(0)
.value("birthdate").isEqualTo(LocalDate.of(1956, 5, 12));
}
AssertJ Core 4
Java 17
Amélioration du support JSON
Assertions du schema
Ce que vous voulez !
Créée par Ninja Squad
Peuple la base de données
Java "fluent" API
DSL Kotlin
Feedback