Skip to content

Commit

Permalink
test: ✅ add e2e and api tests
Browse files Browse the repository at this point in the history
  • Loading branch information
nutfdt committed Aug 30, 2024
1 parent 8d337ec commit 98a0619
Show file tree
Hide file tree
Showing 14 changed files with 143 additions and 11 deletions.
Binary file added backend/tests/blank_gun.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added backend/tests/low_quality.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added backend/tests/no_text.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
38 changes: 38 additions & 0 deletions backend/tests/test_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -186,3 +186,41 @@ def test_403(self):
response = client.post("/api/expert-contact")
response.data = response.json()
assert response.status_code == 403


class TestBlankGunUpload:
def test_blank_gun(self):
with open("./tests/blank_gun.jpg", "rb") as f:
response = client.post(
"/api/identification-blank-gun",
files={"image": f},
)
response.data = response.json()
assert response.status_code == 200
assert response.data["alarm_model"] == "Alarm_model"
assert response.data["missing_text"] == False
assert response.data["low_quality"] == False

def test_bad_quality(self):
with open("./tests/low_quality.jpg", "rb") as f:
response = client.post(
"/api/identification-blank-gun",
files={"image": f},
)
response.data = response.json()
assert response.status_code == 200
assert response.data["alarm_model"] == None
assert response.data["missing_text"] == False
assert response.data["low_quality"] == True

def test_missing_text(self):
with open("./tests/no_text.jpg", "rb") as f:
response = client.post(
"/api/identification-blank-gun",
files={"image": f},
)
response.data = response.json()
assert response.status_code == 200
assert response.data["alarm_model"] == None
assert response.data["missing_text"] == True
assert response.data["low_quality"] == False
54 changes: 54 additions & 0 deletions frontend/cypress/e2e/blank-gun-detection.cy.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
describe("Blank Gun Detection", () => {
it("should identificate real blank gun", () => {
cy.Identification();

cy.getByDataTestid("select-file").as("fileInput");
cy.intercept("POST", "/api/upload").as("upload");
cy.get("@fileInput").selectFile("./cypress/images/blank-gun.jpg", {
force: true,
});
cy.wait("@upload").then(({ response }) => {
expect(response.statusCode).to.eq(200);
});
cy.getByDataTestid("next-step").click();
cy.IdentificationPistoletSemiAuto();
cy.wait(5000);
cy.url().should("contain", "/guide-identification/resultat-final");
cy.getByDataTestid("arm-category").should("contain", "Catégorie C");
});

it("should identificate firearm with missing text", () => {
cy.Identification();

cy.getByDataTestid("select-file").as("fileInput");
cy.intercept("POST", "/api/upload").as("upload");
cy.get("@fileInput").selectFile("./cypress/images/no-text.jpg", {
force: true,
});
cy.wait("@upload").then(({ response }) => {
expect(response.statusCode).to.eq(200);
});
cy.getByDataTestid("next-step").click();
cy.IdentificationBlankGunMissingText();
cy.url().should("contain", "/guide-identification/resultat-final");
cy.getByDataTestid("arm-category").should("contain", "Catégorie B");
});

it("should identificate firearm with low quality", () => {
cy.Identification();

cy.getByDataTestid("select-file").as("fileInput");
cy.intercept("POST", "/api/upload").as("upload");
cy.get("@fileInput").selectFile("./cypress/images/low-quality.jpg", {
force: true,
});
cy.wait("@upload").then(({ response }) => {
expect(response.statusCode).to.eq(200);
});
cy.getByDataTestid("next-step").click();
cy.IdentificationBlankGunLowQuality();
cy.url().should("contain", "/guide-identification/resultat-final");
cy.getByDataTestid("arm-category").should("contain", "Catégorie B");
});
});

