Skip to content

Commit

Permalink
EP-4397-3
Browse files Browse the repository at this point in the history
  • Loading branch information
oplekal committed Oct 15, 2024
1 parent d77d959 commit 0cff525
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 29 deletions.
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
package fi.vm.sade.eperusteet.ylops.dto.ops;

import fi.vm.sade.eperusteet.ylops.dto.teksti.LokalisoituTekstiDto;

import java.util.UUID;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.UUID;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class KopioOppimaaraDto {
LokalisoituTekstiDto omaNimi;
UUID tunniste;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -257,13 +257,17 @@ public OppiaineLaajaDto add(Long opsId, OppiaineLaajaDto oppiaineDto) {

@Override
public OppiaineDto addCopyOppimaara(Long opsId, Long oppiaineId, KopioOppimaaraDto kt) {
checkOppimaaraCreateIsAllowed(opsId, oppiaineId);
Opetussuunnitelma ops = opetussuunnitelmaRepository.findOne(opsId);
assertExists(ops, "Pyydettyä opetussuunnitelmaa ei ole olemassa");

Opetussuunnitelma opspohja = ops.getAlinPohja();

Boolean isOmaOppiaine = oppiaineet.isOma(opsId, oppiaineId);
Oppiaine parent = oppiaineet.findOne(oppiaineId);
if (!isOmaOppiaine) {
OpsOppiaineDto kopioOppiaine = kopioiMuokattavaksi(opsId, oppiaineId, true);
parent = oppiaineet.findOne(kopioOppiaine.getOppiaine().getId());
}

Opetussuunnitelma opspohja = ops.getAlinPohja();
Oppiaine pohjaparent = oppiaineet.findOneByOpsIdAndTunniste(opspohja.getId(), parent.getTunniste());
Oppiaine uusi = null;

Expand All @@ -289,20 +293,6 @@ public OppiaineDto addCopyOppimaara(Long opsId, Long oppiaineId, KopioOppimaaraD
return mapper.map(uusi, OppiaineDto.class);
}

private void checkOppimaaraCreateIsAllowed(Long opsId, Long oppiaineId) {
Boolean isOmaOppiaine = oppiaineet.isOma(opsId, oppiaineId);

if (isOmaOppiaine == null) {
throw new BusinessRuleViolationException("Oppiainetta jolle oppimäärää luodaan, ei ole olemassa.");
}

if (isOmaOppiaine) {
return;
}

throw new BusinessRuleViolationException("Oppiaine tulee opetussuunnitelman pohjasta, joten siihen ei voi lisätä oppimäärää.");
}

@Override
public OppiaineDto add(Long opsId, OppiaineDto oppiaineDto) {
Opetussuunnitelma ops = opetussuunnitelmaRepository.findOne(opsId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
import fi.vm.sade.eperusteet.ylops.domain.lops2019.PoistetunTyyppi;
import fi.vm.sade.eperusteet.ylops.domain.oppiaine.OppiaineTyyppi;
import fi.vm.sade.eperusteet.ylops.domain.oppiaine.OppiaineValinnainenTyyppi;
import fi.vm.sade.eperusteet.ylops.domain.ops.Opetussuunnitelma;
import fi.vm.sade.eperusteet.ylops.domain.ops.OpsOppiaine;
import fi.vm.sade.eperusteet.ylops.domain.teksti.Kieli;
import fi.vm.sade.eperusteet.ylops.dto.Reference;
import fi.vm.sade.eperusteet.ylops.dto.koodisto.KoodistoDto;
Expand All @@ -28,6 +30,7 @@
import fi.vm.sade.eperusteet.ylops.dto.ops.OpsVuosiluokkakokonaisuusDto;
import fi.vm.sade.eperusteet.ylops.dto.ops.PoistettuOppiaineDto;
import fi.vm.sade.eperusteet.ylops.dto.ops.VuosiluokkakokonaisuusDto;
import fi.vm.sade.eperusteet.ylops.dto.teksti.LokalisoituTekstiDto;
import fi.vm.sade.eperusteet.ylops.dto.teksti.TekstiosaDto;
import fi.vm.sade.eperusteet.ylops.repository.ops.OpetussuunnitelmaRepository;
import fi.vm.sade.eperusteet.ylops.repository.ops.OppiaineRepository;
Expand All @@ -44,6 +47,7 @@
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.annotation.Rollback;

import javax.transaction.Transactional;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
Expand Down Expand Up @@ -249,19 +253,27 @@ private Set<OppiaineSuppeaDto> getOppimaarat(OpetussuunnitelmaDto ops) {
.getOppimaarat();
}

/**
* EP-3122: Testataan että ei ole mahdollista luoda uutta oppimäärää alatason opsiin jos linkitystä pohjaopsiin ei ole
* katkaistu.
*/
@Test
public void testCantAddOppimaara() {
@Transactional
public void testCanAddOppimaara() {
OpetussuunnitelmaDto ops = opetussuunnitelmaService.getOpetussuunnitelmaKaikki(opsId);
OppiaineDto vieraatKielet = addVieraatKieletOppiaineWithOppimaara(ops);
OpetussuunnitelmaDto ylaOps = createOpsBasedOnPohja();
OppiaineDto vieraatKielet = addVieraatKieletOppiaineWithOppimaara(ylaOps);
OpetussuunnitelmaDto alaOps = createOpsBasedOnOps(ylaOps);

assertThatThrownBy(() -> oppiaineService.addCopyOppimaara(alaOps.getId(), vieraatKielet.getId(), new KopioOppimaaraDto()))
.isInstanceOf(BusinessRuleViolationException.class)
.hasMessage("Oppiaine tulee opetussuunnitelman pohjasta, joten siihen ei voi lisätä oppimäärää.");
Opetussuunnitelma alinPohja = opetussuunnitelmaRepository.findOne(alaOps.getId()).getAlinPohja();
OpsOppiaine alimmanPohjanOppiaine = alinPohja.getOppiaineet().stream().filter(oa -> !oa.getOppiaine().getOppimaarat().isEmpty()).findFirst().orElseThrow();
UUID tunniste = alimmanPohjanOppiaine.getOppiaine().getOppimaarat().iterator().next().getTunniste();

OppiaineDto alaOpsinOppiaine = oppiaineService.addCopyOppimaara(
alaOps.getId(),
alaOps.getOppiaineet().iterator().next().getOppiaine().getId(),
KopioOppimaaraDto.builder()
.tunniste(tunniste)
.omaNimi(LokalisoituTekstiDto.of("uusi vieras kieli"))
.build());
OpsOppiaineDto opsOppiaine = oppiaineService.get(alaOps.getId(), alaOpsinOppiaine.getId());
assertThat(opsOppiaine.isOma()).isTrue();
}

@Test
Expand Down

0 comments on commit 0cff525

Please sign in to comment.