87: First version of integration test

This commit is contained in:
Tom Zhao 2025-04-07 15:48:37 +02:00
parent 8d5a082a6b
commit 185785582a

@ -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);
}
}