Aller au contenu principal

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 de 000-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 par AbstractTestContainersConfig
  • à 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 de 000-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 ]
}