Skip to content

Commit

Permalink
feat: hassu 1161, kunnan edustajan poiston esto (#542)
Browse files Browse the repository at this point in the history
* Estä UI:ssa suunnittelusopimuksen kunnan edustajan poistaminen

* Kunnan edustajan poistaminen on estetty BE:ssä.

* Lisää testejä KayttoOikeudetManageriin

* Projekti handler test sille, ettei kunnan edustajaa poisteta velho syncin yhteydessä

* Projekti handler test sille, ettei kunnan edustajaa poisteta velho syncin yhteydessä, jos varahenkilö on kunnan edustaja, ja varahenkilö vaihtuu

* Korjaa testin kuvaus ja kommentti

* Päivitä adaptToAPI (virkamies) adaptereita niin, että ne filtraavat pois rikkinäiset henkilöreferenssit

* Luo testejä sille, että adapterit filtraavat pois rikkinäiset henkilöreferenssit

* Päivitä snapshotit. Oikeasti ei voi olla tyhjiä esitettäviä yhteystietoja tai kuulutusYhteystietoja, mutta näissä testeissä ei näemmä oo tarkastettu, että referoidut henkilöt on myös kayttoOikeuksissa. Nyt ne siis filtrautuu pois.

Co-authored-by: Valhe Kouneli <valhe.kouneli@cgi.com>
  • Loading branch information
ValheKouneli and Valhe Kouneli authored Jan 23, 2023
1 parent a82df94 commit db5fab4
Show file tree
Hide file tree
Showing 16 changed files with 297 additions and 42 deletions.
16 changes: 4 additions & 12 deletions backend/integrationtest/api/__snapshots__/jatkopaatos.test.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -64,9 +64,7 @@ Object {
"kuulutusVaihePaattyyPaiva": "2100-01-01",
"kuulutusYhteystiedot": Object {
"__typename": "StandardiYhteystiedot",
"yhteysHenkilot": Array [
"A000111",
],
"yhteysHenkilot": Array [],
"yhteysTiedot": Array [
Object {
"__typename": "Yhteystieto",
Expand Down Expand Up @@ -191,9 +189,7 @@ Object {
"kuulutusVaihePaattyyPaiva": "2100-01-01",
"kuulutusYhteystiedot": Object {
"__typename": "StandardiYhteystiedot",
"yhteysHenkilot": Array [
"A000111",
],
"yhteysHenkilot": Array [],
"yhteysTiedot": Array [
Object {
"__typename": "Yhteystieto",
Expand Down Expand Up @@ -512,9 +508,7 @@ Object {
"kuulutusVaihePaattyyPaiva": "2100-01-01",
"kuulutusYhteystiedot": Object {
"__typename": "StandardiYhteystiedot",
"yhteysHenkilot": Array [
"A000111",
],
"yhteysHenkilot": Array [],
"yhteysTiedot": Array [
Object {
"__typename": "Yhteystieto",
Expand Down Expand Up @@ -643,9 +637,7 @@ Object {
"kuulutusVaihePaattyyPaiva": "2100-01-01",
"kuulutusYhteystiedot": Object {
"__typename": "StandardiYhteystiedot",
"yhteysHenkilot": Array [
"A000111",
],
"yhteysHenkilot": Array [],
"yhteysTiedot": Array [
Object {
"__typename": "Yhteystieto",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1202,9 +1202,7 @@ Object {
"arvioSeuraavanVaiheenAlkamisesta": "huomenna",
"esitettavatYhteystiedot": Object {
"__typename": "StandardiYhteystiedot",
"yhteysHenkilot": Array [
"A123456",
],
"yhteysHenkilot": Array [],
"yhteysTiedot": Array [
Object {
"__typename": "Yhteystieto",
Expand Down Expand Up @@ -1299,9 +1297,7 @@ Object {
"alkamisAika": "10:00",
"esitettavatYhteystiedot": Object {
"__typename": "StandardiYhteystiedot",
"yhteysHenkilot": Array [
"A123456",
],
"yhteysHenkilot": Array [],
"yhteysTiedot": Array [
Object {
"__typename": "Yhteystieto",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { AloitusKuulutus, AloitusKuulutusJulkaisu, RequiredLocalizedMap, UudelleenKuulutus } from "../../../database/model";
import { AloitusKuulutus, AloitusKuulutusJulkaisu, DBVaylaUser, RequiredLocalizedMap, UudelleenKuulutus } from "../../../database/model";
import * as API from "../../../../../common/graphql/apiModel";
import { KuulutusJulkaisuTila, LokalisoituTeksti, MuokkausTila } from "../../../../../common/graphql/apiModel";
import {
Expand All @@ -15,6 +15,7 @@ import { adaptMuokkausTila, findJulkaisuWithTila } from "../../projektiUtil";
import { ProjektiPaths } from "../../../files/ProjektiPath";

export function adaptAloitusKuulutus(
kayttoOikeudet: DBVaylaUser[],
kuulutus?: AloitusKuulutus | null,
aloitusKuulutusJulkaisut?: AloitusKuulutusJulkaisu[] | null
): API.AloitusKuulutus | undefined {
Expand All @@ -28,7 +29,7 @@ export function adaptAloitusKuulutus(
...otherKuulutusFields,
ilmoituksenVastaanottajat: adaptIlmoituksenVastaanottajat(kuulutus.ilmoituksenVastaanottajat),
hankkeenKuvaus: adaptHankkeenKuvaus(kuulutus.hankkeenKuvaus),
kuulutusYhteystiedot: adaptStandardiYhteystiedotByAddingTypename(kuulutusYhteystiedot),
kuulutusYhteystiedot: adaptStandardiYhteystiedotByAddingTypename(kayttoOikeudet, kuulutusYhteystiedot),
uudelleenKuulutus: adaptUudelleenKuulutus(uudelleenKuulutus),
muokkausTila: adaptMuokkausTila(kuulutus, aloitusKuulutusJulkaisut),
};
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import {
DBVaylaUser,
Hyvaksymispaatos,
HyvaksymisPaatosVaihe,
HyvaksymisPaatosVaiheJulkaisu,
Expand All @@ -21,6 +22,7 @@ import { adaptMuokkausTila, findJulkaisuWithTila } from "../../projektiUtil";
import { adaptUudelleenKuulutus } from "./adaptAloitusKuulutus";

export function adaptHyvaksymisPaatosVaihe(
kayttoOikeudet: DBVaylaUser[],
hyvaksymisPaatosVaihe: HyvaksymisPaatosVaihe | null | undefined,
hyvaksymisPaatos: Hyvaksymispaatos | null | undefined,
paths: PathTuple,
Expand All @@ -43,7 +45,7 @@ export function adaptHyvaksymisPaatosVaihe(
...rest,
aineistoNahtavilla: adaptAineistot(aineistoNahtavilla, paths),
hyvaksymisPaatos: adaptAineistot(hyvaksymisPaatosAineisto, paths),
kuulutusYhteystiedot: adaptStandardiYhteystiedotByAddingTypename(kuulutusYhteystiedot),
kuulutusYhteystiedot: adaptStandardiYhteystiedotByAddingTypename(kayttoOikeudet, kuulutusYhteystiedot),
ilmoituksenVastaanottajat: adaptIlmoituksenVastaanottajat(ilmoituksenVastaanottajat),
hyvaksymisPaatoksenPvm: hyvaksymisPaatos?.paatoksenPvm || undefined,
hyvaksymisPaatoksenAsianumero: hyvaksymisPaatos?.asianumero || undefined,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ export function adaptNahtavillaoloVaihe(
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
lisaAineistoParametrit: lisaAineistoService.generateListingParams(dbProjekti.oid, nahtavillaoloVaihe.id, dbProjekti.salt),
kuulutusYhteystiedot: adaptStandardiYhteystiedotByAddingTypename(kuulutusYhteystiedot),
kuulutusYhteystiedot: adaptStandardiYhteystiedotByAddingTypename(dbProjekti.kayttoOikeudet, kuulutusYhteystiedot),
ilmoituksenVastaanottajat: adaptIlmoituksenVastaanottajat(ilmoituksenVastaanottajat),
hankkeenKuvaus: adaptHankkeenKuvaus(hankkeenKuvaus || undefined),
muokkausTila: adaptMuokkausTila(nahtavillaoloVaihe, nahtavillaoloVaiheJulkaisut),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import {
DBVaylaUser,
StandardiYhteystiedot,
VuorovaikutusKierros,
VuorovaikutusKierrosJulkaisu,
Expand All @@ -22,6 +23,7 @@ import cloneDeep from "lodash/cloneDeep";
import { ProjektiPaths } from "../../../files/ProjektiPath";

export function adaptVuorovaikutusKierros(
kayttoOikeudet: DBVaylaUser[],
oid: string,
vuorovaikutusKierros: VuorovaikutusKierros | null | undefined
): API.VuorovaikutusKierros | undefined {
Expand All @@ -37,8 +39,8 @@ export function adaptVuorovaikutusKierros(
__typename: "VuorovaikutusKierros",
...(vuorovaikutusKierros as Omit<VuorovaikutusKierros, "vuorovaikutusPDFt">),
ilmoituksenVastaanottajat: adaptIlmoituksenVastaanottajat(vuorovaikutusKierros.ilmoituksenVastaanottajat),
esitettavatYhteystiedot: adaptStandardiYhteystiedotByAddingTypename(vuorovaikutusKierros.esitettavatYhteystiedot),
vuorovaikutusTilaisuudet: adaptVuorovaikutusTilaisuudet(vuorovaikutusKierros.vuorovaikutusTilaisuudet),
esitettavatYhteystiedot: adaptStandardiYhteystiedotByAddingTypename(kayttoOikeudet, vuorovaikutusKierros.esitettavatYhteystiedot),
vuorovaikutusTilaisuudet: adaptVuorovaikutusTilaisuudet(kayttoOikeudet, vuorovaikutusKierros.vuorovaikutusTilaisuudet),
suunnittelumateriaali: adaptLinkkiByAddingTypename(vuorovaikutusKierros.suunnittelumateriaali),
videot: adaptLinkkiListByAddingTypename(vuorovaikutusKierros.videot),
esittelyaineistot: adaptAineistot(vuorovaikutusKierros.esittelyaineistot, paths),
Expand Down Expand Up @@ -121,6 +123,7 @@ export function adaptVuorovaikutusKierrosJulkaisut(
}

function adaptVuorovaikutusTilaisuudet(
kayttoOikeudet: DBVaylaUser[],
vuorovaikutusTilaisuudet: Array<VuorovaikutusTilaisuus> | null | undefined
): API.VuorovaikutusTilaisuus[] | undefined {
if (vuorovaikutusTilaisuudet) {
Expand All @@ -133,7 +136,7 @@ function adaptVuorovaikutusTilaisuudet(
__typename: "VuorovaikutusTilaisuus",
};
if (tilaisuus.tyyppi === API.VuorovaikutusTilaisuusTyyppi.SOITTOAIKA) {
tilaisuus.esitettavatYhteystiedot = adaptStandardiYhteystiedotByAddingTypename(esitettavatYhteystiedot);
tilaisuus.esitettavatYhteystiedot = adaptStandardiYhteystiedotByAddingTypename(kayttoOikeudet, esitettavatYhteystiedot);
}
return tilaisuus;
});
Expand Down
5 changes: 3 additions & 2 deletions backend/src/projekti/adapter/common/lisaaTypename.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Kielitiedot, Linkki, StandardiYhteystiedot, Suunnitelma, Velho, Yhteystieto } from "../../../database/model";
import { DBVaylaUser, Kielitiedot, Linkki, StandardiYhteystiedot, Suunnitelma, Velho, Yhteystieto } from "../../../database/model";
import * as API from "../../../../../common/graphql/apiModel";
import { IllegalArgumentError } from "../../../error/IllegalArgumentError";
import { kuntametadata } from "../../../../../common/kuntametadata";
Expand Down Expand Up @@ -75,14 +75,15 @@ export function adaptMandatoryYhteystiedotByAddingTypename(yhteystiedot: Yhteyst
}

export function adaptStandardiYhteystiedotByAddingTypename(
kayttoOikeudet: DBVaylaUser[],
kuulutusYhteystiedot: StandardiYhteystiedot | undefined
): API.StandardiYhteystiedot | undefined {
if (!kuulutusYhteystiedot) {
return undefined;
}
return {
__typename: "StandardiYhteystiedot",
yhteysHenkilot: kuulutusYhteystiedot.yhteysHenkilot,
yhteysHenkilot: kuulutusYhteystiedot.yhteysHenkilot?.filter((user) => kayttoOikeudet.find((oikeus) => oikeus.kayttajatunnus === user)),
yhteysTiedot: adaptYhteystiedotByAddingTypename(kuulutusYhteystiedot.yhteysTiedot),
};
}
13 changes: 10 additions & 3 deletions backend/src/projekti/adapter/projektiAdapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -61,17 +61,18 @@ export class ProjektiAdapter {
tallennettu: !!dbProjekti.tallennettu,
kayttoOikeudet: KayttoOikeudetManager.adaptAPIKayttoOikeudet(kayttoOikeudet),
tyyppi: velho?.tyyppi || dbProjekti.tyyppi, // remove usage of projekti.tyyppi after all data has been migrated to new format
aloitusKuulutus: adaptAloitusKuulutus(aloitusKuulutus, aloitusKuulutusJulkaisut),
aloitusKuulutus: adaptAloitusKuulutus(kayttoOikeudet, aloitusKuulutus, aloitusKuulutusJulkaisut),
aloitusKuulutusJulkaisu: adaptAloitusKuulutusJulkaisu(dbProjekti.oid, aloitusKuulutusJulkaisut),
suunnitteluSopimus: adaptSuunnitteluSopimus(dbProjekti.oid, suunnitteluSopimus),
liittyvatSuunnitelmat: adaptLiittyvatSuunnitelmatByAddingTypename(liittyvatSuunnitelmat),
velho: adaptVelho(velho),
kielitiedot: adaptKielitiedotByAddingTypename(kielitiedot, true),
vuorovaikutusKierros: adaptVuorovaikutusKierros(dbProjekti.oid, vuorovaikutusKierros),
vuorovaikutusKierros: adaptVuorovaikutusKierros(kayttoOikeudet, dbProjekti.oid, vuorovaikutusKierros),
vuorovaikutusKierrosJulkaisut: adaptVuorovaikutusKierrosJulkaisut(dbProjekti.oid, vuorovaikutusKierrosJulkaisut),
nahtavillaoloVaihe: adaptNahtavillaoloVaihe(dbProjekti, nahtavillaoloVaihe, nahtavillaoloVaiheJulkaisut),
nahtavillaoloVaiheJulkaisu: adaptNahtavillaoloVaiheJulkaisu(dbProjekti, nahtavillaoloVaiheJulkaisut),
hyvaksymisPaatosVaihe: adaptHyvaksymisPaatosVaihe(
kayttoOikeudet,
hyvaksymisPaatosVaihe,
dbProjekti.kasittelynTila?.hyvaksymispaatos,
projektiPath.hyvaksymisPaatosVaihe(hyvaksymisPaatosVaihe),
Expand All @@ -83,6 +84,7 @@ export class ProjektiAdapter {
(julkaisu) => new ProjektiPaths(dbProjekti.oid).hyvaksymisPaatosVaihe(julkaisu)
),
jatkoPaatos1Vaihe: adaptHyvaksymisPaatosVaihe(
kayttoOikeudet,
jatkoPaatos1Vaihe,
dbProjekti.kasittelynTila?.ensimmainenJatkopaatos,
projektiPath.jatkoPaatos1Vaihe(jatkoPaatos1Vaihe),
Expand All @@ -94,6 +96,7 @@ export class ProjektiAdapter {
(julkaisu) => new ProjektiPaths(dbProjekti.oid).jatkoPaatos1Vaihe(julkaisu)
),
jatkoPaatos2Vaihe: adaptHyvaksymisPaatosVaihe(
kayttoOikeudet,
jatkoPaatos2Vaihe,
dbProjekti.kasittelynTila?.toinenJatkopaatos,
projektiPath.jatkoPaatos2Vaihe(jatkoPaatos2Vaihe),
Expand Down Expand Up @@ -140,7 +143,11 @@ export class ProjektiAdapter {
jatkoPaatos2Vaihe,
} = changes;
const projektiAdaptationResult: ProjektiAdaptationResult = new ProjektiAdaptationResult(projekti);
const kayttoOikeudetManager = new KayttoOikeudetManager(projekti.kayttoOikeudet, await personSearch.getKayttajas());
const kayttoOikeudetManager = new KayttoOikeudetManager(
projekti.kayttoOikeudet,
await personSearch.getKayttajas(),
projekti.suunnitteluSopimus?.yhteysHenkilo
);
kayttoOikeudetManager.applyChanges(kayttoOikeudet);
const aloitusKuulutusToSave = adaptAloitusKuulutusToSave(projekti.aloitusKuulutus, aloitusKuulutus);

Expand Down
25 changes: 20 additions & 5 deletions backend/src/projekti/kayttoOikeudetManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,12 @@ import merge from "lodash/merge";
export class KayttoOikeudetManager {
private users: DBVaylaUser[];
private readonly kayttajas: Kayttajas;
private kunnanEdustaja: string | undefined;

constructor(users: DBVaylaUser[], kayttajas: Kayttajas) {
constructor(users: DBVaylaUser[], kayttajas: Kayttajas, kunnanEdustaja?: string) {
this.users = users;
this.kayttajas = kayttajas;
this.kunnanEdustaja = kunnanEdustaja;
}

applyChanges(changes: ProjektiKayttajaInput[] | undefined | null): DBVaylaUser[] | undefined {
Expand Down Expand Up @@ -59,8 +61,8 @@ export class KayttoOikeudetManager {
resultingUsers.push(merge({}, currentUser, inputUser));
}
} else {
// Remove user because it doesn't exist in input, except if muokattavissa===false
if (currentUser.muokattavissa === false) {
// Remove user because it doesn't exist in input, except if muokattavissa===false or user is kunnanEdustaja
if (currentUser.muokattavissa === false || currentUser.kayttajatunnus === this.kunnanEdustaja) {
resultingUsers.push(currentUser);
}
}
Expand Down Expand Up @@ -120,15 +122,20 @@ export class KayttoOikeudetManager {
if (projektiPaallikko) {
const currentProjektiPaallikko = this.users.filter((aUser) => aUser.email == email).pop();
if (currentProjektiPaallikko?.kayttajatunnus == projektiPaallikko.kayttajatunnus) {
log.warn("Projektipäällikkö on jo oikea", { projektiPaallikko });
log.warn("Projektipäällikkö oli jo olemassa käyytäjissä", { projektiPaallikko });
// Make sure the user really is projektipäällikkö
currentProjektiPaallikko.tyyppi = KayttajaTyyppi.PROJEKTIPAALLIKKO;
currentProjektiPaallikko.muokattavissa = false;
return currentProjektiPaallikko;
} else {
// Remove existing PROJEKTIPAALLIKKO if it's different from the new one
log.warn("Projektipäällikkö ei ole oikea", { current: currentProjektiPaallikko?.kayttajatunnus, theNew: projektiPaallikko });
const oldProjektiPaallikko = this.users.filter((aUser) => aUser.tyyppi === KayttajaTyyppi.PROJEKTIPAALLIKKO).pop();
log.warn("Projektipäällikkö ei ole oikea", { current: oldProjektiPaallikko?.kayttajatunnus, theNew: projektiPaallikko });
remove(this.users, (aUser) => aUser.tyyppi == KayttajaTyyppi.PROJEKTIPAALLIKKO && !aUser.muokattavissa);
if (oldProjektiPaallikko && oldProjektiPaallikko.kayttajatunnus === this.kunnanEdustaja) {
this.addOldProjektipaallikkoOrVarahenkiloAsRegularUser(oldProjektiPaallikko);
log.warn("Vanha projektipäällikkö lisätty normaalikäyttäjäksi, koska hän on kunnan edustaja", { currentProjektiPaallikko });
}
this.users.push(projektiPaallikko);
log.warn("Projektipäällikkö lisätty", { projektiPaallikko });
}
Expand All @@ -151,6 +158,10 @@ export class KayttoOikeudetManager {
const currentVarahenkilo = this.users.filter((aUser) => aUser.tyyppi == KayttajaTyyppi.VARAHENKILO && !aUser.muokattavissa).pop();
if (currentVarahenkilo?.email !== email) {
remove(this.users, (aUser) => aUser == currentVarahenkilo);
if (currentVarahenkilo && currentVarahenkilo.kayttajatunnus === this.kunnanEdustaja) {
this.addOldProjektipaallikkoOrVarahenkiloAsRegularUser(currentVarahenkilo);
log.warn("Vanha varahenkilö lisätty normaalikäyttäjäksi, koska hän on kunnan edustaja", { currentVarahenkilo });
}
}

// Modify existing varahenkilo or replace old one
Expand All @@ -166,6 +177,10 @@ export class KayttoOikeudetManager {
}
}

private addOldProjektipaallikkoOrVarahenkiloAsRegularUser(user: DBVaylaUser): void {
this.users.push({ ...user, muokattavissa: true, tyyppi: null });
}

addUser(partialUser: Partial<DBVaylaUser>): DBVaylaUser | undefined {
const user = this.fillInUserInfoFromUserManagement({
user: partialUser,
Expand Down
6 changes: 5 additions & 1 deletion backend/src/projekti/projektiHandler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -288,7 +288,11 @@ export async function synchronizeUpdatesFromVelho(oid: string, reset = false): P
// Poista kaikki muut paitsi tuleva projektipäällikkö ja vastuuhenkilö
remove(kayttoOikeudet, (user) => user.email !== vastuuhenkilonEmail && user.email !== varahenkilonEmail);
}
const kayttoOikeudetManager = new KayttoOikeudetManager(kayttoOikeudet, await personSearch.getKayttajas());
const kayttoOikeudetManager = new KayttoOikeudetManager(
kayttoOikeudet,
await personSearch.getKayttajas(),
projektiFromDB.suunnitteluSopimus?.yhteysHenkilo
);
kayttoOikeudetManager.addProjektiPaallikkoFromEmail(vastuuhenkilonEmail);
kayttoOikeudetManager.addVarahenkiloFromEmail(varahenkilonEmail);
const kayttoOikeudetNew = kayttoOikeudetManager.getKayttoOikeudet();
Expand Down
64 changes: 64 additions & 0 deletions backend/test/projekti/kayttoOikeudetManager.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,42 @@ describe("KayttoOikeudetManager", () => {
const kayttajaA3 = personSearchFixture.createKayttaja("A3");
const kayttajaA4 = personSearchFixture.createKayttaja("A4");

let users: DBVaylaUser[];

beforeEach(() => {
kayttajas = Kayttajas.fromKayttajaList([kayttajaA1, kayttajaA2, kayttajaA3, kayttajaA4]);
users = [
{
tyyppi: KayttajaTyyppi.PROJEKTIPAALLIKKO,
kayttajatunnus: kayttajaA1.uid as string,
email: kayttajaA1.email as string,
etunimi: kayttajaA1.etunimi as string,
sukunimi: kayttajaA1.sukunimi as string,
organisaatio: kayttajaA1.organisaatio as string,
puhelinnumero: kayttajaA1.puhelinnumero as string,
muokattavissa: false,
},
{
tyyppi: KayttajaTyyppi.VARAHENKILO,
kayttajatunnus: kayttajaA2.uid as string,
email: kayttajaA2.email as string,
etunimi: kayttajaA2.etunimi as string,
sukunimi: kayttajaA2.sukunimi as string,
organisaatio: kayttajaA2.organisaatio as string,
puhelinnumero: kayttajaA2.puhelinnumero as string,
muokattavissa: false,
},
{
tyyppi: null,
kayttajatunnus: kayttajaA3.uid as string,
email: kayttajaA3.email as string,
etunimi: kayttajaA3.etunimi as string,
sukunimi: kayttajaA3.sukunimi as string,
organisaatio: kayttajaA3.organisaatio as string,
puhelinnumero: kayttajaA3.puhelinnumero as string,
muokattavissa: true,
},
];
});

function expectProjektiPaallikko(manager: KayttoOikeudetManager, uid: string) {
Expand Down Expand Up @@ -205,4 +239,34 @@ describe("KayttoOikeudetManager", () => {
sukunimi: "SukunimiA3",
});
});

it("should not allow kunnanEdustaja to be removed when applying changes", async () => {
const manager = new KayttoOikeudetManager(users, kayttajas, kayttajaA3.uid || undefined);
manager.applyChanges([
{
kayttajatunnus: kayttajaA1.uid as string,
puhelinnumero: kayttajaA1.puhelinnumero as string,
},
{
kayttajatunnus: kayttajaA2.uid as string,
puhelinnumero: kayttajaA2.puhelinnumero as string,
},
]);
const kayttoOikeudet = manager.getKayttoOikeudet();
expect(kayttoOikeudet.length).eql(3);
});

it("should not allow kunnanEdustaja to be removed when doing addProjektiPaallikkoFromEmail", async () => {
const manager = new KayttoOikeudetManager(users, kayttajas, kayttajaA1.uid || undefined);
manager.addProjektiPaallikkoFromEmail(kayttajaA4.email);
const kayttoOikeudet = manager.getKayttoOikeudet();
expect(kayttoOikeudet.length).eql(4);
});

it("should not allow kunnanEdustaja to be removed when doing addVarahenkiloFromEmail", async () => {
const manager = new KayttoOikeudetManager(users, kayttajas, kayttajaA2.uid || undefined);
manager.addVarahenkiloFromEmail(kayttajaA4.email);
const kayttoOikeudet = manager.getKayttoOikeudet();
expect(kayttoOikeudet.length).eql(4);
});
});
Loading

0 comments on commit db5fab4

Please sign in to comment.