diff --git a/core/src/test/java/se/su/dsv/scipro/project/split/SplitOrRestartProjectServiceIntegrationTest.java b/core/src/test/java/se/su/dsv/scipro/project/split/SplitOrRestartProjectServiceIntegrationTest.java new file mode 100644 index 0000000000..a7dec54c80 --- /dev/null +++ b/core/src/test/java/se/su/dsv/scipro/project/split/SplitOrRestartProjectServiceIntegrationTest.java @@ -0,0 +1,88 @@ +package se.su.dsv.scipro.project.split; + +import jakarta.inject.Inject; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.BeforeEach; +import se.su.dsv.scipro.project.Project; +import se.su.dsv.scipro.project.ProjectStatus; +import se.su.dsv.scipro.system.DegreeType; +import se.su.dsv.scipro.system.ProjectType; +import se.su.dsv.scipro.system.User; +import se.su.dsv.scipro.test.IntegrationTest; + +import java.time.LocalDate; + +import static org.junit.Assert.assertTrue; +import static se.su.dsv.scipro.project.split.SplitOrRestartProjectService.SplittableStatus; +import static se.su.dsv.scipro.project.split.SplitOrRestartProjectService.SplittableStatusRecord; + +public class SplitOrRestartProjectServiceIntegrationTest extends IntegrationTest { + @Inject + private SplitOrRestartProjectService sorpService; + + private Project parentProject; + private User supervisor; + private User reviwer; + private User author1; + private User author2; + + @BeforeEach + public void setUp() { + ProjectType bachelor = createProjectType(); + this.parentProject = createProject(bachelor, ProjectStatus.ACTIVE); + /* + user = createUser(); + Unit unit = new Unit(); + unit.setTitle("DSV IT"); + user.setUnit(save(unit)); + + */ + } + + @Test + public void project_must_exist() { + SplittableStatusRecord record = sorpService.getSplittableStatus(0); + SplittableStatus status = record.splittableStatus(); + + assertTrue(status == SplittableStatus.NOT_EXIST); + } + + @Test + public void project_must_be_active() { + parentProject.setProjectStatus(ProjectStatus.INACTIVE); + parentProject = save(parentProject); + + SplittableStatusRecord record = sorpService.getSplittableStatus(parentProject.getId()); + SplittableStatus status = record.splittableStatus(); + + assertTrue(status == SplittableStatus.NOT_ACTIVE); + } + + + + private ProjectType createProjectType() { + ProjectType projectType = new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor"); + save(projectType); + return projectType; + } + + private Project createProject(ProjectType projectType, ProjectStatus active) { + User headSupervisor = save( + User.builder().firstName("John").lastName("Doe").emailAddress("john@example.com").build() + ); + Project project = new Project(); + project.setTitle("Some title"); + project.setProjectType(projectType); + project.setProjectStatus(active); + project.setHeadSupervisor(headSupervisor); + project.setStartDate(LocalDate.now()); + project = save(project); + System.out.println(project); + return project; + } + + private User createUser() { + User user = User.builder().firstName("Bob").lastName("Sponge").emailAddress("bob@example.com").build(); + return save(user); + } +}