Skip to content

Commit c5b46da

Browse files
committed
test(admin):add tests for registry manager homepage and certifications list
1 parent c2d44d3 commit c5b46da

File tree

4 files changed

+246
-6
lines changed

4 files changed

+246
-6
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,178 @@
1+
import { stubQuery } from "../../../utils/graphql";
2+
import certifications from "./fixtures/certifications.json";
3+
4+
function interceptCertifications(status: string, visible = true) {
5+
cy.intercept("POST", "/api/graphql", (req) => {
6+
stubQuery(
7+
req,
8+
"activeFeaturesForConnectedUser",
9+
"features/active-features.json",
10+
);
11+
stubQuery(req, "getOrganismForAAPVisibilityCheck", "visibility/admin.json");
12+
stubQuery(
13+
req,
14+
"getMaisonMereCGUQuery",
15+
"account/gestionnaire-cgu-accepted.json",
16+
);
17+
const filteredRows =
18+
certifications.data.searchCertificationsV2ForRegistryManager.rows.filter(
19+
(certification) =>
20+
certification.status === status && certification.visible === visible,
21+
);
22+
stubQuery(req, "getCertificationsV2ForRegistryManager", {
23+
...certifications,
24+
data: {
25+
...certifications.data,
26+
searchCertificationsV2ForRegistryManager: {
27+
...certifications.data.searchCertificationsV2ForRegistryManager,
28+
rows: filteredRows,
29+
info: {
30+
...certifications.data.searchCertificationsV2ForRegistryManager
31+
.info,
32+
totalRows: filteredRows.length,
33+
},
34+
},
35+
},
36+
});
37+
});
38+
}
39+
40+
context("when I access the registry manager homepage", () => {
41+
it("show correct empty state component when registry manager has no attached certifications", function () {
42+
interceptCertifications("EMPTY", true);
43+
44+
cy.admin("/responsable-certifications/");
45+
cy.wait("@activeFeaturesForConnectedUser");
46+
cy.wait("@getOrganismForAAPVisibilityCheck");
47+
cy.wait("@getMaisonMereCGUQuery");
48+
cy.wait("@getCertificationsV2ForRegistryManager");
49+
cy.get('[data-test="no-certifications"]').should("be.visible");
50+
});
51+
52+
it("show correct component when registry manager has certifications to validate", function () {
53+
interceptCertifications("A_VALIDER_PAR_CERTIFICATEUR", true);
54+
55+
cy.admin("/responsable-certifications/");
56+
cy.wait("@activeFeaturesForConnectedUser");
57+
cy.wait("@getOrganismForAAPVisibilityCheck");
58+
cy.wait("@getMaisonMereCGUQuery");
59+
cy.wait("@getCertificationsV2ForRegistryManager");
60+
cy.get('[data-test="no-certifications"]').should("not.exist");
61+
cy.get('[data-test="certifications-to-validate"]').should("be.visible");
62+
cy.get('[data-testid="efa751cb-f5c2-4d90-b390-e5726eeebb19"]').should(
63+
"be.visible",
64+
);
65+
cy.get('[data-testid="efa751cb-f5c2-4d90-b390-e5726eeebb19"]').should(
66+
"have.text",
67+
"RNCP12296 - Bac Professionnel Accompagnement, soins et services à la personnes Option A : à domicile",
68+
);
69+
});
70+
});
71+
72+
context("when i access the certification list", () => {
73+
it("redirect to the pending validation certification list", function () {
74+
interceptCertifications("A_VALIDER_PAR_CERTIFICATEUR");
75+
76+
cy.admin("/responsable-certifications/certifications");
77+
cy.wait("@activeFeaturesForConnectedUser");
78+
cy.wait("@getOrganismForAAPVisibilityCheck");
79+
cy.wait("@getMaisonMereCGUQuery");
80+
cy.wait("@getCertificationsV2ForRegistryManager");
81+
cy.url().should(
82+
"eq",
83+
"http://localhost:3003/admin2/responsable-certifications/certifications/?status=A_VALIDER_PAR_CERTIFICATEUR&page=1",
84+
);
85+
});
86+
87+
it("show correct empty state component when there are no certifications to validate", function () {
88+
interceptCertifications("A_VALIDER_PAR_CERTIFICATEUR_EMPTY");
89+
90+
cy.admin("/responsable-certifications/certifications");
91+
cy.wait("@activeFeaturesForConnectedUser");
92+
cy.wait("@getOrganismForAAPVisibilityCheck");
93+
cy.wait("@getMaisonMereCGUQuery");
94+
cy.wait("@getCertificationsV2ForRegistryManager");
95+
cy.get('[data-test="no-certifications-to-validate"]').should("be.visible");
96+
});
97+
98+
it("show correct empty state component when there are no visible certifications", function () {
99+
interceptCertifications("VALIDE_PAR_CERTIFICATEUR_EMPTY", true);
100+
101+
cy.admin(
102+
"/responsable-certifications/certifications?status=VALIDE_PAR_CERTIFICATEUR&visible=true&page=1",
103+
);
104+
cy.wait("@activeFeaturesForConnectedUser");
105+
cy.wait("@getOrganismForAAPVisibilityCheck");
106+
cy.wait("@getMaisonMereCGUQuery");
107+
cy.wait("@getCertificationsV2ForRegistryManager");
108+
cy.get('[data-test="no-visible-certifications"]').should("be.visible");
109+
});
110+
111+
it("show correct empty state component when there are no invisible certifications", function () {
112+
interceptCertifications("VALIDE_PAR_CERTIFICATEUR_EMPTY", false);
113+
114+
cy.admin(
115+
"/responsable-certifications/certifications?status=VALIDE_PAR_CERTIFICATEUR&visible=false&page=1",
116+
);
117+
cy.wait("@activeFeaturesForConnectedUser");
118+
cy.wait("@getOrganismForAAPVisibilityCheck");
119+
cy.wait("@getMaisonMereCGUQuery");
120+
cy.wait("@getCertificationsV2ForRegistryManager");
121+
cy.get('[data-test="no-invisible-certifications"]').should("be.visible");
122+
});
123+
124+
it("let me click on the 'access certification' button when status is A_VALIDER_PAR_CERTIFICATEUR", function () {
125+
interceptCertifications("A_VALIDER_PAR_CERTIFICATEUR");
126+
127+
cy.admin("/responsable-certifications/certifications");
128+
cy.wait("@activeFeaturesForConnectedUser");
129+
cy.wait("@getOrganismForAAPVisibilityCheck");
130+
cy.wait("@getMaisonMereCGUQuery");
131+
cy.wait("@getCertificationsV2ForRegistryManager");
132+
cy.get('[data-test="access-certification-button"]').click({
133+
force: true,
134+
});
135+
cy.url().should(
136+
"eq",
137+
"http://localhost:3003/admin2/responsable-certifications/certifications/efa751cb-f5c2-4d90-b390-e5726eeebb19/",
138+
);
139+
});
140+
141+
it("let me click on the 'access certification' button when status is VALIDE_PAR_CERTIFICATEUR and visible is true", function () {
142+
interceptCertifications("VALIDE_PAR_CERTIFICATEUR", true);
143+
144+
cy.admin(
145+
"/responsable-certifications/certifications?status=VALIDE_PAR_CERTIFICATEUR&visible=true&page=1",
146+
);
147+
cy.wait("@activeFeaturesForConnectedUser");
148+
cy.wait("@getOrganismForAAPVisibilityCheck");
149+
cy.wait("@getMaisonMereCGUQuery");
150+
cy.wait("@getCertificationsV2ForRegistryManager");
151+
cy.get('[data-test="access-certification-button"]').click({
152+
force: true,
153+
});
154+
cy.url().should(
155+
"eq",
156+
"http://localhost:3003/admin2/responsable-certifications/certifications/654c9471-6e2e-4ff2-a5d8-2069e78ea0d6/",
157+
);
158+
});
159+
160+
it("let me click on the 'access certification' button when status is VALIDE_PAR_CERTIFICATEUR and visible is false", function () {
161+
interceptCertifications("VALIDE_PAR_CERTIFICATEUR", false);
162+
163+
cy.admin(
164+
"/responsable-certifications/certifications?status=VALIDE_PAR_CERTIFICATEUR&visible=false&page=1",
165+
);
166+
cy.wait("@activeFeaturesForConnectedUser");
167+
cy.wait("@getOrganismForAAPVisibilityCheck");
168+
cy.wait("@getMaisonMereCGUQuery");
169+
cy.wait("@getCertificationsV2ForRegistryManager");
170+
cy.get('[data-test="access-certification-button"]').click({
171+
force: true,
172+
});
173+
cy.url().should(
174+
"eq",
175+
"http://localhost:3003/admin2/responsable-certifications/certifications/994b9bc4-e9f5-42c3-8556-f2494d11ebb4/",
176+
);
177+
});
178+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
{
2+
"data": {
3+
"searchCertificationsV2ForRegistryManager": {
4+
"rows": [
5+
{
6+
"id": "994b9bc4-e9f5-42c3-8556-f2494d11ebb4",
7+
"label": "Bac Pro Accompagnement, soins et services à la personne - à domicile",
8+
"codeRncp": "12296",
9+
"status": "VALIDE_PAR_CERTIFICATEUR",
10+
"visible": false,
11+
"certificationAuthorityStructure": {
12+
"label": "Ministère de l'Education Nationale et de la Jeunesse"
13+
},
14+
"expiresAt": 1711922400000
15+
},
16+
{
17+
"id": "654c9471-6e2e-4ff2-a5d8-2069e78ea0d6",
18+
"label": "Bac Pro Accompagnement, soins et services à la personne - en structure",
19+
"codeRncp": "12301",
20+
"status": "VALIDE_PAR_CERTIFICATEUR",
21+
"visible": true,
22+
"certificationAuthorityStructure": {
23+
"label": "Ministère de l'Education Nationale et de la Jeunesse"
24+
},
25+
"expiresAt": 1719784800000
26+
},
27+
{
28+
"id": "efa751cb-f5c2-4d90-b390-e5726eeebb19",
29+
"label": "Bac Professionnel Accompagnement, soins et services à la personnes Option A : à domicile",
30+
"codeRncp": "12296",
31+
"status": "A_VALIDER_PAR_CERTIFICATEUR",
32+
"visible": true,
33+
"certificationAuthorityStructure": {
34+
"label": "Ministère de l'Education Nationale et de la Jeunesse"
35+
},
36+
"expiresAt": 1719792000000
37+
}
38+
],
39+
"info": {
40+
"totalRows": 3,
41+
"totalPages": 1,
42+
"currentPage": 1
43+
}
44+
}
45+
}
46+
}

packages/reva-admin-react/src/app/responsable-certifications/certifications/(list)/page.tsx

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,10 @@ import Badge from "@codegouvfr/react-dsfr/Badge";
1212

1313
const NoCertificationsToValidate = () => {
1414
return (
15-
<div className="grid grid-cols-3 grid-rows-1 w-11/12 m-auto">
15+
<div
16+
className="grid grid-cols-3 grid-rows-1 w-11/12 m-auto"
17+
data-test="no-certifications-to-validate"
18+
>
1619
<div className="col-span-2 m-auto">
1720
<h1 className="">Aucune certification à valider</h1>
1821
<p className="text-lg">
@@ -35,7 +38,10 @@ const NoCertificationsToValidate = () => {
3538

3639
const NoVisibleCertifications = () => {
3740
return (
38-
<div className="grid grid-cols-3 grid-rows-1 w-11/12 m-auto">
41+
<div
42+
className="grid grid-cols-3 grid-rows-1 w-11/12 m-auto"
43+
data-test="no-visible-certifications"
44+
>
3945
<div className="col-span-2 m-auto">
4046
<h1 className="">Aucune certification visible</h1>
4147
<p className="text-lg mb-0">
@@ -66,7 +72,10 @@ const NoVisibleCertifications = () => {
6672

6773
const NoInvisibleCertifications = () => {
6874
return (
69-
<div className="grid grid-cols-3 grid-rows-1 w-11/12 m-auto">
75+
<div
76+
className="grid grid-cols-3 grid-rows-1 w-11/12 m-auto"
77+
data-test="no-invisible-certifications"
78+
>
7079
<div className="col-span-2 m-auto">
7180
<h1 className="">Aucune certification invisible</h1>
7281
<p className="text-lg mb-0">

packages/reva-admin-react/src/app/responsable-certifications/page.tsx

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@ import { useCertifications } from "./certifications.hooks";
77

88
const NoCertifications = () => {
99
return (
10-
<div className="grid grid-cols-3 grid-rows-1 w-11/12 mx-auto">
10+
<div
11+
className="grid grid-cols-3 grid-rows-1 w-11/12 mx-auto"
12+
data-test="no-certifications"
13+
>
1114
<div className="col-span-2 m-auto">
1215
<h1 className="">
1316
Bienvenue sur votre espace Responsable des certifications !
@@ -37,12 +40,16 @@ const CertificationsToValidate = ({
3740
certifications,
3841
}: {
3942
certifications: {
43+
id: string;
4044
label: string;
4145
codeRncp: string;
4246
}[];
4347
}) => {
4448
return (
45-
<div className="grid grid-cols-3 grid-rows-1 w-11/12 mx-auto">
49+
<div
50+
className="grid grid-cols-3 grid-rows-1 w-11/12 mx-auto"
51+
data-test="certifications-to-validate"
52+
>
4653
<div className="col-span-2 m-auto">
4754
<h1 className="">
4855
Bienvenue sur votre espace Responsable des certifications !
@@ -52,7 +59,7 @@ const CertificationsToValidate = ({
5259
suivantes :
5360
<ul className="mt-6">
5461
{certifications.map((certification) => (
55-
<li key={certification.codeRncp}>
62+
<li key={certification.id} data-testid={certification.id}>
5663
RNCP{certification.codeRncp} - {certification.label}
5764
</li>
5865
))}

0 commit comments

Comments
 (0)