Skip to content

Commit 8196993

Browse files
committed
test: possessions list test
1 parent 3ab921b commit 8196993

File tree

10 files changed

+154
-8
lines changed

10 files changed

+154
-8
lines changed

.github/workflows/build.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,12 @@ jobs:
2828
aws-secret-access-key: ${{ secrets.AWS_SECRET_KEY}}
2929
aws-region: ${{ secrets.AWS_REGION }}
3030
- run: ./scripts/init-npm.sh harena-store npm-hei-school 088312068315 eu-west-3
31-
31+
3232
- name: Run e2e tests
3333
uses: cypress-io/github-action@v6
3434
with:
3535
start: npm run dev
36-
36+
3737
- name: SonarCloud Scan
3838
uses: SonarSource/sonarcloud-github-action@master
3939
env:

cypress/e2e/possession.cy.tsx

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { patrimoineMocks, possessionMocks } from '../fixtures/mocks';
2+
import { listMock } from '../fixtures/mocks/utils';
3+
4+
describe('patrimoines', () => {
5+
beforeEach(() => {
6+
cy.intercept(
7+
'GET',
8+
'**patrimoines?page=1&page_size=10',
9+
listMock(patrimoineMocks)
10+
).as('getPatrimoines');
11+
cy.intercept(
12+
'GET',
13+
`**/patrimoines/${patrimoineMocks[0].nom}`,
14+
patrimoineMocks[0]
15+
).as('getOnePatrimoine');
16+
cy.intercept(
17+
'GET',
18+
`**/patrimoines/${patrimoineMocks[0].nom}/possessions?page=1&page_size=10`,
19+
possessionMocks
20+
).as('getPossessions');
21+
});
22+
23+
it('possessions.list', () => {
24+
cy.visit('/patrimoines');
25+
cy.wait('@getPatrimoines');
26+
cy.get('tbody tr').first().click();
27+
cy.wait('@getPossessions');
28+
cy.get('tbody tr').should('have.length', possessionMocks.data.length);
29+
cy.contains(possessionMocks.data[0].type!);
30+
});
31+
});

cypress/fixtures/mocks/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
export * from './patrimoine-mocks';
2+
export * from './possession-mocks';
23
export * from './person-mocks';
+77
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
import {
2+
Argent,
3+
GetPatrimoinePossessions200Response,
4+
Materiel,
5+
} from '@harena-com/typescript-client';
6+
7+
const ordinateur: Materiel = {
8+
nom: 'Mon materiel',
9+
devise: {
10+
code: 'MGA',
11+
nom: 'Ariary',
12+
},
13+
t: '2024-07-15T00:00:00Z',
14+
valeur_comptable: 100,
15+
date_d_acquisition: '2024-07-15T00:00:00Z',
16+
taux_dappreciation_annuel: 50,
17+
};
18+
19+
const monArgentDette: Argent = {
20+
type: 'DETTE',
21+
nom: 'Mon Argent Dette',
22+
valeur_comptable: 100,
23+
t: '2024-07-15T00:00:00Z',
24+
devise: {
25+
code: 'MGA',
26+
nom: 'Ariary',
27+
},
28+
date_d_ouverture: '2024-07-15T00:00:00Z',
29+
};
30+
31+
export const possessionMocks: Required<GetPatrimoinePossessions200Response> = {
32+
data: [
33+
{
34+
type: 'ARGENT',
35+
argent: monArgentDette,
36+
},
37+
{
38+
type: 'ARGENT',
39+
argent: {
40+
type: 'CREANCE',
41+
nom: 'Mon Argent Creance',
42+
valeur_comptable: 1500,
43+
t: '2024-07-15T00:00:00Z',
44+
devise: {
45+
code: 'EUR',
46+
nom: 'Euro',
47+
},
48+
date_d_ouverture: '2024-07-15T00:00:00Z',
49+
},
50+
},
51+
{
52+
type: 'MATERIEL',
53+
materiel: ordinateur,
54+
},
55+
{
56+
type: 'ARGENT',
57+
argent: monArgentDette,
58+
},
59+
{
60+
type: 'FLUXARGENT',
61+
flux_argent: {
62+
argent: monArgentDette,
63+
valeur_comptable: 500,
64+
nom: 'Mon Argent Creance',
65+
t: '2024-07-15T00:00:00Z',
66+
fin: '2024-07-15T00:00:00Z',
67+
debut: '2024-07-18T00:00:00Z',
68+
flux_mensuel: 500,
69+
date_d_operation: 21,
70+
devise: {
71+
code: 'EUR',
72+
nom: 'Euro',
73+
},
74+
},
75+
},
76+
],
77+
};

