2828 Give project start date its own attribute instead of stealing audit data

This commit is contained in:
Andreas Svanberg 2022-08-31 14:49:58 +02:00
parent f84594665d
commit 5ece9dda93
180 changed files with 588 additions and 318 deletions
core/src
main
test/java/se/su/dsv/scipro
activityplan
checklist
crosscutting
finalseminar
finalthesis
forum
forummail
group
match
milestones/service/impl
notifications
peer
project
report
reviewing
system
test
daisy-integration/src
main/java/se/su/dsv/scipro
test/java/se/su/dsv/scipro
view/src

@ -145,7 +145,7 @@ public class DataInitializer implements Lifecycle {
}
private void createProject(String title, User headSupervisor, User student1, User student2, User reviewer) {
Project project = Project.builder().title(title).projectType(bachelorClass).build();
Project project = Project.builder().title(title).projectType(bachelorClass).startDate(LocalDate.now().plusDays(2)).build();
project.setHeadSupervisor(headSupervisor);
project.addProjectParticipant(student2);
project.addProjectParticipant(student1);

@ -35,6 +35,7 @@ import java.io.InputStream;
import java.net.URI;
import java.nio.file.*;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@ -414,7 +415,7 @@ public class ZipReporter implements Reporter {
dt("Type"), dd(text(project.getProjectType().getName())),
dt("Credits"), dd(text(Integer.toString(project.getCredits()))),
dt("Status"), dd(text(project.getProjectStatus().name())),
dt("Created"), dd(text(dateString(project.getDateCreated()))),
dt("Created"), dd(text(dateString(project.getStartDate()))),
dt("Research area"), dd(text(Optional.ofNullable(project.getResearchArea()).map(ResearchArea::getTitle).orElse("None"))),
dt("Language"), dd(text(Optional.ofNullable(project.getLanguage()).map(Language::name).orElse("None")))
))
@ -591,6 +592,10 @@ public class ZipReporter implements Reporter {
return dateFormat.format(date);
}
private String dateString(final LocalDate date) {
return date.toString();
}
private void copyFiles(final FileSystem zipFileFS, final List<FileDescription> all) throws IOException {
final Path uploadedFiles = zipFileFS.getPath("Attachments");
Files.createDirectories(uploadedFiles);

@ -7,28 +7,27 @@ import se.su.dsv.scipro.milestones.dataobjects.MilestoneActivityTemplate;
import se.su.dsv.scipro.milestones.dataobjects.MilestonePhaseTemplate;
import se.su.dsv.scipro.system.ProjectType;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.time.LocalDate;
import java.util.*;
@Transactional
public interface MilestoneActivityTemplateRepository extends JpaRepository<MilestoneActivityTemplate, Long>, QueryDslPredicateExecutor<MilestoneActivityTemplate> {
List<MilestoneActivityTemplate> findActivities(MilestoneActivityTemplate.Type type, ProjectType projectType, Date projectStartDate);
List<MilestoneActivityTemplate> findActivities(MilestoneActivityTemplate.Type type, ProjectType projectType, LocalDate projectStartDate);
List<MilestoneActivityTemplate> findAllActivitiesByProjectType(MilestoneActivityTemplate.Type type, Collection<ProjectType> projectType);
List<MilestoneActivityTemplate> findAllActivitiesInOrder(MilestoneActivityTemplate.Type type, ProjectType projectType, Date projectStartDate);
List<MilestoneActivityTemplate> findAllActivitiesInOrder(MilestoneActivityTemplate.Type type, ProjectType projectType, LocalDate projectStartDate);
List<MilestoneActivityTemplate> findByMilestonePhase(MilestonePhaseTemplate milestonePhaseTemplate);
List<MilestoneActivityTemplate> findActiveByPhase(MilestonePhaseTemplate milestonePhaseTemplate, ProjectType projectType, Date projectStartDate);
List<MilestoneActivityTemplate> findActiveByPhase(MilestonePhaseTemplate milestonePhaseTemplate, ProjectType projectType, LocalDate projectStartDate);
long countByMilestonePhase(MilestonePhaseTemplate milestonePhaseTemplate);
long countActivities(MilestoneActivityTemplate.Type type, ProjectType projectType, Date projectStartDate);
long countActivities(MilestoneActivityTemplate.Type type, ProjectType projectType, LocalDate projectStartDate);
long countActivities(ProjectType projectType, Date projectStartDate);
long countActivities(ProjectType projectType, LocalDate projectStartDate);
MilestoneActivityTemplate findBySortOrderAndMilestonePhaseTemplate(int sortOrder, MilestonePhaseTemplate milestonePhaseTemplate);
}

@ -9,6 +9,8 @@ import se.su.dsv.scipro.system.ProjectType;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
@ -23,13 +25,13 @@ public class MilestoneActivityTemplateRepositoryImpl extends GenericRepo<Milesto
}
@Override
public List<MilestoneActivityTemplate> findActivities(MilestoneActivityTemplate.Type type, ProjectType projectType, Date projectStartDate) {
public List<MilestoneActivityTemplate> findActivities(MilestoneActivityTemplate.Type type, ProjectType projectType, LocalDate projectStartDate) {
QMilestoneActivityTemplate activity = QMilestoneActivityTemplate.milestoneActivityTemplate;
return createQuery().where(allOf(
activity.type.eq(type),
activity.projectTypes.any().eq(projectType),
activity.deleted.isFalse(),
activity.dateCreated.before(projectStartDate)
activity.dateCreated.before(java.util.Date.from(projectStartDate.atStartOfDay(ZoneId.systemDefault()).toInstant()))
)).fetch();
}
@ -47,13 +49,13 @@ public class MilestoneActivityTemplateRepositoryImpl extends GenericRepo<Milesto
}
@Override
public List<MilestoneActivityTemplate> findAllActivitiesInOrder(MilestoneActivityTemplate.Type type, ProjectType projectType, Date projectStartDate) {
public List<MilestoneActivityTemplate> findAllActivitiesInOrder(MilestoneActivityTemplate.Type type, ProjectType projectType, LocalDate projectStartDate) {
QMilestoneActivityTemplate activity = QMilestoneActivityTemplate.milestoneActivityTemplate;
return createQuery().where(allOf(
activity.type.eq(type),
activity.projectTypes.any().eq(projectType),
activity.deleted.isFalse(),
activity.dateCreated.before(projectStartDate)
activity.dateCreated.before(java.util.Date.from(projectStartDate.atStartOfDay(ZoneId.systemDefault()).toInstant()))
)).orderBy(activity.milestonePhaseTemplate.sortOrder.asc(), activity.sortOrder.asc()).fetch();
}
@ -64,12 +66,12 @@ public class MilestoneActivityTemplateRepositoryImpl extends GenericRepo<Milesto
}
@Override
public List<MilestoneActivityTemplate> findActiveByPhase(MilestonePhaseTemplate milestonePhaseTemplate, ProjectType projectType, Date projectStartDate) {
public List<MilestoneActivityTemplate> findActiveByPhase(MilestonePhaseTemplate milestonePhaseTemplate, ProjectType projectType, LocalDate projectStartDate) {
QMilestoneActivityTemplate activity = QMilestoneActivityTemplate.milestoneActivityTemplate;
return createQuery().where(allOf(
activity.milestonePhaseTemplate.eq(milestonePhaseTemplate),
activity.deleted.isFalse(),
activity.dateCreated.before(projectStartDate),
activity.dateCreated.before(java.util.Date.from(projectStartDate.atStartOfDay(ZoneId.systemDefault()).toInstant())),
activity.projectTypes.any().eq(projectType)
)).orderBy(activity.sortOrder.asc()).fetch();
}
@ -83,25 +85,27 @@ public class MilestoneActivityTemplateRepositoryImpl extends GenericRepo<Milesto
}
@Override
public long countActivities(MilestoneActivityTemplate.Type type, ProjectType projectType, Date projectStartDate) {
public long countActivities(MilestoneActivityTemplate.Type type, ProjectType projectType, LocalDate projectStartDate) {
QMilestoneActivityTemplate activity = QMilestoneActivityTemplate.milestoneActivityTemplate;
Date date = Date.from(projectStartDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
return createQuery().where(allOf(
activity.type.eq(type),
activity.projectTypes.any().eq(projectType),
activity.deleted.isFalse(),
activity.dateCreated.before(projectStartDate),
activity.milestonePhaseTemplate.dateCreated.before(projectStartDate)
activity.dateCreated.before(date),
activity.milestonePhaseTemplate.dateCreated.before(date)
)).select(activity.count()).fetchFirst();
}
@Override
public long countActivities(ProjectType projectType, Date projectStartDate) {
public long countActivities(ProjectType projectType, LocalDate projectStartDate) {
QMilestoneActivityTemplate activity = QMilestoneActivityTemplate.milestoneActivityTemplate;
Date date = Date.from(projectStartDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
return createQuery().where(allOf(
activity.projectTypes.any().eq(projectType),
activity.deleted.isFalse(),
activity.dateCreated.before(projectStartDate),
activity.milestonePhaseTemplate.dateCreated.before(projectStartDate)
activity.dateCreated.before(date),
activity.milestonePhaseTemplate.dateCreated.before(date)
)).select(activity.count()).fetchFirst();
}

@ -7,15 +7,14 @@ import se.su.dsv.scipro.project.Project;
import se.su.dsv.scipro.springdata.SortOrderService;
import se.su.dsv.scipro.system.ProjectType;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.time.LocalDate;
import java.util.*;
public interface MilestoneActivityTemplateService extends SortOrderService<MilestoneActivityTemplate> {
List<MilestoneActivityTemplate> findAll();
List<MilestoneActivityTemplate> getActivities(MilestoneActivityTemplate.Type type, ProjectType projectType, Date projectStartDate);
List<MilestoneActivityTemplate> getActivities(MilestoneActivityTemplate.Type type, ProjectType projectType, LocalDate projectStartDate);
List<MilestoneActivityTemplate> getAllActivities(MilestoneActivityTemplate.Type type, Collection<ProjectType> projectTypes);
@ -25,12 +24,12 @@ public interface MilestoneActivityTemplateService extends SortOrderService<Miles
List<MilestoneActivityTemplate> getActivitiesInOrder(MilestoneActivityTemplate.Type type, Project project);
Long countActivities(MilestoneActivityTemplate.Type type, ProjectType projectType, Date projectStartDate);
Long countActivities(MilestoneActivityTemplate.Type type, ProjectType projectType, LocalDate projectStartDate);
MilestoneActivityTemplate save(MilestoneActivityTemplate activity, MilestonePhaseTemplate currentPhase);
long countActivities(ProjectType projectType, Date projectStartDate);
long countActivities(ProjectType projectType, LocalDate projectStartDate);
MilestoneActivityTemplate findByEvent(String eventName);
}

@ -4,14 +4,14 @@ import org.springframework.data.domain.Sort;
import se.su.dsv.scipro.milestones.dataobjects.MilestonePhaseTemplate;
import se.su.dsv.scipro.springdata.SortOrderService;
import java.util.Date;
import java.util.List;
import java.time.LocalDate;
import java.util.*;
public interface MilestonePhaseTemplateService extends SortOrderService<MilestonePhaseTemplate> {
List<MilestonePhaseTemplate> findAll(Sort sort);
List<MilestonePhaseTemplate> findAllActive(Date projectStartDate);
List<MilestonePhaseTemplate> findAllActive(LocalDate projectStartDate);
<S extends MilestonePhaseTemplate> S save(S phase);

@ -10,9 +10,8 @@ import se.su.dsv.scipro.reusable.SciProUtilities;
import se.su.dsv.scipro.system.ProjectType;
import javax.inject.Inject;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.time.LocalDate;
import java.util.*;
public class MilestoneActivityTemplateServiceImpl implements MilestoneActivityTemplateService {
@ -29,7 +28,7 @@ public class MilestoneActivityTemplateServiceImpl implements MilestoneActivityTe
}
@Override
public List<MilestoneActivityTemplate> getActivities(MilestoneActivityTemplate.Type type, ProjectType projectType, Date projectStartDate) {
public List<MilestoneActivityTemplate> getActivities(MilestoneActivityTemplate.Type type, ProjectType projectType, LocalDate projectStartDate) {
return milestoneActivityTemplateRepository.findActivities(type, projectType, projectStartDate);
}
@ -45,16 +44,16 @@ public class MilestoneActivityTemplateServiceImpl implements MilestoneActivityTe
@Override
public List<MilestoneActivityTemplate> findActiveByPhase(MilestonePhaseTemplate milestonePhaseTemplate, Project project) {
return milestoneActivityTemplateRepository.findActiveByPhase(milestonePhaseTemplate, project.getProjectType(), project.getDateCreated());
return milestoneActivityTemplateRepository.findActiveByPhase(milestonePhaseTemplate, project.getProjectType(), project.getStartDate());
}
@Override
public List<MilestoneActivityTemplate> getActivitiesInOrder(MilestoneActivityTemplate.Type type, Project project) {
return milestoneActivityTemplateRepository.findAllActivitiesInOrder(type, project.getProjectType(), project.getDateCreated());
return milestoneActivityTemplateRepository.findAllActivitiesInOrder(type, project.getProjectType(), project.getStartDate());
}
@Override
public Long countActivities(MilestoneActivityTemplate.Type type, ProjectType projectType, Date projectStartDate) {
public Long countActivities(MilestoneActivityTemplate.Type type, ProjectType projectType, LocalDate projectStartDate) {
return milestoneActivityTemplateRepository.countActivities(type, projectType, projectStartDate);
}
@ -67,7 +66,7 @@ public class MilestoneActivityTemplateServiceImpl implements MilestoneActivityTe
}
@Override
public long countActivities(ProjectType projectType, Date projectStartDate) {
public long countActivities(ProjectType projectType, LocalDate projectStartDate) {
return milestoneActivityTemplateRepository.countActivities(projectType, projectStartDate);
}

@ -11,8 +11,9 @@ import se.su.dsv.scipro.system.AbstractServiceImpl;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import java.util.Date;
import java.util.List;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.*;
import static com.querydsl.core.types.dsl.Expressions.allOf;
@ -29,10 +30,10 @@ public class MilestonePhaseTemplateServiceImpl extends AbstractServiceImpl<Miles
}
@Override
public List<MilestonePhaseTemplate> findAllActive(Date projectStartDate) {
public List<MilestonePhaseTemplate> findAllActive(LocalDate projectStartDate) {
QMilestonePhaseTemplate template = QMilestonePhaseTemplate.milestonePhaseTemplate;
return from(template)
.where(allOf(template.deleted.isFalse(), template.dateCreated.lt(projectStartDate)))
.where(allOf(template.deleted.isFalse(), template.dateCreated.lt(java.util.Date.from(projectStartDate.atStartOfDay(ZoneId.systemDefault()).toInstant()))))
.orderBy(template.sortOrder.asc())
.fetch();
}

@ -29,6 +29,10 @@ public class Project extends DomainObject {
@Basic(optional = false)
private String title;
@Basic(optional = false)
@Column(name = "start_date", nullable = false)
private LocalDate startDate;
@Basic
@Column(name = "expected_end_date")
private LocalDate expectedEndDate;
@ -395,6 +399,14 @@ public class Project extends DomainObject {
this.language = language;
}
public LocalDate getStartDate() {
return startDate;
}
public void setStartDate(LocalDate startDate) {
this.startDate = startDate;
}
@Override
public boolean equals(final Object o) {
if (o == this) return true;
@ -418,7 +430,7 @@ public class Project extends DomainObject {
return "Project(id=" + this.getId() + ", identifier=" + this.getIdentifier() + ", title=" + this.getTitle() + ", projectParticipants=" + this.getProjectParticipants() + ", headSupervisor=" + this.getHeadSupervisor() + ", projectType=" + this.getProjectType() + ")";
}
private static class Builder implements ITitle, IProjectType, IBuild {
private static class Builder implements ITitle, IProjectType, IStartDate, IBuild {
private final Project instance = new Project();
@Override
@ -428,7 +440,7 @@ public class Project extends DomainObject {
}
@Override
public IBuild projectType(ProjectType projectType) {
public IStartDate projectType(ProjectType projectType) {
instance.setProjectType(projectType);
return this;
}
@ -470,8 +482,8 @@ public class Project extends DomainObject {
}
@Override
public IBuild dateCreated(Date dateCreated) {
instance.setDateCreated(dateCreated);
public IBuild startDate(LocalDate startDate) {
instance.setStartDate(startDate);
return this;
}
@ -486,7 +498,11 @@ public class Project extends DomainObject {
}
public interface IProjectType {
IBuild projectType(ProjectType projectType);
IStartDate projectType(ProjectType projectType);
}
public interface IStartDate {
IBuild startDate(LocalDate startDate);
}
public interface IBuild {
@ -502,8 +518,6 @@ public class Project extends DomainObject {
IBuild stateOfMind(StateOfMind stateOfMind);
IBuild dateCreated(Date dateCreated);
Project build();
}
}

@ -1,12 +1,15 @@
package se.su.dsv.scipro.report;
import se.su.dsv.scipro.project.Project;
import se.su.dsv.scipro.report.calculators.original.*;
import se.su.dsv.scipro.report.calculators.original.ReviewerBachelorGradeCalculator;
import se.su.dsv.scipro.report.calculators.original.ReviewerMaster15GradeCalculator;
import se.su.dsv.scipro.report.calculators.original.ReviewerMaster30GradeCalculator;
import se.su.dsv.scipro.report.calculators.original.SupervisorBachelorGradeCalculator;
import se.su.dsv.scipro.report.calculators.original.SupervisorMaster15GradeCalculator;
import se.su.dsv.scipro.report.calculators.original.SupervisorMaster30GradeCalculator;
import se.su.dsv.scipro.system.DegreeType;
import se.su.dsv.scipro.system.ProjectType;
import java.util.Calendar;
public class GradeCalculatorServiceImpl implements GradeCalculatorService {
@Override
public GradeCalculator getSupervisorCalculator(final Project project) {
@ -85,8 +88,6 @@ public class GradeCalculatorServiceImpl implements GradeCalculatorService {
}
private int getYear(final Project project) {
final Calendar calendar = Calendar.getInstance();
calendar.setTime(project.getDateCreated());
return calendar.get(Calendar.YEAR);
return project.getStartDate().getYear();
}
}

@ -107,9 +107,9 @@ public class IdeaExportWorker extends AbstractWorker {
Project project = Project.builder()
.title(idea.getTitle())
.projectType(idea.getProjectType())
.startDate(getCourseStartDate(idea))
.headSupervisor(idea.getMatch().getSupervisor())
.projectParticipants(getAuthors(idea))
.dateCreated(getCourseStartDate(idea))
.build();
project.setExpectedEndDate(idea.getApplicationPeriod().getCourseEndDate());
project.setResearchArea(idea.getResearchArea());
@ -122,12 +122,10 @@ public class IdeaExportWorker extends AbstractWorker {
commitTransaction();
}
private Date getCourseStartDate(final Idea idea) {
final Instant courseStartDateTime = idea.getApplicationPeriod()
private LocalDate getCourseStartDate(final Idea idea) {
return idea.getApplicationPeriod()
.getCourseStartDateTime()
.atZone(ZoneId.systemDefault())
.toInstant();
return Date.from(courseStartDateTime);
.toLocalDate();
}
private void createFirstMeetingEvent(Idea idea, Project project) {

@ -0,0 +1,5 @@
ALTER TABLE project ADD COLUMN start_date DATE;
UPDATE project SET start_date = DATE(dateCreated);
ALTER TABLE project MODIFY COLUMN start_date DATE NOT NULL;

@ -20,6 +20,7 @@ import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.test.IntegrationTest;
import javax.inject.Inject;
import java.time.LocalDate;
import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
@ -167,6 +168,7 @@ public class ActivityPlanFacadeImplIntegrationTest extends IntegrationTest {
project.setHeadSupervisor(createUser());
project.setTitle("");
project.setProjectType(createProjectType());
project.setStartDate(LocalDate.now());
return save(project);
}

@ -12,6 +12,7 @@ import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.test.IntegrationTest;
import javax.inject.Inject;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@ -41,6 +42,7 @@ public class ActivityPlanFacadeImplIntegrationTestChecklistMethods extends Integ
Project project = Project.builder().
title("project").
projectType(bachelor).
startDate(LocalDate.now()).
headSupervisor(employee1).
build();
project = save(project);

@ -24,6 +24,8 @@ import se.su.dsv.scipro.system.ProjectType;
import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.test.UserBuilder;
import java.time.LocalDate;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.hasItem;
@ -34,7 +36,7 @@ import static org.mockito.Mockito.*;
public class ActivityPlanFacadeImplTest {
static final ProjectType PROJECT_TYPE = new ProjectType(DegreeType.BACHELOR, "bach", "bach");
static final Project SOME_PROJECT = Project.builder().title("title").projectType(PROJECT_TYPE).build();
static final Project SOME_PROJECT = Project.builder().title("title").projectType(PROJECT_TYPE).startDate(LocalDate.now()).build();
static final ChecklistTemplate SOME_TEMPLATE = new ChecklistTemplate("name", new UserBuilder().create());
static final String SOME_NAME = "someName";
static final String SOME_TITLE = "someTitle";

@ -11,6 +11,7 @@ import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.test.IntegrationTest;
import javax.inject.Inject;
import java.time.LocalDate;
import java.util.ArrayList;
import static org.hamcrest.CoreMatchers.hasItem;
@ -90,7 +91,7 @@ public class ChecklistTemplateServiceImplTest extends IntegrationTest {
@Test
public void find_peer_request_checklists() {
ProjectType master = save(new ProjectType(DegreeType.MASTER, "Master", "Master"));
Project project = save(Project.builder().title("Title").projectType(master).headSupervisor(user).build());
Project project = save(Project.builder().title("Title").projectType(master).startDate(LocalDate.now()).headSupervisor(user).build());
template.getCategories().add(save(new ChecklistCategory(ChecklistTemplateServiceImpl.PEER)));
template.getProjectTypes().add(master);

@ -20,6 +20,7 @@ import se.su.dsv.scipro.system.DegreeType;
import se.su.dsv.scipro.system.ProjectType;
import se.su.dsv.scipro.system.User;
import java.time.LocalDate;
import java.util.Collections;
import java.util.Date;
import java.util.Optional;
@ -52,7 +53,7 @@ public class ReviewerAssignedNotificationsTest {
reviewer.setId(1L);
TreeSet<User> reviewers = new TreeSet<>(new User.ByNameComparator());
reviewers.addAll(Collections.singleton(reviewer));
project = Project.builder().title("My project").projectType(master).reviewers(reviewers).build();
project = Project.builder().title("My project").projectType(master).startDate(LocalDate.now()).reviewers(reviewers).build();
when(roughDraftApprovalService.findBy(project)).thenReturn(Optional.empty());
when(finalSeminarApprovalService.findBy(project)).thenReturn(Optional.empty());

@ -24,6 +24,7 @@ import se.su.dsv.scipro.system.ResearchArea;
import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.test.ObjectMother;
import java.time.LocalDate;
import java.util.*;
import static org.mockito.Mockito.verify;
@ -51,7 +52,7 @@ public class ReviewerSupportMailerTest {
researchArea.setTitle("IT");
researchAreas.add(researchArea);
supervisor.setResearchAreas(new HashSet<>(researchAreas));
final Project project = Project.builder().title("Title").projectType(bachelor).headSupervisor(supervisor).build();
final Project project = Project.builder().title("Title").projectType(bachelor).startDate(LocalDate.now()).headSupervisor(supervisor).build();
final FileDescription fileDescription = new FileDescription();
final FileReference fsaThesis = new FileReference();
fsaThesis.setFileDescription(fileDescription);

@ -20,6 +20,7 @@ import se.su.dsv.scipro.reviewing.RoughDraftApprovalRequestedEvent;
import se.su.dsv.scipro.system.DegreeType;
import se.su.dsv.scipro.system.ProjectType;
import java.time.LocalDate;
import java.util.*;
import static org.mockito.ArgumentMatchers.any;
@ -41,7 +42,7 @@ public class ReviewingNotificationsTest {
@BeforeEach
public void setUp() throws Exception {
ProjectType bachelor = new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor");
project = Project.builder().title("Title").projectType(bachelor).build();
project = Project.builder().title("Title").projectType(bachelor).startDate(LocalDate.now()).build();
final FileDescription fileDescription = new FileDescription();
finalSeminarApproval = new FinalSeminarApproval(project, referenceTo(fileDescription), "hello", new Date());
roughDraftApproval = new RoughDraftApproval(project, referenceTo(fileDescription), "hello", new Date());

@ -1,10 +1,5 @@
package se.su.dsv.scipro.finalseminar;
import java.util.Date;
import static org.hamcrest.CoreMatchers.*;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import se.su.dsv.scipro.project.Project;
@ -12,6 +7,13 @@ import se.su.dsv.scipro.system.DegreeType;
import se.su.dsv.scipro.system.ProjectType;
import se.su.dsv.scipro.util.Either;
import java.time.LocalDate;
import java.util.*;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertTrue;
public class ExtendedFinalSeminarServiceImplTest {
FinalSeminar exempted;
@ -22,9 +24,9 @@ public class ExtendedFinalSeminarServiceImplTest {
@BeforeEach
public void setUp() {
ProjectType master = new ProjectType(DegreeType.MASTER, "Master", "Master");
Project exemptedProject = Project.builder().title("Title").projectType(master).build();
Project exemptedProject = Project.builder().title("Title").projectType(master).startDate(LocalDate.now()).build();
exemptedProject.setFinalSeminarRuleExempted(true);
Project notExemptedProject = Project.builder().title("Title").projectType(master).build();
Project notExemptedProject = Project.builder().title("Title").projectType(master).startDate(LocalDate.now()).build();
exempted = new FinalSeminar(exemptedProject);
notExempted = new FinalSeminar(notExemptedProject);

@ -12,6 +12,7 @@ import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.test.IntegrationTest;
import javax.inject.Inject;
import java.time.LocalDate;
import java.util.Date;
import static org.junit.jupiter.api.Assertions.assertEquals;
@ -68,6 +69,7 @@ public class FinalSeminarOppositionServiceImplIntegrationTest extends Integratio
Project project = Project.builder()
.title("title")
.projectType(projectType)
.startDate(LocalDate.now())
.headSupervisor(createUser())
.build();
return save(project);

@ -10,6 +10,7 @@ import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.test.IntegrationTest;
import javax.inject.Inject;
import java.time.LocalDate;
import java.util.Arrays;
import java.util.Date;
import java.util.TreeSet;
@ -58,6 +59,7 @@ public class FinalSeminarRespondentServiceImplIntegrationTest extends Integratio
Project project = Project.builder()
.title("title")
.projectType(projectType)
.startDate(LocalDate.now())
.projectParticipants(projectParticipants)
.headSupervisor(createUser())
.build();

@ -15,6 +15,7 @@ import se.su.dsv.scipro.system.*;
import se.su.dsv.scipro.test.IntegrationTest;
import javax.inject.Inject;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
@ -349,7 +350,7 @@ public class FinalSeminarServiceImplIntegrationTest extends IntegrationTest {
}
private Project createProject(User supervisor, ProjectType projectType) {
Project project = Project.builder().title("Some title").projectType(projectType).headSupervisor(supervisor).build();
Project project = Project.builder().title("Some title").projectType(projectType).startDate(LocalDate.now()).headSupervisor(supervisor).build();
return save(project);
}

@ -21,6 +21,8 @@ import se.su.dsv.scipro.system.ProjectType;
import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.test.UserBuilder;
import java.time.LocalDate;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.*;
@ -55,7 +57,7 @@ public class FinalSeminarUploadControllerImplTest {
@BeforeEach
public void setUp() throws Exception {
project = Project.builder().title("title").projectType(new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor")).build();
project = Project.builder().title("title").projectType(new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor")).startDate(LocalDate.now()).build();
project.setId(812L);
seminar = new FinalSeminar();
seminar.setId(738L);

@ -16,6 +16,8 @@ import se.su.dsv.scipro.test.IntegrationTest;
import javax.inject.Inject;
import java.time.LocalDate;
import static org.hamcrest.CoreMatchers.everyItem;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.*;
@ -40,7 +42,7 @@ public class FinalThesisServiceImplTest extends IntegrationTest {
ProjectType bachelor = save(new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor"));
User headSupervisor = save(User.builder().firstName("John").lastName("Doe").emailAddress("john@example.com").build());
uploader = save(User.builder().firstName("Bob").lastName("Sponge").emailAddress("bob@example.com").build());
project = save(Project.builder().title("Some title").projectType(bachelor).headSupervisor(headSupervisor).build());
project = save(Project.builder().title("Some title").projectType(bachelor).startDate(LocalDate.now()).headSupervisor(headSupervisor).build());
source = new NotificationSource();
name = "name";
contentType = TEXT_PLAIN;

@ -13,6 +13,7 @@ import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.test.StreamingUpload;
import javax.inject.Inject;
import java.time.LocalDate;
import java.util.*;
import static org.hamcrest.MatcherAssert.assertThat;
@ -36,7 +37,7 @@ public class ProjectForumServiceImplTest extends ForumModuleTest {
projectType.addModule(ProjectModule.FORUM);
save(projectType);
final User supervisor = save(User.builder().firstName("Bob").lastName("The Builder").emailAddress("bob@example.com").build());
project = Project.builder().title("Some title").projectType(projectType).headSupervisor(supervisor).build();
project = Project.builder().title("Some title").projectType(projectType).startDate(LocalDate.now()).headSupervisor(supervisor).build();
save(project);
user = User.builder().firstName("Stina").lastName("Student").emailAddress("stina@example.com").build();
save(user);

@ -11,6 +11,8 @@ import se.su.dsv.scipro.system.User;
import javax.inject.Inject;
import java.time.LocalDate;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class ForumMailServiceImplTest extends ForumMailModuleTest {
@ -44,7 +46,7 @@ public class ForumMailServiceImplTest extends ForumMailModuleTest {
save(forumThread);
ProjectType bachelor = save(new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor"));
User user = save(User.builder().firstName("Bob").lastName("Example").emailAddress("bob@example.com").build());
Project project = save(Project.builder().title("Project").projectType(bachelor).headSupervisor(user).build());
Project project = save(Project.builder().title("Project").projectType(bachelor).startDate(LocalDate.now()).headSupervisor(user).build());
ProjectThread projectThread = new ProjectThread();
projectThread.setForumThread(forumThread);
projectThread.setProject(project);

@ -17,6 +17,7 @@ import se.su.dsv.scipro.test.ObjectMother;
import javax.inject.Inject;
import javax.mail.Part;
import java.time.LocalDate;
import java.util.Collections;
import static org.mockito.Mockito.*;
@ -100,7 +101,7 @@ public class ReadForumMailTest extends ForumMailModuleTest {
private ProjectThread createProjectThread() {
ProjectType bachelor = save(new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor"));
User supervisor = createUser();
Project project = save(Project.builder().title("Project").projectType(bachelor).headSupervisor(supervisor).build());
Project project = save(Project.builder().title("Project").projectType(bachelor).startDate(LocalDate.now()).headSupervisor(supervisor).build());
ProjectThread projectThread = new ProjectThread();
projectThread.setProject(project);
projectThread.setForumThread(createThread());

@ -22,6 +22,8 @@ import se.su.dsv.scipro.system.ProjectType;
import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.test.DomainObjects;
import java.time.LocalDate;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertNotNull;
@ -62,7 +64,7 @@ public class SendForumMailTest {
final User threadMember = newUser(2L);
coSupervisor = newUser(3L);
ProjectType bachelor = new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor");
Project project = Project.builder().title("Project").projectType(bachelor).headSupervisor(poster).build();
Project project = Project.builder().title("Project").projectType(bachelor).startDate(LocalDate.now()).headSupervisor(poster).build();
project.addProjectParticipant(threadMember);
project.addCoSupervisor(coSupervisor);
ForumThread forumThread = new ForumThread();

@ -9,6 +9,7 @@ import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.test.IntegrationTest;
import javax.inject.Inject;
import java.time.LocalDate;
import java.util.Collections;
import java.util.HashSet;
@ -37,7 +38,7 @@ public class GroupServiceImplTest extends IntegrationTest {
cosupervisor = saveUser("cosupervisor", "test", "reviewer@example.com");
projectType = save(new ProjectType(DegreeType.BACHELOR, "b", "b"));
User headSupervisor = save(User.builder().firstName("John").lastName("Doe").emailAddress("john@example.com").build());
Project project = save(Project.builder().title("title").projectType(projectType).headSupervisor(headSupervisor).build());
Project project = save(Project.builder().title("title").projectType(projectType).startDate(LocalDate.now()).headSupervisor(headSupervisor).build());
project.addProjectParticipant(author);
project.addReviewer(reviewer);
project.addCoSupervisor(cosupervisor);
@ -108,7 +109,7 @@ public class GroupServiceImplTest extends IntegrationTest {
another.setTitle("hi");
another.setUser(creator);
User headSupervisor = save(User.builder().firstName("John").lastName("Doe").emailAddress("john@example.com").build());
Project anotherProject = save(Project.builder().title("another").projectType(projectType).headSupervisor(headSupervisor).build());
Project anotherProject = save(Project.builder().title("another").projectType(projectType).startDate(LocalDate.now()).headSupervisor(headSupervisor).build());
another.setProjects(new HashSet<>(Collections.singletonList(anotherProject)));
save(another);
GroupService.Filter filter = new GroupService.Filter();

@ -12,6 +12,7 @@ import se.su.dsv.scipro.system.DegreeType;
import se.su.dsv.scipro.system.ProjectModule;
import se.su.dsv.scipro.system.ProjectType;
import java.time.LocalDate;
import java.util.Date;
import static org.mockito.ArgumentMatchers.any;
@ -78,7 +79,7 @@ public class AddActivityPlanOnProjectStartTest {
}
private Tuple2<Project, ProjectStartedEvent> prepareEvent(final ProjectType projectType, final ActivityPlanTemplate activityPlanTemplate) {
Project project = Project.builder().title("Title").projectType(projectType).build();
Project project = Project.builder().title("Title").projectType(projectType).startDate(LocalDate.now()).build();
ApplicationPeriod applicationPeriod = new ApplicationPeriod();
ApplicationPeriodProjectType applicationPeriodProjectType = new ApplicationPeriodProjectType(applicationPeriod, projectType);
applicationPeriodProjectType.setActivityPlanTemplate(activityPlanTemplate);

@ -1,6 +1,5 @@
package se.su.dsv.scipro.milestones.service.impl;
import org.joda.time.DateTime;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@ -9,9 +8,7 @@ import org.mockito.AdditionalAnswers;
import org.mockito.ArgumentCaptor;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.mockito.stubbing.Answer;
import se.su.dsv.scipro.milestones.MilestoneActivityTemplateRepository;
import se.su.dsv.scipro.milestones.dataobjects.MilestoneActivityTemplate;
import se.su.dsv.scipro.milestones.dataobjects.MilestonePhaseTemplate;
@ -20,6 +17,7 @@ import se.su.dsv.scipro.system.DegreeType;
import se.su.dsv.scipro.system.ProjectType;
import se.su.dsv.scipro.test.DomainObjects;
import java.time.LocalDate;
import java.util.*;
import static org.junit.jupiter.api.Assertions.assertEquals;
@ -32,12 +30,12 @@ public class MilestoneActivityTemplateServiceImplTest {
MilestoneActivityTemplateRepository milestoneActivityTemplateRepository;
@InjectMocks
MilestoneActivityTemplateServiceImpl mileStoneActivityService;
private Date date;
private LocalDate date;
private ProjectType projectType;
@BeforeEach
public void setUp() throws Exception {
date = new DateTime().minusDays(1).toDate();
date = LocalDate.now().minusDays(1);
projectType = new ProjectType(DegreeType.BACHELOR, "any", "any");
}
@ -169,10 +167,10 @@ public class MilestoneActivityTemplateServiceImplTest {
@Test
public void testFindActiveActivitiesByPhase() {
List<MilestoneActivityTemplate> list = Collections.singletonList(createActivity(MilestoneActivityTemplate.Type.PROJECT, "Create seminar", "description", 0));
Date date = new DateTime().minusDays(1).toDate();
LocalDate date = LocalDate.now().minusDays(1);
ProjectType bachelor = new ProjectType(DegreeType.BACHELOR, "bachelor", "bachelor");
Project project = Project.builder().title("title").projectType(bachelor).build();
project.setDateCreated(date);
Project project = Project.builder().title("title").projectType(bachelor).startDate(LocalDate.now()).build();
project.setStartDate(date);
when(milestoneActivityTemplateRepository.findActiveByPhase(isA(MilestonePhaseTemplate.class), eq(bachelor), eq(date))).thenReturn(list);
List<MilestoneActivityTemplate> serviceList = mileStoneActivityService.findActiveByPhase(mock(MilestonePhaseTemplate.class), project);
@ -183,7 +181,7 @@ public class MilestoneActivityTemplateServiceImplTest {
@Test
public void testCountActivitiesByTypeAndProjectTypeAndDate() {
Long activityCount = 3L;
Date date = new DateTime().minusDays(1).toDate();
LocalDate date = LocalDate.now().minusDays(1);
when(milestoneActivityTemplateRepository.countActivities(eq(MilestoneActivityTemplate.Type.PROJECT), isA(ProjectType.class), eq(date))).thenReturn(activityCount);
Long serviceCount = mileStoneActivityService.countActivities(MilestoneActivityTemplate.Type.PROJECT, mock(ProjectType.class), date);
@ -193,7 +191,7 @@ public class MilestoneActivityTemplateServiceImplTest {
@Test
public void countActivitiesByProjectTypeAndDate() {
ProjectType projectType = new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor");
Date projectStartDate = new DateTime().minusDays(1).toDate();
LocalDate projectStartDate = LocalDate.now().minusDays(1);
long expected = 3L;
when(milestoneActivityTemplateRepository.countActivities(projectType, projectStartDate)).thenReturn(expected);
@ -266,10 +264,10 @@ public class MilestoneActivityTemplateServiceImplTest {
@Test
public void testGetActivitiesInOrder() {
List<MilestoneActivityTemplate> list = Collections.singletonList(new MilestoneActivityTemplate());
Date dateCreated = new DateTime().minusDays(1).toDate();
LocalDate dateCreated = LocalDate.now().minusDays(1);
ProjectType projectType = new ProjectType(DegreeType.BACHELOR, "bachelor", "bachelor");
Project project = Project.builder().title("title").projectType(projectType).build();
project.setDateCreated(dateCreated);
Project project = Project.builder().title("title").projectType(projectType).startDate(LocalDate.now()).build();
project.setStartDate(dateCreated);
when(milestoneActivityTemplateRepository.findAllActivitiesInOrder(MilestoneActivityTemplate.Type.PROJECT, projectType, dateCreated)).thenReturn(list);
List<MilestoneActivityTemplate> serviceList = mileStoneActivityService.getActivitiesInOrder(MilestoneActivityTemplate.Type.PROJECT, project);

@ -8,12 +8,13 @@ import se.su.dsv.scipro.milestones.dataobjects.MilestonePhaseTemplate;
import se.su.dsv.scipro.test.IntegrationTest;
import javax.inject.Inject;
import java.util.Date;
import java.util.List;
import java.time.LocalDate;
import java.util.*;
import static org.hamcrest.CoreMatchers.hasItem;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.*;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
public class MilestonePhaseTemplateServiceImplTest extends IntegrationTest {
@ -38,22 +39,22 @@ public class MilestonePhaseTemplateServiceImplTest extends IntegrationTest {
}
@Test
public void testFindAllActive() {
public void phases_created_after_project_start_are_not_included() {
// Have to add some amount of time or else the test will fail if it runs too fast since the new Date() here
// will be equal to the new Date() called when saving the first phase template in #setUp
List<MilestonePhaseTemplate> servicePhases = service.findAllActive(new Date(new Date().getTime() + 20000));
List<MilestonePhaseTemplate> servicePhases = service.findAllActive(LocalDate.now().plusDays(1));
assertEquals(servicePhases.size(), 1);
assertEquals(servicePhases.get(0), first);
}
@Test
public void testSavePhase() {
public void new_phases_are_active_from_the_next_day() {
String title = "Title";
String desc = "desc";
MilestonePhaseTemplate phase = service.save(new MilestonePhaseTemplate(title, desc));
List<MilestonePhaseTemplate> allActive = service.findAllActive(Date.from(phase.getDateCreated().toInstant().plusSeconds(1)));
List<MilestonePhaseTemplate> allActive = service.findAllActive(LocalDate.now().plusDays(1));
assertThat(allActive, hasItem(phase));
}

@ -15,6 +15,7 @@ import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.test.IntegrationTest;
import javax.inject.Inject;
import java.time.LocalDate;
import java.util.Collections;
import static org.junit.jupiter.api.Assertions.*;
@ -130,6 +131,6 @@ public class MilestoneServiceImplIntegrationTest extends IntegrationTest {
private Project createProject() {
User headSupervisor = save(User.builder().firstName("John").lastName("Doe").emailAddress("john@example.com").build());
return save(Project.builder().title("Title").projectType(bachelor).headSupervisor(headSupervisor).build());
return save(Project.builder().title("Title").projectType(bachelor).startDate(LocalDate.now()).headSupervisor(headSupervisor).build());
}
}

@ -13,6 +13,7 @@ import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.test.IntegrationTest;
import javax.inject.Inject;
import java.time.LocalDate;
import java.util.Collection;
import static org.hamcrest.CoreMatchers.*;
@ -65,7 +66,7 @@ public class MilestoneStatisticsServiceImplTest extends IntegrationTest {
private Project createProject() {
User headSupervisor = save(User.builder().firstName("John").lastName("Doe").emailAddress("john@example.com").build());
return save(Project.builder().title("Title").projectType(bachelor).headSupervisor(headSupervisor).build());
return save(Project.builder().title("Title").projectType(bachelor).startDate(LocalDate.now()).headSupervisor(headSupervisor).build());
}
private MilestoneActivityTemplate createMilestone(final MilestonePhaseTemplate phase) {

@ -16,6 +16,8 @@ import se.su.dsv.scipro.report.ReviewerGradingReportSubmittedEvent;
import se.su.dsv.scipro.system.DegreeType;
import se.su.dsv.scipro.system.ProjectType;
import java.time.LocalDate;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.verify;
@ -43,7 +45,7 @@ public class GradingNotificationsTest {
}
private Project newProject() {
return Project.builder().title("Some project").projectType(new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor")).build();
return Project.builder().title("Some project").projectType(new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor")).startDate(LocalDate.now()).build();
}
private ReviewerGradingReport newReviewerReport(final Project project) {

@ -17,6 +17,8 @@ import se.su.dsv.scipro.system.DegreeType;
import se.su.dsv.scipro.system.ProjectType;
import se.su.dsv.scipro.system.User;
import java.time.LocalDate;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.isA;
import static org.mockito.Mockito.verify;
@ -29,7 +31,7 @@ public class GradingReportNotificationsTest {
private Notifications gradingNotifications;
public static final ProjectType bachelor = new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor");
public static final Project project = Project.builder().title("My project").projectType(bachelor).build();
public static final Project project = Project.builder().title("My project").projectType(bachelor).startDate(LocalDate.now()).build();
public static final User author = User.builder().firstName("First").lastName("Author").emailAddress("first@example.com").build();
public static final GradingReportTemplate gradingReportTemplate = new GradingReportTemplate(bachelor, 15);
public static final SupervisorGradingReport supervisorGradingReport = gradingReportTemplate.createSupervisorReport(project, author);

@ -14,6 +14,7 @@ import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.test.IntegrationTest;
import javax.inject.Inject;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@ -90,7 +91,7 @@ public class NotificationServiceImplIntegrationTest extends IntegrationTest {
public void mark_read_for_project() {
final User user = save(User.builder().firstName("Bob").lastName("Sponge").emailAddress("bob@example.com").build());
final ProjectType bachelor = save(new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor"));
final Project project = save(Project.builder().title("Project").projectType(bachelor).headSupervisor(user).build());
final Project project = save(Project.builder().title("Project").projectType(bachelor).startDate(LocalDate.now()).headSupervisor(user).build());
final ProjectEvent projectEvent = new ProjectEvent();
projectEvent.setProject(project);
final Notification notification = createNotification(user);

@ -13,6 +13,8 @@ import se.su.dsv.scipro.test.IntegrationTest;
import javax.inject.Inject;
import java.time.LocalDate;
import static org.hamcrest.CoreMatchers.hasItem;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.*;
@ -82,7 +84,7 @@ public class CommentThreadServiceImplTest extends IntegrationTest {
private Project createProject() {
User headSupervisor = save(User.builder().firstName("John").lastName("Doe").emailAddress("john@example.com").build());
return save(Project.builder().title("project").projectType(projectType).headSupervisor(headSupervisor).build());
return save(Project.builder().title("project").projectType(projectType).startDate(LocalDate.now()).headSupervisor(headSupervisor).build());
}
private void createDefaultProjectType() {

@ -24,6 +24,7 @@ import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.test.Dates;
import se.su.dsv.scipro.test.ObjectMother;
import java.time.LocalDate;
import java.util.Collections;
import java.util.Optional;
@ -253,7 +254,7 @@ public class PeerPortalImplTest {
private Project projectWithSettings() {
ProjectType projectType = new ProjectType(DegreeType.BACHELOR, "b", "b");
projectType.setProjectTypeSettings(new ProjectTypeSettings());
return Project.builder().title("title").projectType(projectType).build();
return Project.builder().title("title").projectType(projectType).startDate(LocalDate.now()).build();
}
private void addSomeAnswers(PeerReview peerReview) {
@ -288,7 +289,7 @@ public class PeerPortalImplTest {
ProjectTypeSettings projectTypeSettings = new ProjectTypeSettings();
ProjectType projectType = new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor");
projectType.setProjectTypeSettings(projectTypeSettings);
return Project.builder().title("Peer project").projectType(projectType).build();
return Project.builder().title("Peer project").projectType(projectType).startDate(LocalDate.now()).build();
}
private PeerReview submittedReview() {

@ -13,6 +13,7 @@ import se.su.dsv.scipro.test.Dates;
import se.su.dsv.scipro.test.IntegrationTest;
import javax.inject.Inject;
import java.time.LocalDate;
import java.util.EnumSet;
import static org.hamcrest.CoreMatchers.*;
@ -38,7 +39,7 @@ public class PeerRequestServiceImplTest extends IntegrationTest {
requester = save(User.builder().firstName("Bob").lastName("Sponge").emailAddress("bob@example.com").build());
User headSupervisor = save(User.builder().firstName("John").lastName("Doe").emailAddress("john@example.com").build());
projectType = save(new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor"));
project = Project.builder().title("title").projectType(projectType).headSupervisor(headSupervisor).build();
project = Project.builder().title("title").projectType(projectType).startDate(LocalDate.now()).headSupervisor(headSupervisor).build();
project.addProjectParticipant(requester);
save(project);
this.cancelled = newRequest(project, requester, RequestStatus.CANCELED);

@ -13,6 +13,7 @@ import se.su.dsv.scipro.test.Dates;
import se.su.dsv.scipro.test.IntegrationTest;
import javax.inject.Inject;
import java.time.LocalDate;
import java.util.List;
import static org.hamcrest.CoreMatchers.is;
@ -110,7 +111,7 @@ public class PeerReviewServiceImplIntegrationTest extends IntegrationTest {
private Project createProject() {
User headSupervisor = save(User.builder().firstName("John").lastName("Doe").emailAddress("john@example.com").build());
return save(Project.builder().title("Peer project").projectType(projectType).headSupervisor(headSupervisor).build());
return save(Project.builder().title("Peer project").projectType(projectType).startDate(LocalDate.now()).headSupervisor(headSupervisor).build());
}
private void createDefaultProjectType() {

@ -13,6 +13,7 @@ import se.su.dsv.scipro.test.Dates;
import se.su.dsv.scipro.test.IntegrationTest;
import javax.inject.Inject;
import java.time.LocalDate;
import java.util.EnumSet;
import static org.hamcrest.CoreMatchers.*;
@ -28,7 +29,7 @@ public class PeerReviewServiceImplTest extends IntegrationTest {
private PeerReviewServiceImpl peerReviewService;
public static final ProjectType SOME_PROJECT_TYPE = new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor");
public static final Project SOME_PROJECT = Project.builder().title("Some title").projectType(SOME_PROJECT_TYPE).build();
public static final Project SOME_PROJECT = Project.builder().title("Some title").projectType(SOME_PROJECT_TYPE).startDate(LocalDate.now()).build();
private PeerRequest peerRequest;
private User reviewer;
private PeerReview completed;
@ -97,7 +98,7 @@ public class PeerReviewServiceImplTest extends IntegrationTest {
private Project newProject() {
User headSupervisor = save(User.builder().firstName("John").lastName("Doe").emailAddress("john@example.com").build());
ProjectType projectType = save(new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor"));
return save(Project.builder().title("Title").projectType(projectType).headSupervisor(headSupervisor).build());
return save(Project.builder().title("Title").projectType(projectType).startDate(LocalDate.now()).headSupervisor(headSupervisor).build());
}
private PeerReview newReview(PeerReview.ReviewStatus status) {

@ -7,6 +7,8 @@ import se.su.dsv.scipro.system.ProjectType;
import se.su.dsv.scipro.system.ProjectTypeSettings;
import se.su.dsv.scipro.test.Dates;
import java.time.LocalDate;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class PeerReviewTest {
@ -61,7 +63,7 @@ public class PeerReviewTest {
ProjectTypeSettings projectTypeSettings = new ProjectTypeSettings();
ProjectType projectType = new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor");
projectType.setProjectTypeSettings(projectTypeSettings);
return Project.builder().title("Peer project").projectType(projectType).build();
return Project.builder().title("Peer project").projectType(projectType).startDate(LocalDate.now()).build();
}
}

@ -17,6 +17,7 @@ import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Duration;
import java.time.Instant;
import java.time.LocalDate;
import java.util.Collection;
import java.util.Date;
import java.util.List;
@ -191,6 +192,7 @@ public class TestPeerReview extends IntegrationTest {
Project newProject = Project.builder().
title("Project title").
projectType(projectType).
startDate(LocalDate.now()).
headSupervisor(headSupervisor).
projectStatus(status).
build();

@ -11,6 +11,7 @@ import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.test.IntegrationTest;
import javax.inject.Inject;
import java.time.LocalDate;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
@ -274,6 +275,7 @@ public class ProjectServiceImplIntegrationTest extends IntegrationTest {
project.setProjectType(projectType);
project.setProjectStatus(active);
project.setHeadSupervisor(headSupervisor);
project.setStartDate(LocalDate.now());
save(project);
return project;
}

@ -7,9 +7,7 @@ import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.AdditionalAnswers;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.mockito.stubbing.Answer;
import se.su.dsv.scipro.system.DegreeType;
import se.su.dsv.scipro.system.ProjectType;
import se.su.dsv.scipro.system.User;
@ -17,10 +15,13 @@ import se.su.dsv.scipro.test.UserBuilder;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import java.time.LocalDate;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Mockito.*;
import static org.mockito.Mockito.isA;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@ExtendWith(MockitoExtension.class)
public class ProjectServiceImplTest {
@ -47,6 +48,7 @@ public class ProjectServiceImplTest {
project = Project.builder()
.title("Some title")
.projectType(SOME_PROJECT_TYPE)
.startDate(LocalDate.now())
.headSupervisor(headSupervisorUser)
.stateOfMind(StateOfMind.FINE)
.build();

@ -5,6 +5,8 @@ import org.junit.jupiter.api.Test;
import se.su.dsv.scipro.system.DegreeType;
import se.su.dsv.scipro.system.ProjectType;
import java.time.LocalDate;
import static org.hamcrest.core.IsEqual.equalTo;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.hamcrest.MatcherAssert.assertThat;
@ -16,7 +18,7 @@ public class ProjectTest {
@BeforeEach
public void setUp() throws Exception {
ProjectType bachelor = new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor");
project = Project.builder().title("Foo").projectType(bachelor).build();
project = Project.builder().title("Foo").projectType(bachelor).startDate(LocalDate.now()).build();
}
@Test

@ -9,6 +9,7 @@ import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.test.IntegrationTest;
import javax.inject.Inject;
import java.time.LocalDate;
import java.util.Arrays;
import java.util.List;
@ -39,13 +40,14 @@ public class TestProject extends IntegrationTest {
project1 = Project.builder().
title("Project 1").
projectType(bachelor).
startDate(LocalDate.now()).
headSupervisor(employeeUser).
projectStatus(ProjectStatus.ACTIVE).
build();
project1.addProjectParticipant(authorUser);
project1 = save(project1);
project2 = Project.builder().title("Tester 2").projectType(master).headSupervisor(employeeUser).projectStatus(ProjectStatus.INACTIVE).build();
project2 = Project.builder().title("Tester 2").projectType(master).startDate(LocalDate.now()).headSupervisor(employeeUser).projectStatus(ProjectStatus.INACTIVE).build();
project2.addProjectParticipant(authorUser);
project2 = save(project2);

@ -1,6 +1,5 @@
package se.su.dsv.scipro.report;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import se.su.dsv.scipro.finalseminar.FinalSeminar;
@ -15,11 +14,14 @@ import se.su.dsv.scipro.test.IntegrationTest;
import se.su.dsv.scipro.util.Either;
import javax.inject.Inject;
import java.time.LocalDate;
import java.util.*;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.*;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static se.su.dsv.scipro.report.GradingReportServiceImpl.OPPOSITION_ENGLISH;
import static se.su.dsv.scipro.report.GradingReportServiceImpl.OPPOSITION_SWEDISH;
@ -298,7 +300,7 @@ public class GradingReportServiceImplIntegrationTest extends IntegrationTest {
private Project createProject(ProjectType projectType, int credits) {
TreeSet<User> projectParticipants = new TreeSet<>(new User.ByNameComparator());
projectParticipants.addAll(Collections.singletonList(student));
Project project = Project.builder().title("some title").projectType(projectType).projectParticipants(projectParticipants).headSupervisor(createSupervisor()).build();
Project project = Project.builder().title("some title").projectType(projectType).startDate(LocalDate.now()).projectParticipants(projectParticipants).headSupervisor(createSupervisor()).build();
project.setCredits(credits);
return save(project);
}

@ -14,6 +14,8 @@ import se.su.dsv.scipro.system.User;
import javax.persistence.EntityManager;
import java.time.LocalDate;
import static org.mockito.ArgumentMatchers.isA;
import static org.mockito.Mockito.verify;
@ -32,7 +34,7 @@ public class GradingReportServiceImplTest {
public void setUp() throws Exception {
final ProjectType bachelor = new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor");
final GradingReportTemplate gradingReportTemplate = new GradingReportTemplate(bachelor, 15);
final Project project = Project.builder().title("My project").projectType(bachelor).build();
final Project project = Project.builder().title("My project").projectType(bachelor).startDate(LocalDate.now()).build();
final User user = User.builder().firstName("John").lastName("Doe").emailAddress("john@example.com").build();
reviewerReport = gradingReportTemplate.createReviewerReport(project);
supervisorReport = gradingReportTemplate.createSupervisorReport(project, user);

@ -10,6 +10,7 @@ import se.su.dsv.scipro.system.DegreeType;
import se.su.dsv.scipro.system.ProjectType;
import se.su.dsv.scipro.system.User;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
@ -90,7 +91,7 @@ public class GradingReportTemplateTest {
}
private Project createProject(ProjectType projectType) {
return Project.builder().title("Foo").projectType(projectType).build();
return Project.builder().title("Foo").projectType(projectType).startDate(LocalDate.now()).build();
}
private GradingReportTemplate createBachelorTemplate() {

@ -7,6 +7,7 @@ import se.su.dsv.scipro.system.DegreeType;
import se.su.dsv.scipro.system.ProjectType;
import se.su.dsv.scipro.system.User;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
@ -22,7 +23,7 @@ public class SupervisorGradingReportTest {
@BeforeEach
public void prepareTemplate() {
ProjectType bachelor = new ProjectType(DegreeType.BACHELOR, "bachelor", "bachelor");
project = Project.builder().title("Foo").projectType(bachelor).build();
project = Project.builder().title("Foo").projectType(bachelor).startDate(LocalDate.now()).build();
gradingReportTemplate = new GradingReportTemplate(bachelor, 30);
addCriteria(gradingReportTemplate);

@ -9,6 +9,7 @@ import se.su.dsv.scipro.system.ProjectType;
import se.su.dsv.scipro.system.User;
import javax.inject.Inject;
import java.time.LocalDate;
import java.util.Optional;
import java.util.function.Function;
@ -28,7 +29,7 @@ public class FinalSeminarApprovalServiceImplTest extends ReviewingModuleTest {
User reviewer = save(User.builder().firstName("Ronny").lastName("Reviewer").emailAddress("reviewer@dsv.su.se").build());
User headSupervisor = save(User.builder().firstName("John").lastName("Doe").emailAddress("john@example.com").build());
ProjectType bachelor = save(new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor"));
project = save(Project.builder().title("My project").projectType(bachelor).headSupervisor(headSupervisor).build());
project = save(Project.builder().title("My project").projectType(bachelor).startDate(LocalDate.now()).headSupervisor(headSupervisor).build());
project.addReviewer(reviewer);
}

@ -7,6 +7,7 @@ import se.su.dsv.scipro.mail.MailEvent;
import se.su.dsv.scipro.project.Project;
import se.su.dsv.scipro.system.*;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
import java.util.Optional;
@ -71,7 +72,7 @@ public class ReviewerDecisionReminderWorkerTest {
private Project newProject() {
ProjectType projectType = new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor");
Project project = Project.builder().title("This is a title").projectType(projectType).build();
Project project = Project.builder().title("This is a title").projectType(projectType).startDate(LocalDate.now()).build();
project.addReviewer(newUser());
project.setHeadSupervisor(newUser());
project.setId(555L);

@ -19,6 +19,7 @@ import se.su.dsv.scipro.system.DegreeType;
import se.su.dsv.scipro.system.ProjectType;
import se.su.dsv.scipro.system.User;
import java.time.LocalDate;
import java.util.Collections;
import java.util.Optional;
@ -79,6 +80,6 @@ public class ReviewerInteractionServiceImplTest {
private Project createProject() {
final ProjectType bachelor = new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor");
return Project.builder().title("Project").projectType(bachelor).build();
return Project.builder().title("Project").projectType(bachelor).startDate(LocalDate.now()).build();
}
}

@ -12,6 +12,7 @@ import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.util.Either;
import javax.inject.Inject;
import java.time.LocalDate;
import java.util.Optional;
import static org.hamcrest.CoreMatchers.any;
@ -37,7 +38,7 @@ public class ReviewingServiceImplTest extends ReviewingModuleTest {
reviewer = save(User.builder().firstName("Ronny").lastName("Reviewer").emailAddress("reviewer@dsv.su.se").build());
User headSupervisor = save(User.builder().firstName("John").lastName("Doe").emailAddress("john@example.com").build());
ProjectType bachelor = save(new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor"));
project = save(Project.builder().title("My project").projectType(bachelor).headSupervisor(headSupervisor).build());
project = save(Project.builder().title("My project").projectType(bachelor).startDate(LocalDate.now()).headSupervisor(headSupervisor).build());
project.addReviewer(reviewer);
}

@ -1,17 +1,19 @@
package se.su.dsv.scipro.system;
import org.hamcrest.CoreMatchers;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import se.su.dsv.scipro.project.Project;
import se.su.dsv.scipro.test.IntegrationTest;
import javax.inject.Inject;
import java.util.List;
import java.time.LocalDate;
import java.util.*;
import static java.util.Arrays.asList;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.*;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
public class ProjectTypeServiceImplIntegrationTest extends IntegrationTest {
@ -47,8 +49,8 @@ public class ProjectTypeServiceImplIntegrationTest extends IntegrationTest {
ProjectType bachelor = createProjectType(DegreeType.BACHELOR, "bachelor");
createProjectType(DegreeType.MASTER, "master");
save(Project.builder().title("bachelor").projectType(bachelor).headSupervisor(supervisor).build());
save(Project.builder().title("another bachelor").projectType(bachelor).headSupervisor(supervisor).build());
save(Project.builder().title("bachelor").projectType(bachelor).startDate(LocalDate.now()).headSupervisor(supervisor).build());
save(Project.builder().title("another bachelor").projectType(bachelor).startDate(LocalDate.now()).headSupervisor(supervisor).build());
List<ProjectType> projectTypes = projectTypeService.findBySupervisorProjects(supervisor);
@ -62,8 +64,8 @@ public class ProjectTypeServiceImplIntegrationTest extends IntegrationTest {
ProjectType bachelor = createProjectType(DegreeType.BACHELOR, "bachelor");
ProjectType master = createProjectType(DegreeType.MASTER, "master");
save(Project.builder().title("bachelor").projectType(bachelor).headSupervisor(supervisor).build());
Project reviewingProject = Project.builder().title("another bachelor").projectType(master).headSupervisor(save(User.builder().firstName("Bob").lastName("Sponge").emailAddress("bob@example.com").build())).build();
save(Project.builder().title("bachelor").projectType(bachelor).startDate(LocalDate.now()).headSupervisor(supervisor).build());
Project reviewingProject = Project.builder().title("another bachelor").projectType(master).startDate(LocalDate.now()).headSupervisor(save(User.builder().firstName("Bob").lastName("Sponge").emailAddress("bob@example.com").build())).build();
reviewingProject.addReviewer(supervisor);
save(reviewingProject);

@ -7,6 +7,8 @@ import se.su.dsv.scipro.project.Project;
import se.su.dsv.scipro.system.DegreeType;
import se.su.dsv.scipro.system.ProjectType;
import java.time.LocalDate;
public class ForumBuilder {
private static long ID = 1;
@ -26,7 +28,7 @@ public class ForumBuilder {
public ProjectThread createThread() {
ProjectType projectType = new ProjectType(DegreeType.BACHELOR, "Some project type", "Some description");
Project project = Project.builder().title("Some title").projectType(projectType).build();
Project project = Project.builder().title("Some title").projectType(projectType).startDate(LocalDate.now()).build();
project.setId(1L);
ForumThread forumThread = new ForumThread();
forumThread.setSubject("Test subject");

@ -10,6 +10,7 @@ import se.su.dsv.scipro.system.ProjectType;
import se.su.dsv.scipro.system.User;
import java.lang.reflect.Field;
import java.time.LocalDate;
import java.util.*;
public class ObjectMother {
@ -21,10 +22,11 @@ public class ObjectMother {
public static final Project SOME_PROJECT = Project.builder()
.title("Some title")
.projectType(BACHELOR)
.startDate(LocalDate.now())
.headSupervisor(User.builder().firstName("Foo").lastName("Bar").emailAddress("foo@dsv.su.se").build())
.build();
public static final Project SOME_MASTER_PROJECT = Project.builder().title("Some title").projectType(MASTER).build();
public static final Project SOME_MASTER_PROJECT = Project.builder().title("Some title").projectType(MASTER).startDate(LocalDate.now()).build();
static {
DomainObjects.injectId(BACHELOR, 1L);

@ -7,6 +7,8 @@ import se.su.dsv.scipro.project.Project;
import se.su.dsv.scipro.system.DegreeType;
import se.su.dsv.scipro.system.ProjectType;
import java.time.LocalDate;
public class SeminarBuilder {
public FinalSeminar create() {
@ -21,6 +23,7 @@ public class SeminarBuilder {
Project project = Project.builder()
.title("Some title")
.projectType(projectType)
.startDate(LocalDate.now())
.build();
seminar.setProject(project);
}

@ -30,6 +30,7 @@ public class Daisy implements IdeaCreationJudge {
Project project = Project.builder()
.title(idea.getTitle())
.projectType(idea.getProjectType())
.startDate(idea.getCourseStartDate())
.headSupervisor(idea.getMatch().getSupervisor())
.projectParticipants(getAuthors(idea))
.build();

@ -173,8 +173,7 @@ public class ProjectExporter extends AbstractWorker {
UnitWithID unit = new UnitWithID();
unit.setId(project.getHeadSupervisor().getUnit().getIdentifier());
Calendar startDate = Calendar.getInstance();
startDate.setTime(project.getDateCreated());
Calendar startDate = SciProUtilities.toCalendar(project.getStartDate());
String title = finalThesis
.map(FinalThesis::getSwedishTitle)

@ -48,8 +48,7 @@ public class ExternalExporterDaisyImpl implements ExternalExporter {
ThesisToBeCreated exportProjectDTO = new ThesisToBeCreated();
exportProjectDTO.setTitle(truncate(project.getTitle()));
Calendar startDate = Calendar.getInstance();
startDate.setTime(project.getDateCreated());
Calendar startDate = SciProUtilities.toCalendar(project.getStartDate());
exportProjectDTO.setStartDate(startDate);
exportProjectDTO.setEndDate(SciProUtilities.toCalendar(project.getExpectedEndDate()));
exportProjectDTO.setUnit(unitDTO);

@ -27,6 +27,7 @@ import se.su.dsv.scipro.workerthreads.WorkerDataService;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import java.time.LocalDate;
import java.util.*;
import static org.junit.jupiter.api.Assertions.assertEquals;
@ -83,6 +84,7 @@ public class ProjectExporterTest {
newProject = Project.builder()
.title("New project")
.projectType(bachelor)
.startDate(LocalDate.now())
.headSupervisor(supervisor)
.build();
@ -90,6 +92,7 @@ public class ProjectExporterTest {
exportedProject = Project.builder()
.title("Exported project")
.projectType(master)
.startDate(LocalDate.now())
.headSupervisor(supervisor)
.identifier(8)
.build();

@ -9,13 +9,14 @@ import org.mockito.junit.jupiter.MockitoExtension;
import se.su.dsv.scipro.daisyExternal.http.DaisyAPI;
import se.su.dsv.scipro.io.dto.ThesisToBeCreated;
import se.su.dsv.scipro.project.Project;
import se.su.dsv.scipro.reusable.SciProUtilities;
import se.su.dsv.scipro.system.DegreeType;
import se.su.dsv.scipro.system.ProjectType;
import se.su.dsv.scipro.system.Unit;
import javax.ws.rs.core.Response;
import java.net.URI;
import java.util.*;
import java.time.LocalDate;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
@ -44,7 +45,7 @@ public class ExternalExporterDaisyImplTest {
public void truncates_title_length_if_too_long() throws Exception {
String title = "a".repeat(ExternalExporterDaisyImpl.MAX_TITLE_LENGTH);
String longerTitle = title + "more title";
Project project = Project.builder().title(longerTitle).projectType(BACHELOR).dateCreated(new Date()).build();
Project project = Project.builder().title(longerTitle).projectType(BACHELOR).startDate(LocalDate.now()).build();
final Unit unit = new Unit();
unit.setIdentifier(4);
@ -58,8 +59,8 @@ public class ExternalExporterDaisyImplTest {
@Test
public void application_period_start_date_on_project_to_be_exported() throws Exception {
Date daisyStartDate = new Date();
Project project = Project.builder().title("hej").projectType(BACHELOR).dateCreated(daisyStartDate).build();
LocalDate daisyStartDate = LocalDate.now();
Project project = Project.builder().title("hej").projectType(BACHELOR).startDate(daisyStartDate).build();
final Unit unit = new Unit();
unit.setIdentifier(8);
@ -68,6 +69,6 @@ public class ExternalExporterDaisyImplTest {
ArgumentCaptor<ThesisToBeCreated> captor = ArgumentCaptor.forClass(ThesisToBeCreated.class);
verify(daisyAPI).createProject(captor.capture());
assertEquals(captor.getValue().getStartDate().getTime(), daisyStartDate);
assertEquals(captor.getValue().getStartDate(), SciProUtilities.toCalendar(daisyStartDate));
}
}

@ -1,15 +1,19 @@
package se.su.dsv.scipro.admin.pages;
import com.google.common.eventbus.EventBus;
import org.apache.wicket.markup.html.form.*;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.FormComponent;
import org.apache.wicket.markup.html.form.LambdaChoiceRenderer;
import org.apache.wicket.markup.html.form.RequiredTextField;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LambdaModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.util.SetModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import se.su.dsv.scipro.components.AddUsersPanel;
import se.su.dsv.scipro.components.BootstrapDateField;
import se.su.dsv.scipro.components.BootstrapDatePicker;
import se.su.dsv.scipro.components.ResearchAreaChoiceRenderer;
import se.su.dsv.scipro.components.ResearchAreasModel;
@ -122,7 +126,8 @@ public class AdminEditProjectPage extends AbstractAdminProjectPage implements Me
new ResearchAreaChoiceRenderer(this));
researchArea.setNullValid(true);
add(researchArea);
FormComponent<Date> startDate = new BootstrapDateField("startDate", LambdaModel.of(model, Project::getDateCreated, Project::setDateCreated));
FormComponent<LocalDate> startDate = new TextField<>("startDate", LambdaModel.of(model, Project::getStartDate, Project::setStartDate), LocalDate.class);
startDate.add(new BootstrapDatePicker());
startDate.setRequired(true);
add(startDate);
FormComponent<LocalDate> endDate = new TextField<>("endDate", LambdaModel.of(model, Project::getExpectedEndDate, Project::setExpectedEndDate), LocalDate.class);

@ -0,0 +1,24 @@
package se.su.dsv.scipro.components;
import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
import org.apache.wicket.extensions.markup.html.repeater.data.table.LambdaColumn;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.model.IModel;
import org.danekja.java.util.function.serializable.SerializableFunction;
import java.time.temporal.Temporal;
public class TemporalColumn<T, S> extends LambdaColumn<T, S> {
public TemporalColumn(IModel<String> displayModel, SerializableFunction<T, Temporal> function) {
super(displayModel, function);
}
public TemporalColumn(IModel<String> displayModel, S sortProperty, SerializableFunction<T, Temporal> function) {
super(displayModel, sortProperty, function);
}
@Override
public void populateItem(Item<ICellPopulator<T>> item, String componentId, IModel<T> rowModel) {
item.add(new NoBreakLabel(componentId, getDataModel(rowModel)));
}
}

@ -19,7 +19,12 @@ import org.apache.wicket.model.LambdaModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import se.su.dsv.scipro.admin.pages.AdminEditProjectPage;
import se.su.dsv.scipro.components.*;
import se.su.dsv.scipro.components.EmployeeAutoCompleteDivPanel;
import se.su.dsv.scipro.components.EnumLambdaColumn;
import se.su.dsv.scipro.components.ExportableDataPanel;
import se.su.dsv.scipro.components.LinkWrapper;
import se.su.dsv.scipro.components.ListAdapterModel;
import se.su.dsv.scipro.components.TemporalColumn;
import se.su.dsv.scipro.components.datatables.MultipleUsersColumn;
import se.su.dsv.scipro.components.datatables.UserColumn;
import se.su.dsv.scipro.data.DetachableServiceModel;
@ -34,12 +39,16 @@ import se.su.dsv.scipro.project.ProjectStatus;
import se.su.dsv.scipro.project.ReviewerAssignedEvent;
import se.su.dsv.scipro.security.auth.roles.Roles;
import se.su.dsv.scipro.session.SciProSession;
import se.su.dsv.scipro.system.*;
import se.su.dsv.scipro.system.DegreeType;
import se.su.dsv.scipro.system.ProjectType;
import se.su.dsv.scipro.system.ProjectTypeService;
import se.su.dsv.scipro.system.ResearchArea;
import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.system.UserService;
import se.su.dsv.scipro.util.PageParameterKeys;
import javax.inject.Inject;
import java.util.*;
import java.util.stream.Collectors;
public class ProjectDataPanel extends Panel {
@ -87,7 +96,7 @@ public class ProjectDataPanel extends Panel {
private List<IColumn<Project, String>> createColumns() {
List<IColumn<Project, String>> columns = new ArrayList<>();
final boolean isAdmin = SciProSession.get().authorizedForRole(Roles.ADMIN);
columns.add(new DateColumn<>(Model.of("Started"), Project::getDateCreated, "dateCreated"));
columns.add(new TemporalColumn<>(Model.of("Started"), "startDate", Project::getStartDate));
if (SciProSession.get().authorizedForRole(Roles.SYSADMIN)) {
columns.add(titleColumn());
}

@ -68,7 +68,7 @@ public class ProjectExternalOrganisationPanel extends Panel {
private List<IColumn<Project, String>> createColumns() {
List<IColumn<Project, String>> columns = new ArrayList<>();
columns.add(new DateColumn<>(Model.of("Started"), Project::getDateCreated, "dateCreated"));
columns.add(new TemporalColumn<>(Model.of("Started"), "startDate", Project::getStartDate));
columns.add(titleColumn());
columns.add(new LambdaColumn<>(Model.of("Type"), "projectType.name", Project::getProjectTypeName));
columns.add(new EnumLambdaColumn<>(Model.of("Status"), "projectStatus", Project::getProjectStatus));

@ -24,11 +24,7 @@ import se.su.dsv.scipro.util.Either;
import javax.inject.Inject;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.List;
import java.util.Optional;
import java.util.*;
abstract class AbstractExaminationsPanel extends GenericPanel<User> {
@ -143,7 +139,7 @@ abstract class AbstractExaminationsPanel extends GenericPanel<User> {
reportedModel);
reportedField.setRequired(true);
reportedField.setEndDate(LocalDate.now());
final LocalDate projectStarted = projectModel.getObject().getDateCreated().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
final LocalDate projectStarted = projectModel.getObject().getStartDate();
reportedField.setStartDate(projectStarted);
queue(reportedField);
}

@ -6,8 +6,6 @@ import org.apache.wicket.model.IModel;
import se.su.dsv.scipro.project.Project;
import se.su.dsv.scipro.system.DegreeType;
import java.util.Calendar;
public class TemplatePanel extends Panel {
public static final String BACHELOR_CONTAINER = "bachelorContainer";
@ -63,9 +61,7 @@ public class TemplatePanel extends Panel {
}
private int getYear(final Project project) {
final Calendar calendar = Calendar.getInstance();
calendar.setTime(project.getDateCreated());
return calendar.get(Calendar.YEAR);
return project.getStartDate().getYear();
}
}

@ -18,7 +18,7 @@ public class MileStoneCounterPanel extends Panel {
public MileStoneCounterPanel(String id, IModel<Long> completed, MilestoneActivityTemplate.Type type, IModel<Project> projectIModel) {
super(id);
add(new Label(COMPLETED, completed));
add(new Label(TOTAL, Model.of(activityService.countActivities(type, projectIModel.getObject().getProjectType(), projectIModel.getObject().getDateCreated()))));
add(new Label(TOTAL, Model.of(activityService.countActivities(type, projectIModel.getObject().getProjectType(), projectIModel.getObject().getStartDate()))));
}
static final String COMPLETED = "completed";

@ -140,7 +140,7 @@ public class MileStoneOverviewPanel extends Panel {
return new LoadableDetachableModel<>() {
@Override
protected List<MilestonePhaseTemplate> load() {
return phaseService.findAllActive(projectModel.getObject().getDateCreated());
return phaseService.findAllActive(projectModel.getObject().getStartDate());
}
};
}

@ -59,7 +59,7 @@ public class MileStoneProgressPanel extends Panel {
return new LoadableDetachableModel<List<MilestoneActivityTemplate>>() {
@Override
protected List<MilestoneActivityTemplate> load() {
return activityService.getActivities(type, projectIModel.getObject().getProjectType(), projectIModel.getObject().getDateCreated());
return activityService.getActivities(type, projectIModel.getObject().getProjectType(), projectIModel.getObject().getStartDate());
}
};
}

@ -93,7 +93,7 @@ public class MilestoneSummaryPanel extends Panel {
@Override
protected void onConfigure() {
super.onConfigure();
setVisibilityAllowed(activityService.countActivities(projectModel.getObject().getProjectType(), projectModel.getObject().getDateCreated()) != 0);
setVisibilityAllowed(activityService.countActivities(projectModel.getObject().getProjectType(), projectModel.getObject().getStartDate()) != 0);
}
static final String STUDENT_LIST = "studentList";

@ -5,11 +5,11 @@ import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.panel.GenericPanel;
import org.apache.wicket.model.*;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LambdaModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import se.su.dsv.scipro.components.AutoHidingListView;
import se.su.dsv.scipro.components.ListAdapterModel;
import se.su.dsv.scipro.date.DateService;
import se.su.dsv.scipro.profile.UserLinkPanel;
import se.su.dsv.scipro.project.Project;
import se.su.dsv.scipro.project.pages.SupervisorEditProjectPage;
@ -18,8 +18,7 @@ import se.su.dsv.scipro.system.ResearchArea;
import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.util.PageParameterKeys;
import javax.inject.Inject;
import java.util.List;
import java.util.*;
public class ProjectHeaderPanel extends GenericPanel<Project> {
static final String TITLE = "title";
@ -37,9 +36,6 @@ public class ProjectHeaderPanel extends GenericPanel<Project> {
static final String EDIT_LINK = "editLink";
static final String CREDITS = "credits";
@Inject
private DateService dateService;
public ProjectHeaderPanel(String id, IModel<Project> model) {
super(id, model);
@ -82,7 +78,7 @@ public class ProjectHeaderPanel extends GenericPanel<Project> {
}
private void addMisc(IModel<Project> model) {
add(new Label(START_DATE, getStartDate(model)));
add(new Label(START_DATE, model.map(Project::getStartDate)));
add(new Label("expected_end_date", model.map(Project::getExpectedEndDate)) {
@Override
protected void onConfigure() {
@ -93,13 +89,6 @@ public class ProjectHeaderPanel extends GenericPanel<Project> {
add(new UserLinkPanel(SUPERVISOR, LambdaModel.of(model, Project::getHeadSupervisor, Project::setHeadSupervisor)));
}
private IModel<String> getStartDate(IModel<Project> model) {
if (model.getObject().getDateCreated() == null) {
return new StringResourceModel("noStartDate", ProjectHeaderPanel.this, null);
}
return new Model<>(dateService.format(model.getObject().getDateCreated()));
}
private void addAuthors(IModel<Project> model) {
add(new ListView<>(AUTHOR_LIST, new ListAdapterModel<>(LambdaModel.of(model, Project::getProjectParticipants, Project::setProjectParticipants))) {
@Override

@ -65,7 +65,7 @@ public class ProjectSubTabMenuPanel extends AbstractMenuPanel {
final Project project = active.getObject();
List<MenuItem> itemList = new ArrayList<>();
itemList.add(new MenuItem(OVERVIEW, ProjectDetailsPage.class, projectParams));
if (milestoneActivityTemplateService.countActivities(project.getProjectType(), project.getDateCreated()) != 0) {
if (milestoneActivityTemplateService.countActivities(project.getProjectType(), project.getStartDate()) != 0) {
itemList.add(new MenuItem(MILESTONES, ProjectMileStonePage.class, projectParams));
}
itemList.add(new MenuItem(ACTIVITY_PLAN, ProjectActivityPlanPage.class, MenuHighlightActivityPlan.class, projectParams));

@ -2,35 +2,27 @@ package se.su.dsv.scipro.project.panels;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.LambdaChoiceRenderer;
import org.apache.wicket.markup.html.form.RequiredTextField;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.markup.html.panel.GenericPanel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LambdaModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.ResourceModel;
import org.apache.wicket.model.util.SetModel;
import se.su.dsv.scipro.components.AddUsersPanel;
import se.su.dsv.scipro.components.BootstrapDateField;
import se.su.dsv.scipro.components.BootstrapDatePicker;
import se.su.dsv.scipro.components.InfoPanel;
import se.su.dsv.scipro.components.ResearchAreaChoiceRenderer;
import se.su.dsv.scipro.components.ResearchAreasModel;
import se.su.dsv.scipro.project.Project;
import se.su.dsv.scipro.project.ProjectService;
import se.su.dsv.scipro.system.ResearchArea;
import se.su.dsv.scipro.system.ResearchAreaService;
import se.su.dsv.scipro.system.User;
import javax.inject.Inject;
import java.time.LocalDate;
import java.util.Comparator;
import java.util.HashSet;
import java.util.List;
import java.util.SortedSet;
import java.util.TreeSet;
import java.util.*;
public class SupervisorEditProjectPanel extends GenericPanel<Project> {
@ -71,7 +63,8 @@ public class SupervisorEditProjectPanel extends GenericPanel<Project> {
private void initComponents() {
add(new RequiredTextField<>(TITLE, LambdaModel.of(getModel(), Project::getTitle, Project::setTitle)));
BootstrapDateField startDate = new BootstrapDateField("startDate", LambdaModel.of(getModel(), Project::getDateCreated, Project::setDateCreated));
TextField<LocalDate> startDate = new TextField<>("startDate", LambdaModel.of(getModel(), Project::getStartDate, Project::setStartDate), LocalDate.class);
startDate.add(new BootstrapDatePicker());
startDate.setRequired(true);
add(startDate);
final TextField<LocalDate> expectedEndDate = new TextField<>(

@ -168,7 +168,7 @@ public class ReviewerStartPage extends ReviewerPage {
private List<IColumn<Project, String>> createColumns() {
List<IColumn<Project, String>> columns = new ArrayList<>();
columns.add(new DateColumn<>(Model.of("Started"), Project::getDateCreated));
columns.add(new TemporalColumn<>(Model.of("Started"), Project::getStartDate));
columns.add(new LambdaColumn<>(Model.of("Type"), Project::getProjectTypeName));
columns.add(new AbstractExportableColumn<>(Model.of("Title")) {
@Override

@ -104,7 +104,7 @@ public class AdminFinalSeminarStatisticsPage extends AbstractAdminStatisticsPage
private List<IColumn<Project, String>> createColumns() {
List<IColumn<Project, String>> columns = new ArrayList<>();
columns.add(new DateColumn<>(Model.of("Project started"), Project::getDateCreated, "dateCreated"));
columns.add(new TemporalColumn<>(Model.of("Project started"), "startDate", Project::getStartDate));
columns.add(new LambdaColumn<>(Model.of("Title"), "title", Project::getTitle));
columns.add(new LambdaColumn<>(Model.of("Type"), "projectType.name", Project::getProjectTypeName));
columns.add(new EnumLambdaColumn<>(Model.of("Status"), Project::getProjectStatus));

@ -6,6 +6,7 @@ import org.apache.wicket.model.IModel;
import org.apache.wicket.model.ResourceModel;
import se.su.dsv.scipro.components.DateColumn;
import se.su.dsv.scipro.components.EnumLambdaColumn;
import se.su.dsv.scipro.components.TemporalColumn;
import se.su.dsv.scipro.components.datatables.UserColumn;
import se.su.dsv.scipro.milestones.dataobjects.Milestone;
import se.su.dsv.scipro.milestones.dataobjects.MilestoneActivityTemplate;
@ -23,7 +24,7 @@ public class IndividualMilestoneDetailsPanel extends AbstractMilestoneDetailsPan
@Override
protected List<IColumn<Milestone, String>> createColumns() {
List<IColumn<Milestone, String>> columns = new ArrayList<>();
columns.add(new DateColumn<>(new ResourceModel("project.creation.date"), m -> m.getProject().getDateCreated(), "project.dateCreated"));
columns.add(new TemporalColumn<>(new ResourceModel("project.creation.date"), "project.startDate", m -> m.getProject().getStartDate()));
columns.add(new LambdaColumn<>(new ResourceModel("project.title"), "project.title", m -> m.getProject().getTitle()));
columns.add(new LambdaColumn<>(new ResourceModel("project.type"), "project.projectType.name", m -> m.getProject().getProjectTypeName()));
columns.add(new UserColumn<>(new ResourceModel("author"), Milestone::getUser));

@ -9,10 +9,10 @@ import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.Model;
import se.su.dsv.scipro.components.DateColumn;
import se.su.dsv.scipro.components.EnumLambdaColumn;
import se.su.dsv.scipro.components.ExportableDataPanel;
import se.su.dsv.scipro.components.ListAdapterModel;
import se.su.dsv.scipro.components.TemporalColumn;
import se.su.dsv.scipro.components.datatables.MultipleUsersColumn;
import se.su.dsv.scipro.components.datatables.UserColumn;
import se.su.dsv.scipro.data.DetachableServiceModel;
@ -25,9 +25,7 @@ import se.su.dsv.scipro.project.ProjectService;
import se.su.dsv.scipro.system.User;
import javax.inject.Inject;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.*;
public class MilestoneStatisticsProgressPanel extends Panel {
@Inject
@ -56,7 +54,7 @@ public class MilestoneStatisticsProgressPanel extends Panel {
private List<? extends IColumn<Project, String>> columns() {
List<IColumn<Project, String>> columns = new ArrayList<>();
columns.add(new DateColumn<>(Model.of("Project started"), Project::getDateCreated, "dateCreated"));
columns.add(new TemporalColumn<>(Model.of("Project started"), "startDate", Project::getStartDate));
columns.add(new LambdaColumn<>(Model.of("Title"), "title", Project::getTitle));
columns.add(new LambdaColumn<>(Model.of("Type"), "projectType.name", Project::getProjectTypeName));
columns.add(new MultipleUsersColumn<>(Model.of("Authors")) {

@ -7,6 +7,7 @@ import org.apache.wicket.model.Model;
import se.su.dsv.scipro.components.DateColumn;
import se.su.dsv.scipro.components.EnumLambdaColumn;
import se.su.dsv.scipro.components.ListAdapterModel;
import se.su.dsv.scipro.components.TemporalColumn;
import se.su.dsv.scipro.components.datatables.MultipleUsersColumn;
import se.su.dsv.scipro.components.datatables.UserColumn;
import se.su.dsv.scipro.milestones.dataobjects.Milestone;
@ -26,7 +27,7 @@ public class ProjectMilestoneDetailsPanel extends AbstractMilestoneDetailsPanel
@Override
protected List<IColumn<Milestone, String>> createColumns() {
List<IColumn<Milestone, String>> columns = new ArrayList<>();
columns.add(new DateColumn<>(Model.of("Project started"), m -> m.getProject().getDateCreated(), "project.dateCreated"));
columns.add(new TemporalColumn<>(Model.of("Project started"), "project.startDate", m -> m.getProject().getStartDate()));
columns.add(new LambdaColumn<>(Model.of("Title"), "project.title", m -> m.getProject().getTitle()));
columns.add(new LambdaColumn<>(Model.of("Type"), "project.projectType.name", m -> m.getProject().getProjectTypeName()));
columns.add(new MultipleUsersColumn<>(Model.of("Authors")) {

@ -72,7 +72,7 @@ public class SupervisorMyProjectsPanel extends Panel {
private List<IColumn<Project, String>> createColumns() {
List<IColumn<Project, String>> columns = new ArrayList<>();
columns.add(new ProjectStateColumn(Model.of("State"), "stateOfMind"));
columns.add(new DateColumn<>(Model.of("Started"), Project::getDateCreated, "dateCreated"));
columns.add(new TemporalColumn<>(Model.of("Started"), "startDate", Project::getStartDate));
columns.add(new LambdaColumn<>(Model.of("Type"), "projectType.name", Project::getProjectTypeName));
columns.add(new ProjectTitleColumn(Model.of("Title"), "title"));
columns.add(new MultipleUsersColumn<>(Model.of("Authors")) {

@ -91,7 +91,7 @@ public class SupervisorSubTabMenuPanel extends AbstractMenuPanel {
private boolean mileStonesAreAvailable() {
Project project = projectModel.getObject();
return milestoneActivityTemplateService.countActivities(project.getProjectType(), project.getDateCreated()) != 0;
return milestoneActivityTemplateService.countActivities(project.getProjectType(), project.getStartDate()) != 0;
}
}

@ -16,6 +16,7 @@ import se.su.dsv.scipro.system.ProjectType;
import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.util.PageParameterKeys;
import java.time.LocalDate;
import java.util.Arrays;
public class ActivityPlanPanelTest extends SciProTest {
@ -25,7 +26,7 @@ public class ActivityPlanPanelTest extends SciProTest {
@BeforeEach
public void setUp() throws Exception {
project = Project.builder().title("My project").projectType(new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor")).headSupervisor(new User()).build();
project = Project.builder().title("My project").projectType(new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor")).startDate(LocalDate.now()).headSupervisor(new User()).build();
project.setId(20934L);
}

@ -21,6 +21,7 @@ import se.su.dsv.scipro.test.DomainObjects;
import se.su.dsv.scipro.test.UserBuilder;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.*;
import static org.mockito.ArgumentMatchers.isA;
@ -44,6 +45,7 @@ public class EditActivityPanelTest extends SciProTest {
project = Project.builder()
.title("some title")
.projectType(new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor"))
.startDate(LocalDate.now())
.headSupervisor(supervisor)
.build();
DomainObjects.injectId(project, 1L);

@ -14,6 +14,8 @@ import se.su.dsv.scipro.test.DomainObjects;
import se.su.dsv.scipro.test.UserBuilder;
import se.su.dsv.scipro.util.PageParameterKeys;
import java.time.LocalDate;
public class ProjectActivityPlanPageTest extends PageTest {
@BeforeEach
@ -24,6 +26,7 @@ public class ProjectActivityPlanPageTest extends PageTest {
Project project = Project.builder()
.title("some title")
.projectType(new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor"))
.startDate(LocalDate.now())
.headSupervisor(supervisor)
.build();
DomainObjects.injectId(project, 1L);

@ -16,6 +16,7 @@ import se.su.dsv.scipro.test.DomainObjects;
import se.su.dsv.scipro.test.UserBuilder;
import se.su.dsv.scipro.util.PageParameterKeys;
import java.time.LocalDate;
import java.util.Collections;
import java.util.HashSet;
import java.util.TreeSet;
@ -42,6 +43,7 @@ public class ProjectEditActivityPageTest extends SciProTest {
Project project = Project.builder()
.title("some title")
.projectType(new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor"))
.startDate(LocalDate.now())
.headSupervisor(supervisor)
.build();
DomainObjects.injectId(project, 1L);
@ -69,6 +71,7 @@ public class ProjectEditActivityPageTest extends SciProTest {
Project project = Project.builder()
.title("some title")
.projectType(new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor"))
.startDate(LocalDate.now())
.projectParticipants(projectParticipants)
.headSupervisor(supervisor)
.build();

@ -16,6 +16,7 @@ import se.su.dsv.scipro.test.DomainObjects;
import se.su.dsv.scipro.test.UserBuilder;
import se.su.dsv.scipro.util.PageParameterKeys;
import java.time.LocalDate;
import java.util.Collections;
import java.util.HashSet;
@ -38,6 +39,7 @@ public class SupervisorEditActivityPageTest extends SciProTest {
Project project = Project.builder()
.title("some title")
.projectType(new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor"))
.startDate(LocalDate.now())
.build();
DomainObjects.injectId(project, 1L);
when(projectService.findOne(ArgumentMatchers.anyLong())).thenReturn(project);
@ -64,6 +66,7 @@ public class SupervisorEditActivityPageTest extends SciProTest {
Project project = Project.builder()
.title("some title")
.projectType(new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor"))
.startDate(LocalDate.now())
.headSupervisor(user)
.build();
DomainObjects.injectId(project, 1L);

@ -20,6 +20,7 @@ import se.su.dsv.scipro.system.ProjectType;
import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.test.UserBuilder;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Date;
@ -41,6 +42,7 @@ public class UpcomingActivitiesPanelTest extends SciProTest {
project = Project.builder()
.title("Some title")
.projectType(SOME_PROJECT_TYPE)
.startDate(LocalDate.now())
.headSupervisor(user)
.build();
project.setId(1L);

@ -24,8 +24,8 @@ import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.test.ObjectMother;
import se.su.dsv.scipro.util.PageParameterKeys;
import java.util.Collections;
import java.util.Date;
import java.time.LocalDate;
import java.util.*;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.ArgumentMatchers.any;
@ -79,7 +79,7 @@ public class AdminEditProjectPageTest extends SciProTest {
project = new Project();
project.addProjectParticipant(author);
project.setId(20987234L);
project.setDateCreated(new Date());
project.setStartDate(LocalDate.now());
startPage(project);
}
@ -265,7 +265,7 @@ public class AdminEditProjectPageTest extends SciProTest {
}
private Project mockExistingProject() {
Project project = Project.builder().title("a nice title").projectType(ObjectMother.BACHELOR).build();
Project project = Project.builder().title("a nice title").projectType(ObjectMother.BACHELOR).startDate(LocalDate.now()).build();
project.addCoSupervisor(existingCoSupervisor);

@ -9,9 +9,10 @@ import se.su.dsv.scipro.project.Project;
import se.su.dsv.scipro.system.DegreeType;
import se.su.dsv.scipro.system.ProjectType;
import java.time.LocalDate;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.when;
public class ChecklistOverviewPanelTest extends SciProTest {
@ -22,7 +23,7 @@ public class ChecklistOverviewPanelTest extends SciProTest {
@BeforeEach
public void setUp() throws Exception {
ProjectType projectType = new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor");
project = Project.builder().title("My project").projectType(projectType).build();
project = Project.builder().title("My project").projectType(projectType).startDate(LocalDate.now()).build();
when(checklistService.countAnswers(any(Project.class), any(ChecklistAnswerEnum.class))).thenReturn(8L);
startPanel();
}

@ -21,6 +21,8 @@ import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.test.DomainObjects;
import se.su.dsv.scipro.test.UserBuilder;
import java.time.LocalDate;
public class ChecklistQuestionPanelTest extends SciProTest {
public static final ProjectType SOME_PROJECT_TYPE = new ProjectType(DegreeType.BACHELOR, "Some project type", "Some description");
@ -38,7 +40,7 @@ public class ChecklistQuestionPanelTest extends SciProTest {
question = new ChecklistQuestion("What?", 1);
answer = new ChecklistAnswer(user);
question.addAnswer(answer);
project = Project.builder().title("Some title").projectType(SOME_PROJECT_TYPE).build();
project = Project.builder().title("Some title").projectType(SOME_PROJECT_TYPE).startDate(LocalDate.now()).build();
project.addProjectParticipant(user);
checklist = Checklist.builder().name("Some name").project(project).build();
checklist.addQuestion(question);

@ -17,6 +17,8 @@ import se.su.dsv.scipro.test.DomainObjects;
import se.su.dsv.scipro.test.UserBuilder;
import se.su.dsv.scipro.util.PageParameterKeys;
import java.time.LocalDate;
public class ProjectViewChecklistPageTest extends PageTest {
private Checklist checklist;
@ -31,6 +33,7 @@ public class ProjectViewChecklistPageTest extends PageTest {
Project project = Project.builder()
.title("some title")
.projectType(projectType)
.startDate(LocalDate.now())
.headSupervisor(supervisor)
.build();
DomainObjects.injectId(project, 1L);

@ -19,6 +19,7 @@ import se.su.dsv.scipro.system.ProjectType;
import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.test.ObjectMother;
import java.time.LocalDate;
import java.util.Collections;
import static org.junit.jupiter.api.Assertions.assertEquals;
@ -105,14 +106,14 @@ public class ProjectDataPanelTest extends SciProTest {
}
private void mockProject() {
Project project = Project.builder().title("title").projectType(new ProjectType(DegreeType.BACHELOR, "bach", "b")).projectStatus(ProjectStatus.ACTIVE).build();
Project project = Project.builder().title("title").projectType(new ProjectType(DegreeType.BACHELOR, "bach", "b")).startDate(LocalDate.now()).projectStatus(ProjectStatus.ACTIVE).build();
project.setHeadSupervisor(ObjectMother.SOME_USER);
when(projectService.findAll(any(ProjectService.Filter.class), any(Pageable.class))).thenReturn(Collections.singletonList(project));
when(projectService.count(any(ProjectService.Filter.class))).thenReturn(1L);
}
private User mockProjectWithReviewer() {
Project project = Project.builder().title("title").projectType(new ProjectType(DegreeType.BACHELOR, "bach", "b")).projectStatus(ProjectStatus.ACTIVE).build();
Project project = Project.builder().title("title").projectType(new ProjectType(DegreeType.BACHELOR, "bach", "b")).startDate(LocalDate.now()).projectStatus(ProjectStatus.ACTIVE).build();
project.setHeadSupervisor(ObjectMother.SOME_USER);
User oldReviewer = User.builder().firstName("old").lastName("reviewer").emailAddress("old@reviewer.com").build();
oldReviewer.setId(7676L);

@ -14,6 +14,7 @@ import se.su.dsv.scipro.system.ProjectType;
import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.test.UserBuilder;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
@ -36,7 +37,7 @@ public class AttendingPanelTest extends SciProTest {
@BeforeEach
public void setUp() throws Exception {
project = Project.builder().title("some title").projectType(new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor")).build();
project = Project.builder().title("some title").projectType(new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor")).startDate(LocalDate.now()).build();
project.setId(9L);
user = new UserBuilder().setFirstName("Rolf").setLastName("Rolfsson").create();

@ -29,6 +29,7 @@ import se.su.dsv.scipro.test.DomainObjects;
import se.su.dsv.scipro.test.UserBuilder;
import se.su.dsv.scipro.util.PageParameterKeys;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
@ -52,8 +53,8 @@ public class OppositionReportPageTest extends SciProTest {
@BeforeEach
public void prepareOppositionReport() {
bachelor = new ProjectType(DegreeType.BACHELOR, "bachelor", "bachelor");
Project opponentsProject = Project.builder().title("Foo").projectType(bachelor).headSupervisor(User.builder().firstName("Bob").lastName("Kelso").emailAddress("bob@example.com").build()).build();
Project projectToOppose = Project.builder().title("Foo").projectType(bachelor).headSupervisor(User.builder().firstName("Bob").lastName("Kelso").emailAddress("bob@example.com").build()).build();
Project opponentsProject = Project.builder().title("Foo").projectType(bachelor).startDate(LocalDate.now()).headSupervisor(User.builder().firstName("Bob").lastName("Kelso").emailAddress("bob@example.com").build()).build();
Project projectToOppose = Project.builder().title("Foo").projectType(bachelor).startDate(LocalDate.now()).headSupervisor(User.builder().firstName("Bob").lastName("Kelso").emailAddress("bob@example.com").build()).build();
DomainObjects.injectId(opponentsProject, 666L);
DomainObjects.injectId(projectToOppose, 777L);
user = new UserBuilder().create();

@ -16,6 +16,7 @@ import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.test.DomainObjects;
import se.su.dsv.scipro.test.UserBuilder;
import java.time.LocalDate;
import java.util.Date;
@ExtendWith(MockitoExtension.class)
@ -29,6 +30,7 @@ public class OverviewSeminarPanelTest extends SciProTest {
Project project = Project.builder()
.title("some title")
.projectType(new ProjectType(DegreeType.BACHELOR, "Bachelor", "Bachelor"))
.startDate(LocalDate.now())
.headSupervisor(user)
.build();
DomainObjects.injectId(project, 1L);

Some files were not shown because too many files have changed in this diff Show More