Skip to content

Commit

Permalink
fix(array done functions pt. 2) (#1320)
Browse files Browse the repository at this point in the history
* make geldanlage partial

* add geldanlageDone function and utilize, add unit tests

* make grundeigentum partial

* add singleGrundeigentumDone function, utilize and add unit tests

* add PKH-specific kraftfahrzeugDone function and test

* check for kfz wert in kfz array done function

---------

Co-authored-by: Eric Klemm <[email protected]>
  • Loading branch information
Spencer6497 and ekl176 authored Oct 18, 2024
1 parent f385b33 commit 088c357
Show file tree
Hide file tree
Showing 9 changed files with 417 additions and 70 deletions.
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
import type { BeratungshilfeFinanzielleAngabenGuard } from "~/flows/beratungshilfeFormular/finanzielleAngaben/BeratungshilfeFinanzielleAngabenGuardType";
import type { BeratungshilfeFinanzielleAngaben } from "~/flows/beratungshilfeFormular/finanzielleAngaben/context";
import { childDone } from "~/flows/shared/finanzielleAngaben/doneFunctions";
import {
childDone,
geldanlageDone,
singleGrundeigentumDone,
} from "~/flows/shared/finanzielleAngaben/doneFunctions";
import { hasAnyEigentumExceptBankaccount } from "~/flows/shared/finanzielleAngaben/guards";
import { arrayIsNonEmpty } from "~/util/array";
import { type BeratungshilfeFinanzielleAngabenGuard } from "./BeratungshilfeFinanzielleAngabenGuardType";

export const hasStaatlicheLeistungen: BeratungshilfeFinanzielleAngabenGuard = ({
context,
Expand Down Expand Up @@ -99,15 +103,18 @@ export const geldanlagenDone: BeratungshilfeFinanzielleAngabenGuard = ({
}) =>
context.eigentumTotalWorth === "less10000" ||
context.hasGeldanlage === "no" ||
(context.hasGeldanlage === "yes" && arrayIsNonEmpty(context.geldanlagen));
(context.hasGeldanlage === "yes" &&
arrayIsNonEmpty(context.geldanlagen) &&
context.geldanlagen.every(geldanlageDone));

export const grundeigentumDone: BeratungshilfeFinanzielleAngabenGuard = ({
context,
}) =>
context.eigentumTotalWorth === "less10000" ||
context.hasGrundeigentum === "no" ||
(context.hasGrundeigentum === "yes" &&
arrayIsNonEmpty(context.grundeigentum));
arrayIsNonEmpty(context.grundeigentum) &&
context.grundeigentum.every(singleGrundeigentumDone));

const kraftfahrzeugDone = (
kraftfahrzeug: NonNullable<
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,15 @@ import {
hasSonstigeAusgabeDone,
hasVersicherungDone,
kinderDone,
kraftfahrzeugDone,
partnerBesondersAusgabenDone,
partnerDone,
partnerSupportDone,
ratenzahlungDone,
sonstigeAusgabeDone,
versicherungDone,
} from "~/flows/prozesskostenhilfeFormular/finanzielleAngaben/doneFunctions";
import { kraftfahrzeugWert } from "~/flows/shared/finanzielleAngaben/context";

const mockedCompleteRatenzahlung: NonNullable<
ProzesskostenhilfeFinanzielleAngabenContext["ratenzahlungen"]
Expand All @@ -32,6 +34,18 @@ const mockedCompleteSonstigeAusgabe: NonNullable<
betragGesamt: "50",
};

const mockedCompleteKraftfahrzeug: NonNullable<
ProzesskostenhilfeFinanzielleAngabenContext["kraftfahrzeuge"]
>[0] = {
hasArbeitsweg: "yes",
wert: "over10000",
eigentuemer: "myself",
art: "kraftfahrzeug",
marke: "Mercedes",
kilometerstand: 200000,
baujahr: "1990",
};

describe("Finanzielle Angaben doneFunctions", () => {
describe("partnerDone", () => {
it("should return true if the user receives grundsicherung or asylbewerberleistungen", () => {
Expand Down Expand Up @@ -176,6 +190,84 @@ describe("Finanzielle Angaben doneFunctions", () => {
});
});

describe("kraftfahrzeugDone", () => {
it("should return false if the kraftfahrzeug is missing any information and worth more than 10000", () => {
[kraftfahrzeugWert.Enum.over10000, kraftfahrzeugWert.Enum.unsure].forEach(
(v) => {
expect(
kraftfahrzeugDone({
...mockedCompleteKraftfahrzeug,
wert: v,
hasArbeitsweg: undefined,
}),
).toBe(false);
expect(
kraftfahrzeugDone({
...mockedCompleteKraftfahrzeug,
wert: v,
eigentuemer: undefined,
}),
).toBe(false);
expect(
kraftfahrzeugDone({
...mockedCompleteKraftfahrzeug,
wert: v,
art: undefined,
}),
).toBe(false);
expect(
kraftfahrzeugDone({
...mockedCompleteKraftfahrzeug,
wert: v,
marke: undefined,
}),
).toBe(false);
expect(
kraftfahrzeugDone({
...mockedCompleteKraftfahrzeug,
wert: v,
kilometerstand: undefined,
}),
).toBe(false);
expect(
kraftfahrzeugDone({
...mockedCompleteKraftfahrzeug,
wert: v,
baujahr: undefined,
}),
).toBe(false);
},
);
});

it("should return true if the kraftfahrzeug is worth less than 10000 and detailed car information is missing", () => {
expect(
kraftfahrzeugDone({
...mockedCompleteKraftfahrzeug,
wert: "under10000",
eigentuemer: undefined,
art: undefined,
marke: undefined,
kilometerstand: undefined,
baujahr: undefined,
}),
).toBeTruthy();
});

it("should return false if the kraftfahrzeug is missing wert and arbeitsweg information", () => {
expect(
kraftfahrzeugDone({
hasArbeitsweg: undefined,
wert: undefined,
}),
).toBe(false);
});

it("should return true if a kraftfahrzeug is complete", () => {
expect(kraftfahrzeugDone(mockedCompleteKraftfahrzeug)).toBe(true);
});
});

describe("versicherungDone", () => {
it("should return false if the user has indicated a sonstige versicherung but hasn't named it", () => {
expect(versicherungDone({ beitrag: "100", art: "sonstige" })).toBe(false);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ import type { GenericGuard } from "../../guards.server";
import {
bankKontoDone,
childDone,
geldanlageDone,
singleGrundeigentumDone,
} from "../../shared/finanzielleAngaben/doneFunctions";

export type ProzesskostenhilfeFinanzielleAngabenGuard =
Expand Down Expand Up @@ -80,21 +82,39 @@ export const geldanlagenDone: ProzesskostenhilfeFinanzielleAngabenGuard = ({
context,
}) =>
context.hasGeldanlage === "no" ||
(context.hasGeldanlage === "yes" && arrayIsNonEmpty(context.geldanlagen));
(context.hasGeldanlage === "yes" &&
arrayIsNonEmpty(context.geldanlagen) &&
context.geldanlagen.every(geldanlageDone));

export const grundeigentumDone: ProzesskostenhilfeFinanzielleAngabenGuard = ({
context,
}) =>
context.hasGrundeigentum === "no" ||
(context.hasGrundeigentum === "yes" &&
arrayIsNonEmpty(context.grundeigentum));
arrayIsNonEmpty(context.grundeigentum) &&
context.grundeigentum.every(singleGrundeigentumDone));

export const kraftfahrzeugDone = (
kfz: NonNullable<
ProzesskostenhilfeFinanzielleAngabenContext["kraftfahrzeuge"]
>[0],
) =>
kfz.hasArbeitsweg !== undefined &&
kfz.wert !== undefined &&
(kfz.wert === "under10000" ||
(kfz.eigentuemer !== undefined &&
kfz.art !== undefined &&
kfz.marke !== undefined &&
kfz.kilometerstand !== undefined &&
kfz.baujahr !== undefined));

export const kraftfahrzeugeDone: ProzesskostenhilfeFinanzielleAngabenGuard = ({
context,
}) =>
context.hasKraftfahrzeug === "no" ||
(context.hasKraftfahrzeug === "yes" &&
arrayIsNonEmpty(context.kraftfahrzeuge));
arrayIsNonEmpty(context.kraftfahrzeuge) &&
context.kraftfahrzeuge.every(kraftfahrzeugDone));

export const wertsachenDone: ProzesskostenhilfeFinanzielleAngabenGuard = ({
context,
Expand Down
Loading

0 comments on commit 088c357

Please sign in to comment.