Dans src/test
Organisation
src/test/resources/
└── db-test/
├── 000-legacy/
| └── changelog-master.yml
├── 000-common/
| ├── <module>-changelog.yml
| └── <module>-data.csv
| └── changelog-master.yml
├── personne/
| └── api-privilege-data-changelog.yml
└── nomenclature/
├── api-nomenclature-data.changelog.yml
├── api-pool-data-changelog.yml
└── api-pool-data.csv
[...]
Utilisation
- c'est le changelog-master de
000-common
(ou celui de000-legacy
) qui charge la structure initiale de la BDD - Les tests d'intégration auront dorénavant leur changelog spécifique pour isoler les données de tests
- Ces changelogs sont gérés par l'utilitaire
fr.ubordeaux.vasco.back.utils.LiquibaseRunner
dont l'initialisation est gérée parAbstractTestContainersConfig
- à chaque démarrage de la classe de test
- la bdd doit être remise au propre (drop all)
- on charge le changelog-master de
000-common
ou celui de000-legacy
- on charge le changelog dédié à l'api testée
- Les classes des tests d'intégration doivent avoir le code suivant:
import static fr.ubordeauxvasco.back.utils.AbstractTestContainersConfig.COMMON_CHANGELOG_PATH;
class MonAPIIntegrationTest extends AbstractTestContainersConfig {
// tant que le legacy n'est pas traité pour cette classe
private static String LEGACY_MASTER_CHANGELOG_PATH = "db-test/000-legacy/changelog-master.yml";
// une fois que le legacy est traité pour cette classe
private static String NEWAPI_CHANGELOG_PATH = "db-test/module/api-changelog-data.yml";
@BeforeAll
static void injectTestData() throws CommandExecutionException {
liquibaseRunner_.dropAll();
// tant que le legacy n'est pas traité pour cette classe
liquibaseRunner_.update(LEGACY_MASTER_CHANGELOG_PATH);
// une fois que le legacy a été traité pour cette classe
liquibaseRunner_.update(COMMON_CHANGELOG_PATH);
liquibaseRunner_.update(NEWAPI_CHANGELOG_PATH);
}
// [... les tests ]
}