Skip to content
This repository was archived by the owner on Sep 29, 2020. It is now read-only.

Commit 5e6fb03

Browse files
authored
NOJIRA Refaktorer behandlingsmenyen (#1174)
* NOJIRA Refaktorer behandlingsmenyen
1 parent 8c1bb55 commit 5e6fb03

File tree

110 files changed

+2843
-3351
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

110 files changed

+2843
-3351
lines changed

packages/sak-app/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
"@fpsak-frontend/sak-historikk": "1.0.0",
2727
"@fpsak-frontend/sak-meldinger": "1.0.0",
2828
"@fpsak-frontend/sak-meny": "1.0.0",
29+
"@fpsak-frontend/sak-meny-endre-enhet": "1.0.0",
2930
"@fpsak-frontend/sak-risikoklassifisering": "1.0.0",
3031
"@fpsak-frontend/sak-sok": "1.0.0",
3132
"@fpsak-frontend/sak-support-meny": "1.0.0",

packages/sak-app/src/app/duck.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,21 @@ reducerRegistry.register(reducerName, appReducer);
5959
const getAppContext = (state) => state.default[reducerName];
6060
const getDisabledApplicationContexts = createSelector([getAppContext], (appContext) => appContext.disabledApplicationContexts);
6161

62+
const DEFAULT_NAV_ANSATT = {
63+
brukernavn: '',
64+
kanBehandleKode6: false,
65+
kanBehandleKode7: false,
66+
kanBehandleKodeEgenAnsatt: false,
67+
kanBeslutte: false,
68+
kanOverstyre: false,
69+
kanSaksbehandle: false,
70+
kanVeilede: false,
71+
navn: '',
72+
};
73+
6274
/* Selectors */
63-
export const getNavAnsatt = createSelector([fpsakApi.NAV_ANSATT.getRestApiData()], (navAnsattData) => navAnsattData || {});
75+
export const getNavAnsatt = createSelector([fpsakApi.NAV_ANSATT.getRestApiData()], (navAnsattData:
76+
NavAnsatt): NavAnsatt => navAnsattData || DEFAULT_NAV_ANSATT);
6477
export const getNavAnsattName = createSelector([getNavAnsatt], (navAnsatt: NavAnsatt) => navAnsatt.navn);
6578
export const getFunksjonellTid = createSelector([getNavAnsatt], (navAnsatt: NavAnsatt) => navAnsatt.funksjonellTid);
6679
export const getFeatureToggles = createSelector([fpsakApi.FEATURE_TOGGLE.getRestApiData()], (ftData: { featureToggles: {}}) => (ftData
Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
import React, { FunctionComponent, useEffect, useRef } from 'react';
2+
import { connect } from 'react-redux';
3+
import { withRouter } from 'react-router-dom';
4+
import { RouteProps } from 'react-router';
5+
import { bindActionCreators, Dispatch } from 'redux';
6+
import { push } from 'connected-react-router';
7+
8+
import BehandlingType from '@fpsak-frontend/kodeverk/src/behandlingType';
9+
import { Kodeverk } from '@fpsak-frontend/types';
10+
11+
import { getSelectedSaksnummer, getFagsakYtelseType } from '../fagsak/fagsakSelectors';
12+
import { getBehandlingVersjon, getBehandlingType, getSelectedBehandlingId } from '../behandling/duck';
13+
import fpsakApi from '../data/fpsakApi';
14+
import BehandlingIdentifier from '../behandling/BehandlingIdentifier';
15+
import DataFetcher, { DataFetcherTriggers } from '../app/DataFetcher';
16+
import {
17+
hentVergeMenyvalg, resetVergeMenyvalg, fjernVerge, opprettVerge,
18+
} from './duck';
19+
import BehandlingMenuIndex from './BehandlingMenuIndex';
20+
21+
const YTELSE_BEHANDLINGTYPER = [BehandlingType.FORSTEGANGSSOKNAD, BehandlingType.REVURDERING];
22+
const menyDataBehandlingValgt = [fpsakApi.MENYHANDLING_RETTIGHETER];
23+
const menyData = [];
24+
25+
const VERGE_MENYVALG = {
26+
FJERN: 'FJERN',
27+
OPPRETT: 'OPPRETT',
28+
};
29+
30+
interface OwnProps {
31+
location: RouteProps['location'];
32+
}
33+
34+
interface StateProps {
35+
saksnummer: number;
36+
ytelseType: Kodeverk;
37+
behandlingId?: number;
38+
behandlingVersion?: number;
39+
behandlingType?: Kodeverk;
40+
vergeMenyvalg: string;
41+
}
42+
43+
interface DispatchProps {
44+
hentVerge: (params: { behandlingId: number; saksnummer: string }) => void;
45+
resetVerge: () => void;
46+
pushLocation: (location: string) => void;
47+
}
48+
49+
const BehandlingMenuDataResolver: FunctionComponent<OwnProps & StateProps & DispatchProps> = ({
50+
saksnummer,
51+
ytelseType,
52+
behandlingId,
53+
behandlingVersion,
54+
behandlingType,
55+
hentVerge,
56+
resetVerge,
57+
vergeMenyvalg,
58+
location,
59+
pushLocation,
60+
}) => {
61+
const ref = useRef<{ behandlingId: number; behandlingVersion: number}>();
62+
useEffect(() => {
63+
const erBehandlingEndret = !ref.current || (behandlingId !== ref.current.behandlingId || behandlingVersion !== ref.current.behandlingVersion);
64+
if (!!behandlingId && YTELSE_BEHANDLINGTYPER.includes(behandlingType.kode) && erBehandlingEndret) {
65+
const params = new BehandlingIdentifier(saksnummer, behandlingId).toJson();
66+
hentVerge(params);
67+
}
68+
69+
ref.current = { behandlingId, behandlingVersion };
70+
71+
return () => {
72+
resetVerge();
73+
};
74+
}, [behandlingId, behandlingVersion]);
75+
76+
const fjernVergeFn = vergeMenyvalg && vergeMenyvalg === VERGE_MENYVALG.FJERN
77+
? fjernVerge(location, pushLocation, saksnummer, behandlingId, behandlingVersion) : undefined;
78+
const opprettVergeFn = vergeMenyvalg && vergeMenyvalg === VERGE_MENYVALG.OPPRETT
79+
? opprettVerge(location, pushLocation, saksnummer, behandlingId, behandlingVersion) : undefined;
80+
81+
82+
return (
83+
<DataFetcher
84+
key={behandlingId ? 0 : 1}
85+
endpoints={behandlingId ? menyDataBehandlingValgt : menyData}
86+
fetchingTriggers={new DataFetcherTriggers({ behandlingId, behandlingVersion }, false)}
87+
showOldDataWhenRefetching
88+
render={(dataProps: { menyhandlingRettigheter?: { harSoknad: boolean }}) => (
89+
<BehandlingMenuIndex
90+
saksnummer={saksnummer}
91+
behandlingId={behandlingId}
92+
behandlingVersion={behandlingVersion}
93+
behandlingType={behandlingType}
94+
ytelseType={ytelseType}
95+
vergeMenyvalg={vergeMenyvalg}
96+
menyhandlingRettigheter={dataProps.menyhandlingRettigheter}
97+
fjernVerge={fjernVergeFn}
98+
opprettVerge={opprettVergeFn}
99+
location={location}
100+
pushLocation={pushLocation}
101+
/>
102+
)}
103+
/>
104+
);
105+
};
106+
107+
const mapStateToProps = (state): StateProps => {
108+
const vergeMenyvalg = fpsakApi.VERGE_MENYVALG.getRestApiData()(state);
109+
const behandlingType = getBehandlingType(state);
110+
return {
111+
saksnummer: getSelectedSaksnummer(state),
112+
behandlingId: getSelectedBehandlingId(state),
113+
behandlingVersion: getBehandlingVersjon(state),
114+
behandlingType: getBehandlingType(state),
115+
ytelseType: getFagsakYtelseType(state),
116+
vergeMenyvalg: vergeMenyvalg && behandlingType
117+
&& YTELSE_BEHANDLINGTYPER.includes(behandlingType.kode) ? vergeMenyvalg.vergeBehandlingsmeny : undefined,
118+
};
119+
};
120+
121+
const mapDispatchToProps = (dispatch: Dispatch): DispatchProps => bindActionCreators({
122+
hentVerge: hentVergeMenyvalg,
123+
resetVerge: resetVergeMenyvalg,
124+
pushLocation: push,
125+
}, dispatch);
126+
127+
export default withRouter(connect(mapStateToProps, mapDispatchToProps)(BehandlingMenuDataResolver));
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
import React from 'react';
2+
import { shallow } from 'enzyme';
3+
import { expect } from 'chai';
4+
import sinon from 'sinon';
5+
6+
import fagsakYtelseType from '@fpsak-frontend/kodeverk/src/fagsakYtelseType';
7+
import behandlingType from '@fpsak-frontend/kodeverk/src/behandlingType';
8+
import MenySakIndex from '@fpsak-frontend/sak-meny';
9+
10+
import { BehandlingMenuIndex } from './BehandlingMenuIndex';
11+
import MenyKodeverk from './MenyKodeverk';
12+
13+
const rettigheter = {
14+
settBehandlingPaVentAccess: {
15+
employeeHasAccess: true,
16+
isEnabled: true,
17+
},
18+
henleggBehandlingAccess: {
19+
employeeHasAccess: true,
20+
isEnabled: true,
21+
},
22+
byttBehandlendeEnhetAccess: {
23+
employeeHasAccess: true,
24+
isEnabled: true,
25+
},
26+
opprettRevurderingAccess: {
27+
employeeHasAccess: true,
28+
isEnabled: true,
29+
},
30+
opprettNyForstegangsBehandlingAccess: {
31+
employeeHasAccess: true,
32+
isEnabled: true,
33+
},
34+
gjenopptaBehandlingAccess: {
35+
employeeHasAccess: true,
36+
isEnabled: true,
37+
},
38+
opneBehandlingForEndringerAccess: {
39+
employeeHasAccess: true,
40+
isEnabled: true,
41+
},
42+
ikkeVisOpprettNyBehandling: {
43+
employeeHasAccess: false,
44+
isEnabled: false,
45+
},
46+
};
47+
48+
describe('BehandlingMenuIndex', () => {
49+
it('skal vise meny der alle menyhandlinger er synlige', () => {
50+
const wrapper = shallow(<BehandlingMenuIndex
51+
saksnummer={123}
52+
behandlingId={1}
53+
behandlingVersion={2}
54+
uuid="423223"
55+
erKoet={false}
56+
erPaVent={false}
57+
behandlingType={{
58+
kode: behandlingType.FORSTEGANGSSOKNAD,
59+
kodeverk: 'BEHANDLING_TYPE',
60+
}}
61+
kanHenlegge
62+
kanVeilede={false}
63+
ytelseType={{
64+
kode: fagsakYtelseType.FORELDREPENGER,
65+
kodeverk: 'BEHANDLING_TYPE',
66+
}}
67+
opprettVerge={sinon.spy()}
68+
fjernVerge={sinon.spy()}
69+
behandlendeEnheter={[]}
70+
behandlendeEnhetId="2323"
71+
behandlendeEnhetNavn="NAV Viken"
72+
menyKodeverk={new MenyKodeverk(behandlingType.FORSTEGANGSSOKNAD)}
73+
previewHenleggBehandling={sinon.spy()}
74+
lagNyBehandling={sinon.spy()}
75+
kanTilbakekrevingOpprettes={{
76+
kanBehandlingOpprettes: false,
77+
kanRevurderingOpprettes: false,
78+
}}
79+
erTilbakekrevingAktivert={false}
80+
sjekkTilbakeKanOpprettes={sinon.spy()}
81+
sjekkTilbakeRevurdKanOpprettes={sinon.spy()}
82+
pushLocation={sinon.spy()}
83+
rettigheter={rettigheter}
84+
/>);
85+
86+
87+
const meny = wrapper.find(MenySakIndex);
88+
expect(meny).to.have.length(1);
89+
const data = meny.prop('data');
90+
expect(data).to.have.length(7);
91+
expect(data[0].erSynlig).is.false;
92+
expect(data[0].tekst).is.eql('Fortsett behandlingen');
93+
expect(data[1].erSynlig).is.true;
94+
expect(data[1].tekst).is.eql('Sett behandlingen på vent');
95+
expect(data[2].erSynlig).is.true;
96+
expect(data[2].tekst).is.eql('Henlegg behandlingen og avslutt');
97+
expect(data[3].erSynlig).is.true;
98+
expect(data[3].tekst).is.eql('Endre behandlende enhet');
99+
expect(data[4].erSynlig).is.true;
100+
expect(data[4].tekst).is.eql('Åpne behandling for endringer');
101+
expect(data[5].erSynlig).is.true;
102+
expect(data[5].tekst).is.eql('Opprett ny behandling');
103+
expect(data[6].erSynlig).is.true;
104+
expect(data[6].tekst).is.eql('Opprett verge/fullmektig');
105+
});
106+
});

0 commit comments

Comments
 (0)