import { annetErGyldig, erSpesiellPlanArbeidstyperGyldig, harMinstEnUtfyltArbeidstypeSomErValgt, } from '../../../main/javascript'; describe('Funksjoner som sjekker gyldighet av arbeidstyper for spesiell plan', function () { const arbeidstypeManglerTekstErValgt = { felt: 'WHATEVER', valgt: true, }; const arbeidstypeHarTekstIkkeValgt = { felt: 'A', valgt: false, tekst: 'Hei det må jobbes', }; const arbeidstypeManglerTekstIkkeValgt = { felt: 'A', valgt: false, tekst: '', }; const arbeidstypeHarTekstErValgt = { felt: 'B', valgt: true, tekst: 'Hei det må jobbes', }; describe('harMinstEnUtfyltArbeidstypeSomErValgt', function () { it('returnerer false når vi har ingen arbeidstyper', function () { expect(harMinstEnUtfyltArbeidstypeSomErValgt([])).toBe(false); }); it('returnerer false når vi har ingen utfylte arbeidstyper', function () { expect( harMinstEnUtfyltArbeidstypeSomErValgt([ arbeidstypeManglerTekstIkkeValgt, arbeidstypeManglerTekstErValgt, ]) ).toBe(false); }); it('returnerer false når vi har utfylt arbeidstype som ikke er valgt', function () { expect( harMinstEnUtfyltArbeidstypeSomErValgt([ arbeidstypeHarTekstIkkeValgt, ]) ).toBe(false); }); it('returnerer true når vi har utfylt arbeidstype som er valgt', function () { expect( harMinstEnUtfyltArbeidstypeSomErValgt([ arbeidstypeHarTekstErValgt, ]) ).toBe(true); expect( harMinstEnUtfyltArbeidstypeSomErValgt([ arbeidstypeHarTekstErValgt, arbeidstypeManglerTekstErValgt, ]) ).toBe(true); }); }); const annetValgtOgUtfylt = { valgt: true, beskrivelse: 'noe', tittel: 'ja', }; describe('annetErGyldig', function () { it('returnerer true hvis den er valgt og feltene er fylt ut', function () { expect(annetErGyldig(annetValgtOgUtfylt)).toBe(true); }); it('returnerer false hvis den ikke er valgt', function () { expect( annetErGyldig({ ...annetValgtOgUtfylt, valgt: false, }) ).toBe(false); }); it('returnerer false hvis den mangler utfylling', function () { expect( annetErGyldig({ ...annetValgtOgUtfylt, tittel: undefined, }) ).toBe(false); expect(annetErGyldig({})).toBe(false); }); }); describe('erSpesiellPlanArbeidstyperGyldig', function () { describe('når annet er tillatt', function () { const kanHaAnnet = true; it('returnerer false hvis arbeidstyper er valgt uten innhold', function () { expect( erSpesiellPlanArbeidstyperGyldig( { arbeidstyper: [arbeidstypeManglerTekstErValgt] }, kanHaAnnet ) ).toBe(false); }); it('returnerer false hvis annet er valgt uten innhold', function () { expect( erSpesiellPlanArbeidstyperGyldig( { arbeidstyper: [ arbeidstypeHarTekstErValgt, arbeidstypeHarTekstIkkeValgt, ], annet: { ...annetValgtOgUtfylt, tittel: '' }, }, kanHaAnnet ) ).toBe(false); expect( erSpesiellPlanArbeidstyperGyldig( { annet: { ...annetValgtOgUtfylt, beskrivelse: '' } }, kanHaAnnet ) ).toBe(false); }); it('returnerer true hvis vi har kun gyldige arbeidstyper', function () { expect( erSpesiellPlanArbeidstyperGyldig( { arbeidstyper: [ arbeidstypeHarTekstErValgt, arbeidstypeHarTekstIkkeValgt, ], }, kanHaAnnet ) ).toBe(true); expect( erSpesiellPlanArbeidstyperGyldig( { arbeidstyper: [ arbeidstypeHarTekstErValgt, arbeidstypeHarTekstIkkeValgt, ], annet: { ...annetValgtOgUtfylt, valgt: false }, }, kanHaAnnet ) ).toBe(true); }); it('returnerer true hvis vi kun har gyldig annet', function () { expect( erSpesiellPlanArbeidstyperGyldig( { annet: annetValgtOgUtfylt }, kanHaAnnet ) ).toBe(true); }); }); describe('når annet ikke er tillatt', function () { const kanHaAnnet = false; it('returnerer false hvis arbeidstyper er valgt uten innhold', function () { expect( erSpesiellPlanArbeidstyperGyldig( { arbeidstyper: [arbeidstypeManglerTekstErValgt] }, kanHaAnnet ) ).toBe(false); }); it('returnerer true hvis annet er valgt uten innhold', function () { expect( erSpesiellPlanArbeidstyperGyldig( { arbeidstyper: [ arbeidstypeHarTekstErValgt, arbeidstypeHarTekstIkkeValgt, ], annet: { ...annetValgtOgUtfylt, tittel: '' }, }, kanHaAnnet ) ).toBe(true); }); it('returnerer true hvis vi har kun gyldige arbeidstyper', function () { expect( erSpesiellPlanArbeidstyperGyldig( { arbeidstyper: [ arbeidstypeHarTekstErValgt, arbeidstypeHarTekstIkkeValgt, ], }, kanHaAnnet ) ).toBe(true); expect( erSpesiellPlanArbeidstyperGyldig( { arbeidstyper: [ arbeidstypeHarTekstErValgt, arbeidstypeHarTekstIkkeValgt, ], annet: { ...annetValgtOgUtfylt, valgt: false }, }, kanHaAnnet ) ).toBe(true); }); it('returnerer false hvis vi kun har gyldig annet', function () { expect( erSpesiellPlanArbeidstyperGyldig( { annet: annetValgtOgUtfylt }, kanHaAnnet ) ).toBe(false); }); }); }); });