From 7a59844cb73bb00de0609f250f83b3064ef76342 Mon Sep 17 00:00:00 2001
From: Andreas Svanberg <andreass@dsv.su.se>
Date: Mon, 17 Feb 2025 15:51:52 +0100
Subject: [PATCH] Execute TestDataPopulators

---
 .../dsv/scipro/testdata/DataInitializer.java  | 47 +++++++++++++++++--
 1 file changed, 44 insertions(+), 3 deletions(-)

diff --git a/test-data/src/main/java/se/su/dsv/scipro/testdata/DataInitializer.java b/test-data/src/main/java/se/su/dsv/scipro/testdata/DataInitializer.java
index ac27c5ae40..8b157598c4 100644
--- a/test-data/src/main/java/se/su/dsv/scipro/testdata/DataInitializer.java
+++ b/test-data/src/main/java/se/su/dsv/scipro/testdata/DataInitializer.java
@@ -34,13 +34,16 @@ import se.su.dsv.scipro.security.auth.roles.Roles;
 import se.su.dsv.scipro.system.*;
 import se.su.dsv.scipro.util.Pair;
 
-public class DataInitializer implements Lifecycle {
+public class DataInitializer implements Lifecycle, BaseData, Factory {
 
     public static final int APPLICATION_PERIOD_START_MINUS_DAYS = 1;
     public static final int APPLICATION_PERIOD_END_PLUS_DAYS = 3;
     public static final int APPLICATION_PERIOD_COURSE_START_PLUS_DAYS = 5;
     public static final long RESEARCH_AREA_ID = 12L;
 
+    @Inject
+    private Collection<TestDataPopulator> testDataPopulators = new ArrayList<>();
+
     @Inject
     private UserService userService;
 
@@ -120,6 +123,9 @@ public class DataInitializer implements Lifecycle {
             createTarget();
             createStudentIdea();
             createRoughDraftApproval();
+            for (TestDataPopulator testDataPopulator : testDataPopulators) {
+                testDataPopulator.populate(this, this);
+            }
         }
         if (profile.getCurrentProfile() == Profiles.DEV && noAdminUser()) {
             createAdmin();
@@ -243,13 +249,18 @@ public class DataInitializer implements Lifecycle {
         sofia_student = createStudent("Sofia", 17);
     }
 
-    private User createStudent(String firstName, int identifier) {
+    private User createStudent(String firstName) {
         User user = createUser(firstName, STUDENT_LAST);
-        user.setIdentifier(identifier);
         createBeta(user);
         return user;
     }
 
+    private User createStudent(String firstName, int identifier) {
+        User user = createStudent(firstName);
+        user.setIdentifier(identifier);
+        return user;
+    }
+
     private User createEmployee(String firstName) {
         User user = createUser(firstName, EMPLOYEE_LAST);
         Unit u = createUnit();
@@ -2087,6 +2098,36 @@ public class DataInitializer implements Lifecycle {
         return entity;
     }
 
+    @Override
+    public ProjectType bachelor() {
+        return bachelorClass;
+    }
+
+    @Override
+    public ProjectType magister() {
+        return magisterClass;
+    }
+
+    @Override
+    public ProjectType master() {
+        return masterClass;
+    }
+
+    @Override
+    public User createAuthor(String firstName) {
+        return createStudent(firstName);
+    }
+
+    @Override
+    public User createSupervisor(String firstName) {
+        return createEmployee(firstName);
+    }
+
+    @Override
+    public User createReviewer(String firstName) {
+        return createEmployee(firstName);
+    }
+
     private static final class SimpleTextFile implements FileUpload {
 
         private final User uploader;