Skip to content

Commit

Permalink
EP-4489 (#1536)
Browse files Browse the repository at this point in the history
  • Loading branch information
oplekal authored Nov 20, 2024
1 parent 7ba1bdb commit 79f4a3f
Show file tree
Hide file tree
Showing 6 changed files with 139 additions and 41 deletions.
4 changes: 2 additions & 2 deletions eperusteet/eperusteet-service/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -422,13 +422,13 @@
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>testcontainers</artifactId>
<version>1.19.1</version>
<version>1.20.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>postgresql</artifactId>
<version>1.19.1</version>
<version>1.20.3</version>
<scope>test</scope>
</dependency>
<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import fi.vm.sade.eperusteet.domain.*;
import fi.vm.sade.eperusteet.domain.ammattitaitovaatimukset.AmmattitaitovaatimuksenKohdealue;
import fi.vm.sade.eperusteet.domain.permissions.PerusteenosanProjekti;
import fi.vm.sade.eperusteet.domain.tutkinnonosa.OsaAlue;
import fi.vm.sade.eperusteet.domain.tutkinnonosa.Osaamistavoite;
import fi.vm.sade.eperusteet.domain.tutkinnonosa.TutkinnonOsa;
Expand Down Expand Up @@ -242,7 +243,14 @@ public <T extends PerusteenOsaDto.Laaja> T update(Long perusteId, Long viiteId,

if (perusteenOsaDto.getDto().getClass().equals(TekstiKappaleDto.class)) {
PerusteenOsa perusteenOsa = perusteenOsaRepo.findOne(perusteenOsaDto.getDto().getId());
if (perusteenOsaViiteRepository.findAllByPerusteenOsa(perusteenOsa).size() > 1) {

Set<PerusteenosanProjekti> perusteenosanProjektit = perusteprojektiPermissionRepository.findAllByPerusteenosa(perusteenOsa.getId());
Peruste peruste = perusteet.findOne(perusteId);
boolean tekstikappaleKopioitava = perusteenosanProjektit.stream()
.filter(pop -> !pop.getPerusteProjektiId().equals(peruste.getPerusteprojekti().getId()))
.anyMatch(projekti -> !projekti.getTila().equals(ProjektiTila.POISTETTU));

if (tekstikappaleKopioitava) {
PerusteenOsaViiteDto.Laaja viite = perusteenOsaViiteService.kloonaaTekstiKappale(perusteId, viiteId);
lockManager.unlock(perusteenOsaDto.getDto().getId());
lockManager.lock(viite.getPerusteenOsa().getId());
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
package fi.vm.sade.eperusteet.service;

import fi.vm.sade.eperusteet.domain.KoulutusTyyppi;
import fi.vm.sade.eperusteet.domain.PerusteTyyppi;
import fi.vm.sade.eperusteet.domain.PerusteenOsaViite;
import fi.vm.sade.eperusteet.domain.Perusteprojekti;
import fi.vm.sade.eperusteet.domain.ProjektiTila;
import fi.vm.sade.eperusteet.dto.peruste.PerusteenOsaViiteDto;
import fi.vm.sade.eperusteet.dto.peruste.TekstiKappaleDto;
import fi.vm.sade.eperusteet.dto.perusteprojekti.PerusteprojektiDto;
import fi.vm.sade.eperusteet.dto.util.UpdateDto;
import fi.vm.sade.eperusteet.repository.PerusteRepository;
import fi.vm.sade.eperusteet.repository.PerusteenOsaViiteRepository;
import fi.vm.sade.eperusteet.repository.PerusteprojektiRepository;
import fi.vm.sade.eperusteet.service.test.AbstractDockerIntegrationTest;
import fi.vm.sade.eperusteet.service.test.util.PerusteprojektiTestUtils;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.transaction.annotation.Transactional;

import static org.assertj.core.api.Assertions.assertThat;

@DirtiesContext
@ActiveProfiles(profiles = {"docker"})
@Transactional
@SpringBootTest
public class PerusteenOsaServiceDockerIT extends AbstractDockerIntegrationTest {

@Autowired
private PerusteenOsaService perusteenOsaService;

@Autowired
public PerusteprojektiTestUtils ppTestUtils;

@Autowired
private PerusteService perusteService;

@Autowired
private PerusteenOsaViiteService perusteenOsaViiteService;

@Autowired
private PerusteenOsaViiteRepository perusteenOsaViiteRepository;

@Autowired
private PerusteprojektiRepository perusteprojektiRepository;

@Autowired
private PerusteRepository perusteRepository;

@Test
public void testSamaTekstikappaleUseammassaPerusteessaKopiointiTallennettaessa() {
startNewTransaction();

PerusteprojektiDto projekti1 = ppTestUtils.createPerusteprojekti(ppl -> {
ppl.setKoulutustyyppi(KoulutusTyyppi.VARHAISKASVATUS.toString());
ppl.setTyyppi(PerusteTyyppi.NORMAALI);
});

PerusteenOsaViiteDto.Matala perusteenOsaViiteDto1 = perusteService.addSisaltoUUSI(
projekti1.getPeruste().getIdLong(),
null,
new PerusteenOsaViiteDto.Matala(new TekstiKappaleDto()));
PerusteenOsaViite viite1 = perusteenOsaViiteRepository.findOne(perusteenOsaViiteDto1.getId());

PerusteprojektiDto projekti2 = ppTestUtils.createPerusteprojekti(ppl -> {
ppl.setKoulutustyyppi(KoulutusTyyppi.VARHAISKASVATUS.toString());
ppl.setTyyppi(PerusteTyyppi.NORMAALI);
});

PerusteenOsaViiteDto.Matala perusteenOsaViiteDto2 = perusteService.addSisaltoUUSI(
projekti2.getPeruste().getIdLong(),
null,
new PerusteenOsaViiteDto.Matala(new TekstiKappaleDto()));

PerusteenOsaViite viite2 = perusteenOsaViiteRepository.findOne(perusteenOsaViiteDto2.getId());
viite2.setPerusteenOsa(viite1.getPerusteenOsa());
perusteenOsaViiteRepository.save(viite2);

perusteenOsaViiteDto2 = perusteenOsaViiteService.getSisalto(projekti2.getPeruste().getIdLong(), viite2.getId(), PerusteenOsaViiteDto.Matala.class);
assertThat(perusteenOsaViiteDto1.getPerusteenOsa().getId()).isEqualTo(perusteenOsaViiteDto2.getPerusteenOsa().getId());

Perusteprojekti perusteProjekti1 = perusteprojektiRepository.findById(projekti1.getId()).get();
perusteProjekti1.setTila(ProjektiTila.POISTETTU);
perusteprojektiRepository.saveAndFlush(perusteProjekti1);

perusteenOsaService.lock(perusteenOsaViiteDto2.getPerusteenOsa().getId());
perusteenOsaService.update(projekti2.getPeruste().getIdLong(), perusteenOsaViiteDto2.getId(), new UpdateDto<>(perusteenOsaViiteDto2.getPerusteenOsa()));

perusteenOsaViiteDto2 = perusteenOsaViiteService.getSisalto(projekti2.getPeruste().getIdLong(), viite2.getId(), PerusteenOsaViiteDto.Matala.class);
assertThat(perusteenOsaViiteDto1.getPerusteenOsa().getId()).isEqualTo(perusteenOsaViiteDto2.getPerusteenOsa().getId());

perusteProjekti1.setTila(ProjektiTila.LAADINTA);
perusteprojektiRepository.saveAndFlush(perusteProjekti1);

startNewTransaction();

perusteenOsaService.update(projekti2.getPeruste().getIdLong(), perusteenOsaViiteDto2.getId(), new UpdateDto<>(perusteenOsaViiteDto2.getPerusteenOsa()));

perusteenOsaViiteDto2 = perusteenOsaViiteService.getSisalto(projekti2.getPeruste().getIdLong(), viite2.getId(), PerusteenOsaViiteDto.Matala.class);
assertThat(perusteenOsaViiteDto1.getPerusteenOsa().getId()).isNotEqualTo(perusteenOsaViiteDto2.getPerusteenOsa().getId());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
import fi.vm.sade.eperusteet.domain.PerusteTila;
import fi.vm.sade.eperusteet.domain.PerusteTyyppi;
import fi.vm.sade.eperusteet.domain.PerusteenOsaViite;
import fi.vm.sade.eperusteet.domain.Perusteprojekti;
import fi.vm.sade.eperusteet.domain.ProjektiTila;
import fi.vm.sade.eperusteet.domain.Suoritustapakoodi;
import fi.vm.sade.eperusteet.domain.TekstiKappale;
import fi.vm.sade.eperusteet.domain.TekstiPalanen;
Expand Down Expand Up @@ -50,8 +52,10 @@
import fi.vm.sade.eperusteet.dto.vst.OpintokokonaisuusDto;
import fi.vm.sade.eperusteet.dto.vst.TavoiteAlueDto;
import fi.vm.sade.eperusteet.dto.vst.TavoitesisaltoalueDto;
import fi.vm.sade.eperusteet.repository.PerusteRepository;
import fi.vm.sade.eperusteet.repository.PerusteenOsaRepository;
import fi.vm.sade.eperusteet.repository.PerusteenOsaViiteRepository;
import fi.vm.sade.eperusteet.repository.PerusteprojektiRepository;
import fi.vm.sade.eperusteet.repository.TutkinnonOsaRepository;
import fi.vm.sade.eperusteet.service.mapping.Dto;
import fi.vm.sade.eperusteet.service.mapping.DtoMapper;
Expand All @@ -61,6 +65,7 @@
import org.assertj.core.util.Maps;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.annotation.DirtiesContext;
Expand Down Expand Up @@ -638,44 +643,6 @@ public void testOsaamiskokonaisuus() {
assertThat(osaamiskokonaisuusPaaAlueDto.getOsaAlueet().get(0).getTasokuvaukset().get(1).getEdistynytOsaaminenKuvaukset().get(0).get(Kieli.FI)).isEqualTo("edistynytkuvausE");
}

@Test
public void testSamaTekstikappaleUseammassaPerusteessaKopiointiTallennettaessa() {
PerusteprojektiDto projekti1 = ppTestUtils.createPerusteprojekti(ppl -> {
ppl.setKoulutustyyppi(KoulutusTyyppi.VARHAISKASVATUS.toString());
ppl.setTyyppi(PerusteTyyppi.NORMAALI);
});

PerusteenOsaViiteDto.Matala perusteenOsaViiteDto1 = perusteService.addSisaltoUUSI(
projekti1.getPeruste().getIdLong(),
null,
new PerusteenOsaViiteDto.Matala(new TekstiKappaleDto()));
PerusteenOsaViite viite1 = perusteenOsaViiteRepository.findOne(perusteenOsaViiteDto1.getId());


PerusteprojektiDto projekti2 = ppTestUtils.createPerusteprojekti(ppl -> {
ppl.setKoulutustyyppi(KoulutusTyyppi.VARHAISKASVATUS.toString());
ppl.setTyyppi(PerusteTyyppi.NORMAALI);
});

PerusteenOsaViiteDto.Matala perusteenOsaViiteDto2 = perusteService.addSisaltoUUSI(
projekti2.getPeruste().getIdLong(),
null,
new PerusteenOsaViiteDto.Matala(new TekstiKappaleDto()));

PerusteenOsaViite viite2 = perusteenOsaViiteRepository.findOne(perusteenOsaViiteDto2.getId());
viite2.setPerusteenOsa(viite1.getPerusteenOsa());
perusteenOsaViiteRepository.save(viite2);

perusteenOsaViiteDto2 = perusteenOsaViiteService.getSisalto(projekti2.getPeruste().getIdLong(), viite2.getId(), PerusteenOsaViiteDto.Matala.class);
assertThat(perusteenOsaViiteDto1.getPerusteenOsa().getId()).isEqualTo(perusteenOsaViiteDto2.getPerusteenOsa().getId());

perusteenOsaService.update(projekti2.getPeruste().getIdLong(), perusteenOsaViiteDto2.getId(), new UpdateDto<>(perusteenOsaViiteDto2.getPerusteenOsa()));

perusteenOsaViiteDto2 = perusteenOsaViiteService.getSisalto(projekti2.getPeruste().getIdLong(), viite2.getId(), PerusteenOsaViiteDto.Matala.class);
assertThat(perusteenOsaViiteDto1.getPerusteenOsa().getId()).isNotEqualTo(perusteenOsaViiteDto2.getPerusteenOsa().getId());

}

private void assertTavoitesisaltoalueData(TavoitesisaltoalueDto tavoitesisaltoalueDto) {
assertThat(tavoitesisaltoalueDto.getNimi().get(Kieli.FI)).isEqualTo("nimi");
assertThat(tavoitesisaltoalueDto.getTeksti().get(Kieli.FI)).isEqualTo("teksti1");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.TestTransaction;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

Expand Down Expand Up @@ -46,4 +47,16 @@ public void invalidateAuthentication() {
SecurityContextHolder.clearContext();
}

public void startNewTransaction() {
if (TestTransaction.isActive()) {
TestTransaction.end();
}
TestTransaction.start();
TestTransaction.flagForCommit();
}

public void endTransaction() {
TestTransaction.end();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,11 @@ public PerusteprojektiDto createPerusteprojekti(Consumer<PerusteprojektiLuontiDt
withPerusteprojekti.accept(result);
PerusteprojektiDto pp = perusteprojektiService.save(result);
em.flush();

Peruste peruste = perusteRepository.findOne(pp.getPeruste().getIdLong());
peruste.setPerusteprojekti(perusteprojektiRepository.findById(pp.getId()).get());
perusteRepository.saveAndFlush(peruste);

return pp;
}

Expand Down

0 comments on commit 79f4a3f

Please sign in to comment.