From e7d6698c1178b3fa2fc396f8b3e90e156e9380ea Mon Sep 17 00:00:00 2001 From: Andreas Svanberg <andreass@dsv.su.se> Date: Mon, 17 Feb 2025 15:52:54 +0100 Subject: [PATCH] Document how to add new test data populators --- .../dsv/scipro/testdata/TestDataConfiguration.java | 2 ++ .../se/su/dsv/scipro/testdata/package-info.java | 8 ++++++++ .../scipro/testdata/populators/package-info.java | 13 +++++++++++++ 3 files changed, 23 insertions(+) create mode 100644 test-data/src/main/java/se/su/dsv/scipro/testdata/package-info.java create mode 100644 test-data/src/main/java/se/su/dsv/scipro/testdata/populators/package-info.java diff --git a/test-data/src/main/java/se/su/dsv/scipro/testdata/TestDataConfiguration.java b/test-data/src/main/java/se/su/dsv/scipro/testdata/TestDataConfiguration.java index f58b0eec77..ffd372628b 100644 --- a/test-data/src/main/java/se/su/dsv/scipro/testdata/TestDataConfiguration.java +++ b/test-data/src/main/java/se/su/dsv/scipro/testdata/TestDataConfiguration.java @@ -1,10 +1,12 @@ package se.su.dsv.scipro.testdata; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import se.su.dsv.scipro.war.PluginConfiguration; @Configuration(proxyBeanMethods = false) +@ComponentScan(basePackages = "se.su.dsv.scipro.testdata.populators") public class TestDataConfiguration implements PluginConfiguration { @Bean diff --git a/test-data/src/main/java/se/su/dsv/scipro/testdata/package-info.java b/test-data/src/main/java/se/su/dsv/scipro/testdata/package-info.java new file mode 100644 index 0000000000..6b93353f29 --- /dev/null +++ b/test-data/src/main/java/se/su/dsv/scipro/testdata/package-info.java @@ -0,0 +1,8 @@ +/** + * This package contains the infrastructure that is used when generating test data for the application. To add new test + * data to the system, add a new class to the {@link se.su.dsv.scipro.testdata.populators} package that implements the + * {@link se.su.dsv.scipro.testdata.TestDataPopulator} interface and annotate it with + * {@link org.springframework.stereotype.Service @Service}. Inject dependencies as needed using + * {@link jakarta.inject.Inject @Inject}. + */ +package se.su.dsv.scipro.testdata; diff --git a/test-data/src/main/java/se/su/dsv/scipro/testdata/populators/package-info.java b/test-data/src/main/java/se/su/dsv/scipro/testdata/populators/package-info.java new file mode 100644 index 0000000000..c9d116ca5a --- /dev/null +++ b/test-data/src/main/java/se/su/dsv/scipro/testdata/populators/package-info.java @@ -0,0 +1,13 @@ +/** + * Contains classes that populate the database with test data. + * <p> + * Prefer to use methods on the various services to create data, rather than directly interacting with the database + * using an {@link jakarta.persistence.EntityManager}. This is to make sure all business rules are enforced and that + * any additional logic is executed such as sending notifications or calculating statistics. + * + * @see se.su.dsv.scipro.testdata how to add new populators + * @see se.su.dsv.scipro.testdata.TestDataPopulator + * @see se.su.dsv.scipro.testdata.BaseData + * @see se.su.dsv.scipro.testdata.Factory + */ +package se.su.dsv.scipro.testdata.populators;