Skip to content

Commit

Permalink
Improve checking ubehandlet (#367)
Browse files Browse the repository at this point in the history
  • Loading branch information
andersrognstad authored Oct 13, 2023
1 parent 14fa6f7 commit 0482d39
Show file tree
Hide file tree
Showing 4 changed files with 79 additions and 25 deletions.
22 changes: 13 additions & 9 deletions src/api/types/personoversiktTypes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,24 +19,28 @@ export enum AktivitetskravStatus {
LUKKET = 'LUKKET',
}

export interface PersonOversiktStatusDTO {
fnr: string;
navn: string;
enhet: string;
veilederIdent: string | null;
export interface PersonOversiktUbehandletStatusDTO {
motebehovUbehandlet: boolean | null;
dialogmotesvarUbehandlet: boolean;
oppfolgingsplanLPSBistandUbehandlet: boolean | null;
dialogmotekandidat: boolean | undefined;
behandlerdialogUbehandlet: boolean;
aktivitetskravActive: boolean;
aktivitetskravVurderStansUbehandlet: boolean;
huskelappActive: boolean;
}

export interface PersonOversiktStatusDTO
extends PersonOversiktUbehandletStatusDTO {
fnr: string;
navn: string;
enhet: string;
veilederIdent: string | null;
motestatus: MoteStatusType | undefined;
latestOppfolgingstilfelle?: OppfolgingstilfelleDTO;
aktivitetskrav: AktivitetskravStatus | null;
aktivitetskravSistVurdert: Date | null;
aktivitetskravActive: boolean;
aktivitetskravVurderingFrist: Date | null;
behandlerdialogUbehandlet: boolean;
aktivitetskravVurderStansUbehandlet: boolean;
huskelappActive: boolean;
}

export interface OppfolgingstilfelleDTO {
Expand Down
1 change: 1 addition & 0 deletions src/components/error/ErrorBoundary.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ type State = {
};

class ErrorBoundary extends React.Component<ErrorBoundaryProps, State> {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
constructor(props: any) {
super(props);
this.state = { hasError: false };
Expand Down
37 changes: 21 additions & 16 deletions src/data/personoversiktHooks.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
import { useQuery } from '@tanstack/react-query';
import { PersonOversiktStatusDTO } from '@/api/types/personoversiktTypes';
import {
PersonOversiktStatusDTO,
PersonOversiktUbehandletStatusDTO,
} from '@/api/types/personoversiktTypes';
import { get } from '@/api/axios';
import { useAktivEnhet } from '@/context/aktivEnhet/AktivEnhetContext';
import { useNotifications } from '@/context/notification/NotificationContext';
Expand All @@ -10,26 +13,28 @@ import { minutesToMillis } from '@/utils/timeUtils';
import { useMemo } from 'react';
import { PERSONOVERSIKT_ROOT } from '@/apiConstants';

const isUbehandlet = (personOversiktStatus: PersonOversiktStatusDTO) => {
return (
personOversiktStatus.motebehovUbehandlet ||
personOversiktStatus.oppfolgingsplanLPSBistandUbehandlet ||
personOversiktStatus.dialogmotesvarUbehandlet ||
personOversiktStatus.dialogmotekandidat ||
personOversiktStatus.behandlerdialogUbehandlet ||
personOversiktStatus.aktivitetskravVurderStansUbehandlet ||
personOversiktStatus.huskelappActive
);
const isUbehandlet = (ubehandletStatus: PersonOversiktUbehandletStatusDTO) => {
return Object.values(ubehandletStatus).some((value) => value);
};

const filteredPersonOversiktStatusList = (
personOversiktStatusList: PersonOversiktStatusDTO[]
): PersonOversiktStatusDTO[] => {
return personOversiktStatusList.filter(
(personOversiktStatus) =>
isUbehandlet(personOversiktStatus) ||
personOversiktStatus.aktivitetskravActive
);
return personOversiktStatusList.filter((personOversiktStatus) => {
const ubehandletStatus = {
aktivitetskravVurderStansUbehandlet:
personOversiktStatus.aktivitetskravVurderStansUbehandlet,
behandlerdialogUbehandlet: personOversiktStatus.behandlerdialogUbehandlet,
dialogmotekandidat: personOversiktStatus.dialogmotekandidat,
dialogmotesvarUbehandlet: personOversiktStatus.dialogmotesvarUbehandlet,
huskelappActive: personOversiktStatus.huskelappActive,
motebehovUbehandlet: personOversiktStatus.motebehovUbehandlet,
oppfolgingsplanLPSBistandUbehandlet:
personOversiktStatus.oppfolgingsplanLPSBistandUbehandlet,
aktivitetskravActive: personOversiktStatus.aktivitetskravActive,
};
return isUbehandlet(ubehandletStatus);
});
};

export const personoversiktQueryKeys = {
Expand Down
44 changes: 44 additions & 0 deletions test/query/personoversiktHooks.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -44,4 +44,48 @@ describe('personoversiktHooks tests', () => {
expect(actual[0]).to.not.be.undefined;
expect(actual[0]?.fnr).to.eq(personoversiktEnhetMock[0]?.fnr);
});

it('contains only personer with ubehandlet oppgave', async () => {
stubModiaContext();
stubPersonoversikt();

const wrapper = ({ children }: never) => (
<NotificationProvider>
<AktivEnhetContext.Provider
value={{
aktivEnhet: aktivEnhetMock.aktivEnhet,
handleAktivEnhetChanged: () => void 0,
}}
>
<QueryClientProvider client={queryClient}>
{children}
</QueryClientProvider>
</AktivEnhetContext.Provider>
</NotificationProvider>
);

const { result, waitFor } = renderHook(() => usePersonoversiktQuery(), {
wrapper,
});

await waitFor(() => result.current.isSuccess);

const persons: PersonOversiktStatusDTO[] = result.current.data || [];

expect(persons.length).to.be.lessThan(personoversiktEnhetMock.length);

const allPersonsUbehandlet = persons.every((person) => {
return (
person.aktivitetskravActive ||
person.huskelappActive ||
person.behandlerdialogUbehandlet ||
person.aktivitetskravVurderStansUbehandlet ||
person.dialogmotekandidat ||
person.oppfolgingsplanLPSBistandUbehandlet ||
person.motebehovUbehandlet ||
person.dialogmotesvarUbehandlet
);
});
expect(allPersonsUbehandlet).to.be.true;
});
});

0 comments on commit 0482d39

Please sign in to comment.