src/operations/common/utils/typo.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Devise } from '@harena-com/typescript-client';
22

3-
export const renderMoney = (value: number, devise: Devise) => {
4-
return `${value} ${devise.code} (${devise.nom})`;
3+
export const renderMoney = (value: number, devise?: Devise) => {
4+
return `${value} ${devise?.code} (${devise?.nom})`;
55
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './possession-type-field';
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import { PossessionAvecTypeTypeEnum } from '@harena-com/typescript-client';
2+
import { Chip } from '@mui/material';
3+
import { FunctionField } from 'react-admin';
4+
5+
export const getPossessionFieldColor = (
6+
possessionType: PossessionAvecTypeTypeEnum
7+
) => {
8+
switch (possessionType) {
9+
case 'ARGENT':
10+
return 'success';
11+
case 'FLUXARGENT':
12+
return 'error';
13+
default:
14+
return 'primary';
15+
}
16+
};
17+
18+
export const PossessionTypeField = () => (
19+
<FunctionField
20+
label="Type"
21+
render={(possession) => (
22+
<Chip
23+
label={possession.type}
24+
color={getPossessionFieldColor(possession.type)}
25+
/>
26+
)}
27+
/>
28+
);

src/operations/posssessions/possession-list.tsx

+2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import {
1717
import { Add as CreateIcon } from '@mui/icons-material';
1818
import { Possession } from '@harena-com/typescript-client';
1919
import { PossessionCreate } from './possession-create';
20+
import { PossessionTypeField } from './components';
2021
import { renderMoney } from '../common/utils/typo';
2122
import { useToggle } from '../common/hooks';
2223

@@ -72,6 +73,7 @@ export const PossessionList = ({
7273
renderMoney(possession.valeur_comptable!, possession.devise!)
7374
}
7475
/>
76+
<PossessionTypeField />
7577
</Datagrid>
7678
</List>
7779
<Dialog

src/operations/posssessions/possession-show.tsx

+2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {
77
TextField,
88
TopToolbar,
99
} from 'react-admin';
10+
import { PossessionTypeField } from './components';
1011
import { Create as EditIcon, ArrowBack } from '@mui/icons-material';
1112
import { useParams } from 'react-router-dom';
1213
import { renderMoney } from '../common/utils/typo';
@@ -53,6 +54,7 @@ export const PossessionShow = () => {
5354
}
5455
label="Valeur Comptable"
5556
/>
57+
<PossessionTypeField />
5658
</SimpleShowLayout>
5759
</Show>
5860
);

src/providers/possession-provider.ts

+8-4
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,20 @@
1-
import { Possession, PossessionAvecType } from '@harena-com/typescript-client';
1+
import {
2+
Possession,
3+
PossessionAvecType,
4+
PossessionAvecTypeTypeEnum,
5+
} from '@harena-com/typescript-client';
26
import { HarenaDataProvider } from './types';
37
import { possessionApi } from './api';
48
import { addIdField } from './utils';
59

610
export const getPossessionTypeValue = (value: PossessionAvecType) => {
711
switch (value.type) {
812
case 'ARGENT':
9-
return value.argent!;
13+
return { ...value.argent!, type: PossessionAvecTypeTypeEnum.ARGENT };
1014
case 'FLUXARGENT':
11-
return value.flux_argent!;
15+
return { ...value.argent!, type: PossessionAvecTypeTypeEnum.FLUXARGENT };
1216
case 'MATERIEL':
13-
return value.materiel!;
17+
return { ...value.argent!, tyep: PossessionAvecTypeTypeEnum.MATERIEL };
1418
default:
1519
throw new Error('Unknown PossessionAvecType value');
1620
}

0 commit comments

Comments
 (0)