1 change: 1 addition & 0 deletions frontend/cypress/e2e/firearm-confidence.cy.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ describe("Firearm Confidence", () => {
});
cy.getByDataTestid("next-step").click();
cy.IdentificationPistoletSemiAuto();
cy.wait(5000);
cy.url().should("contain", "/guide-identification/resultat-final");
cy.getByDataTestid("arm-category").should("contain", "Catégorie B");
});
Expand Down
1 change: 1 addition & 0 deletions frontend/cypress/e2e/firearm-identification.cy.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ describe("Firearm Identification", () => {
});
cy.getByDataTestid("next-step").click();
cy.IdentificationPistoletSemiAuto();
cy.wait(5000);
cy.url().should("contain", "/guide-identification/resultat-final");
cy.getByDataTestid("arm-category").should("contain", "Catégorie B");
cy.getByDataTestid("return-to-home-end").click();
Expand Down
1 change: 1 addition & 0 deletions frontend/cypress/e2e/firearm-securing.cy.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ describe("Securing Firearm and Identification", () => {
cy.contains("p", "Basegun a identifié votre arme");
cy.getByDataTestid("next-step").click();
cy.IdentificationPistoletSemiAuto();
cy.wait(5000);
cy.url().should("contain", "/guide-identification/resultat-final");
cy.getByDataTestid("arm-category").should("contain", "Catégorie B");
cy.getByDataTestid("return-to-home-end").click();
Expand Down
Binary file added frontend/cypress/images/blank-gun.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added frontend/cypress/images/low-quality.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added frontend/cypress/images/no-text.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
56 changes: 46 additions & 10 deletions frontend/cypress/support/commands.js
Original file line number Diff line number Diff line change
Expand Up @@ -109,11 +109,11 @@ Cypress.Commands.add("IdentificationPistoletSemiAuto", () => {
cy.contains("Cartouches").first().click();
cy.getByDataTestid("next-step").should("not.have.attr", "disabled");
cy.getByDataTestid("next-step").click();
cy.url().should("contain", "/guide-identification/armes-alarme");
cy.getByDataTestid("instruction-armeAlarme").should("contain", "Votre arme");
cy.getByDataTestid("next-step").click();
cy.getByDataTestid("aucune-correspondance").click();
cy.getByDataTestid("next-step").click();
cy.url().should("contain", "/guide-identification/qualite-image");
cy.getByDataTestid("title-page").should(
"contain",
"Identification d'une arme d'alarme",
);
});

Cypress.Commands.add("IdentificationRevolver", () => {
Expand All @@ -133,11 +133,9 @@ Cypress.Commands.add("IdentificationRevolver", () => {
cy.contains("Balles").first().click();
cy.getByDataTestid("next-step").should("not.have.attr", "disabled");
cy.getByDataTestid("next-step").click();
cy.url().should("contain", "/guide-identification/armes-alarme");
cy.getByDataTestid("instruction-armeAlarme").should("contain", "Votre arme");
cy.getByDataTestid("next-step").click();
cy.getByDataTestid("aucune-correspondance").click();
cy.getByDataTestid("next-step").click();
cy.url().should("contain", "/guide-identification/qualite-image");
cy.getByDataTestid("title-page").should("contain", "Marquages non détéctés");
cy.get('.fr-col-12 > [data-testid="next-step"]').click();
});

Cypress.Commands.add("arrierePlatRevolver", () => {
Expand Down Expand Up @@ -198,3 +196,41 @@ Cypress.Commands.add("pasDeGuide", () => {
cy.getByDataTestid("go-to-identification").click();
cy.url().should("contain", "/guide-identification/resultat-typologie");
});

Cypress.Commands.add("IdentificationBlankGunMissingText", () => {
cy.url().should(
"contain",
"guide-identification/informations-complementaires",
);
cy.getByDataTestid("next-step").click();
cy.url().should("contain", "/guide-identification/munition-type");
cy.getByDataTestid("next-step").should("have.attr", "disabled");
cy.contains("Cartouches").first().click();
cy.getByDataTestid("next-step").should("not.have.attr", "disabled");
cy.getByDataTestid("next-step").click();
cy.url().should("contain", "/guide-identification/qualite-image");
cy.getByDataTestid("title-page").should(
"contain",
"Marquages non détéctés",
);
cy.get('.fr-col-12 > [data-testid="next-step"]').click();
});

Cypress.Commands.add("IdentificationBlankGunLowQuality", () => {
cy.url().should(
"contain",
"guide-identification/informations-complementaires",
);
cy.getByDataTestid("next-step").click();
cy.url().should("contain", "/guide-identification/munition-type");
cy.getByDataTestid("next-step").should("have.attr", "disabled");
cy.contains("Cartouches").first().click();
cy.getByDataTestid("next-step").should("not.have.attr", "disabled");
cy.getByDataTestid("next-step").click();
cy.url().should("contain", "/guide-identification/qualite-image");
cy.getByDataTestid("title-page").should(
"contain",
"Qualité d'image insuffisante",
);
cy.get('.fr-col-12 > [data-testid="next-step"]').click();
});
Original file line number Diff line number Diff line change
Expand Up @@ -292,6 +292,7 @@ watch(alarmModel, (newVal) => {
<DsfrButton
class="flex justify-center !w-full"
data-testid="next-step"
:label="footerValue.next"
:icon-right="true"
icon="ri-checkbox-circle-line"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ const alert = computed(() => {
</script>
<template>
<h2 class="fr-mt-3w flex justify-center titlePage">
<span> {{ title }}</span>
<span data-testid="title-page"> {{ title }}</span>
</h2>

<div class="fr-p-1w">
Expand Down

0 comments on commit 98a0619

Please sign in to comment.