diff --git a/src/main/java/cz/fi/muni/pa165/seminar4/group7/secretservice/entity/Mission.java b/src/main/java/cz/fi/muni/pa165/seminar4/group7/secretservice/entity/Mission.java index 0825cc82c652176d30db793d5bb1444ed9e73317..3b392db54e4e8df6572fb350fab61f559b26fecf 100644 --- a/src/main/java/cz/fi/muni/pa165/seminar4/group7/secretservice/entity/Mission.java +++ b/src/main/java/cz/fi/muni/pa165/seminar4/group7/secretservice/entity/Mission.java @@ -3,6 +3,7 @@ package cz.fi.muni.pa165.seminar4.group7.secretservice.entity; import com.sun.istack.NotNull; import lombok.Getter; import lombok.Setter; +import lombok.experimental.Accessors; import javax.persistence.*; import java.sql.Date; @@ -41,7 +42,7 @@ public class Mission { @OneToMany(mappedBy = "mission") private List resources; - @ManyToOne + @ManyToOne(cascade = CascadeType.ALL) @JoinColumn(name = "country_id") @Getter @Setter diff --git a/src/test/java/cz/fi/muni/pa165/seminar4/group7/secretservice/MissionTest.java b/src/test/java/cz/fi/muni/pa165/seminar4/group7/secretservice/MissionTest.java new file mode 100644 index 0000000000000000000000000000000000000000..742fb35e6c80581896272649d5b8287f6aaf1537 --- /dev/null +++ b/src/test/java/cz/fi/muni/pa165/seminar4/group7/secretservice/MissionTest.java @@ -0,0 +1,117 @@ +package cz.fi.muni.pa165.seminar4.group7.secretservice; + +import cz.fi.muni.pa165.seminar4.group7.secretservice.dao.MissionDao; +import cz.fi.muni.pa165.seminar4.group7.secretservice.dao.ResourceDao; +import cz.fi.muni.pa165.seminar4.group7.secretservice.entity.Country; +import cz.fi.muni.pa165.seminar4.group7.secretservice.entity.Mission; +import cz.fi.muni.pa165.seminar4.group7.secretservice.entity.Resource; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import javax.transaction.Transactional; +import java.sql.Date; +import java.util.Calendar; + +import static org.assertj.core.api.Assertions.assertThat; + +@SpringBootTest +class MissionTest { + @Autowired + private MissionDao missionDao; + + @BeforeEach + private void reset() { + missionDao.deleteAll(); + } + + Mission createMission() { + var country = new Country().setCode("US"); + country.setCommunications("Everything.") + .setDemographics("Americans.") + .setEconomy("Big.") + .setGovernment("Blue or red.") + .setMilitary("Even bigger.") + .setName("America, hell yeah!") + .setGeography("Smaller than widely believed."); + var mission = new Mission(); + var today = new Date(Calendar.getInstance().getTime().getTime()); + + mission.setCountry(country); + mission.setDuration(10); + mission.setObjective("Retrieve bomb plans. Failure is not an option."); + mission.setStart(today); + return mission; + } + + @Test + void testCreate() { + var mission = createMission(); + + missionDao.save(mission); + + assertThat(missionDao.findAll()).hasSize(1); + } + + @Test + @Transactional + void testFindAll() { + var mission = createMission(); + + missionDao.save(mission); + + assertThat(missionDao.findAll().iterator().next()).isEqualTo(mission); + } + + @Test + void testFindById() { + var mission = createMission(); + + missionDao.save(mission); + + var mission2 = missionDao.findById(mission.getId()); + assertThat(mission2).isPresent(); + assertThat(mission2.get().getId()).isEqualTo(mission.getId()); + } + + @Test + void testSave() { + var mission = createMission(); + missionDao.save(mission); + + mission.setObjective("New objective, get out of there ASAP."); + missionDao.save(mission); + + var savedMission = missionDao.findById(mission.getId()); + assertThat(savedMission).isNotEmpty(); + assertThat(savedMission.get().getObjective()).isEqualTo(mission.getObjective()); + } + + @Test + void testFindEmpty() { + assertThat(missionDao.findById(1L)).isEmpty(); + } + + @Test + void testCreateDuplicate() { + var mission = createMission(); + + missionDao.save(mission); + var mission2 = missionDao.findById(mission.getId()); + assertThat(mission2).isPresent(); + missionDao.save(mission2.get()); + + assertThat(missionDao.findAll()).hasSize(1); + } + + @Test + void testDelete() { + var mission = createMission(); + missionDao.save(mission); + + missionDao.delete(mission); + + assertThat(missionDao.findAll()).hasSize(0); + } +}