Adloun

Spring Boot : écrire le serveur (école d'ingénieur) · Chapitre 10 · Application directe du cours

Tester le dépôt sur PostgreSQL

PostgreSQL et les migrations · niveau 2

Énoncé

Écrire un test en tranche JPA, sur PostgreSQL, de la recherche du catalogue : casse ignorée (« ÉTRANGER »), filtres absents, rayon inconnu.

Corrigé


/** Exercice 10.6 : la requête du dépôt, éprouvée sur PostgreSQL et non sur H2. */
@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@Import(BaseDeTest.class)
class Ex6DepotTest {

    @Autowired
    LivreDepot livres;

    @Test
    void laRechercheIgnoreLaCasseEtLesFiltresAbsents() {
        assertThat(livres.chercher(null, "ÉTRANGER")).extracting(Livre::getTitre).containsExactly("L’Étranger");
        assertThat(livres.chercher("Littérature", null)).hasSize(2);
        assertThat(livres.chercher(null, null)).hasSize(6);
    }

    @Test
    void unRayonInconnuDonneUneListeVide() {
        assertThat(livres.chercher("Cuisine", null)).isEmpty();
    }
}

Sans replace = NONE, @DataJpaTest chercherait une base en mémoire à substituer, et n'en trouverait plus. Les données viennent des migrations, appliquées par Flyway au démarrage du conteneur ; chaque test est annulé à la fin (@DataJpaTest est transactionnel). Le deuxième appel est exactement celui qui échouait sans cast.

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →