Compare commits
3 Commits
22ec7f8fdd
...
main
Author | SHA1 | Date | |
---|---|---|---|
|
05b0a4514b | ||
560226b6a8 | |||
4e6a03df17 |
Binary file not shown.
10
README.md
10
README.md
@@ -17,9 +17,10 @@ Nous n'avons pas r
|
||||
|
||||
r<EFBFBD>sum<EFBFBD> des fonctionnalit<69>s :
|
||||
|
||||
En se connectant, l'utilisateur peut charger la liste des articleset les filtrer par pi<70>ce, date, nom, etc. Il est possible de cr<63>er et de mettre <20> jour des articles.
|
||||
(Il n'y a pas de confirmation de r<>ussite ou d'<27>chec de cr<63>ation/update. La page doit <20>tre actualis<69>e pour voir les r<>sultats.)
|
||||
Une page permet de consulter les statistiques des pi<70>ces et la liste des pi<70>ces. Il est possible d'y cr<63>er de nouvelles. La mise <20> jour des pi<70>cesn'est pas encore impl<70>ment<6E>e.
|
||||
L'utilisateur peut cr<63>er un compte sur la page de login (navbar)
|
||||
En se connectant, l'utilisateur peut charger la liste des articles et les filtrer par pi<70>ce, date, nom, etc. Il est possible de cr<63>er, supprimer et de mettre <20> jour des articles.
|
||||
Une page permet de consulter les statistiques des pi<70>ces et la liste des pi<70>ces. Il est possible d'y cr<63>er de nouvelles, de les modifier ou de les supprimer (supprimant <20>galement les articles li<6C>s).
|
||||
Toute op<6F>ration d'<27>criture r<>ussie provoque un rechargement de page.
|
||||
|
||||
Les icones AntDesign provoquent syst<73>matiquement une exception dans la console. Nous n'avons pas <20>t<EFBFBD> en mesure de corriger ou <20>viter cette erreur. Les icones s'affichent bien, donc <20>a ne posera pas de probl<62>me <20> part la pollution de la console.
|
||||
|
||||
@@ -29,9 +30,6 @@ Nous sommes conscients que ce projet ne correspond pas exactement aux attentes d
|
||||
|
||||
Nous vous souhaitons une bonne correction et vous remercions pour vos cours.
|
||||
|
||||
Traduit avec DeepL.com (version gratuite)
|
||||
|
||||
|
||||
|
||||
## Run Locally
|
||||
|
||||
|
@@ -1,35 +1,78 @@
|
||||
/*import { describe, it, expect, beforeEach, vi, afterEach } from "vitest";
|
||||
import { describe, it, vi, expect, beforeEach, afterEach } from "vitest";
|
||||
import { render, fireEvent, screen, cleanup } from "@testing-library/react";
|
||||
import { Login } from "../../../src/pages/index.js";
|
||||
import { ItemPage } from "../../../src/components/item/ItemPage.jsx"; // Assurez-vous d'importer correctement votre composant
|
||||
import { AuthenticationContext } from "../../../src/contexts/index.js";
|
||||
|
||||
describe('Items Page', () => {
|
||||
describe("Item Page with Authentication", () => {
|
||||
let rooms;
|
||||
beforeEach(() => {
|
||||
// Se connecter à l'application avec le compte pseudo : Juvisi!0TEST et mdp : Juvisi!0TEST
|
||||
cy.visit('/');
|
||||
cy.findByPlaceholderText('username').type('Juvisi!0TEST');
|
||||
cy.findByPlaceholderText('password').type('Juvisi!0TEST');
|
||||
cy.findByText('submit').click();
|
||||
// Vérifier que la connexion est réussie et que vous êtes redirigé vers la page '/items'
|
||||
cy.findByText('Welcome Juvisi!0TEST').should('exist');
|
||||
// Simuler la connexion de l'utilisateur
|
||||
const user = { username: "Juvisi!0TEST", password: "Juvisi!0TEST" };
|
||||
const loginFunction = vi.fn().mockResolvedValue(user); // Mock de la fonction de connexion
|
||||
rooms = [{ _id: "66425c9d8869396c3e853633", name: "test" }];
|
||||
render(
|
||||
<AuthenticationContext.Provider value={{ login: loginFunction }}>
|
||||
<ItemPage />
|
||||
</AuthenticationContext.Provider>,
|
||||
);
|
||||
});
|
||||
|
||||
it('creates an item', () => {
|
||||
// Créer un nouvel item
|
||||
cy.findByPlaceholderText('Item name').type('New Item');
|
||||
cy.findByText('Add Item').click();
|
||||
afterEach(cleanup); // Nettoyer après chaque test pour éviter les fuites de mémoire
|
||||
|
||||
it("renders without errors", () => {
|
||||
expect(screen.getByTestId("item-container")).toBeTruthy();
|
||||
});
|
||||
|
||||
it('verifies the item is created', () => {
|
||||
// Vérifier que l'élément est ajouté à la liste
|
||||
cy.findByText('New Item').should('exist');
|
||||
});
|
||||
/*it('allows filtering items', async () => {
|
||||
// Simuler une saisie dans le champ de recherche par nom
|
||||
fireEvent.change(screen.getByLabelText('Search by name:'), { target: { value: 'Item' } });
|
||||
// Attendre que les éléments filtrés soient rendus dans la liste
|
||||
await screen.findByText('Filtered Item');
|
||||
});*/
|
||||
|
||||
it('deletes the item', () => {
|
||||
// Supprimer l'élément
|
||||
cy.findByText('New Item').siblings('button').click();
|
||||
});
|
||||
});
|
||||
/*it('allows creating an item', async () => {
|
||||
// Simuler un clic sur le bouton "Create Item"
|
||||
fireEvent.click(screen.getByTestId('create-item-button'));
|
||||
// Attendre que le modal de création d'élément s'ouvre
|
||||
await screen.findByTestId('create-item-button');
|
||||
// Simuler une saisie dans les champs du formulaire de création d'élément
|
||||
fireEvent.change(screen.getByTestId("create-item-Brand-Input"), { target: { value: 'Brand X' } });
|
||||
fireEvent.change(screen.getByTestId("create-item-Model-Input"), { target: { value: 'Model Y' } });
|
||||
// Simuler un clic pour ouvrir le menu déroulant
|
||||
fireEvent.mouseDown(screen.getByTestId("create-item-Room-Select"));
|
||||
|
||||
// Attendre que les options du menu déroulant soient rendues
|
||||
await screen.findByText('test');
|
||||
|
||||
// Simuler un clic pour choisir l'option "test"
|
||||
fireEvent.click(screen.getByText('test'));
|
||||
|
||||
|
||||
*/ //impossible de tester car element pas encore terminé
|
||||
// Simuler un clic sur le bouton "Submit" du formulaire
|
||||
fireEvent.click(screen.getByText('Submit'));
|
||||
// Attendre que l'élément soit ajouté à la liste
|
||||
await screen.findByText('Brand X');
|
||||
await screen.findByText('Model Y');
|
||||
});*/
|
||||
|
||||
/*it('allows updating an item', async () => {
|
||||
// Simuler un clic sur le bouton "Edit" de l'élément à mettre à jour
|
||||
fireEvent.click(screen.getByText('Edit'));
|
||||
// Attendre que le modal de mise à jour de l'élément s'ouvre
|
||||
await screen.findByText('Update Item');
|
||||
// Simuler une saisie dans les champs du formulaire de mise à jour d'élément
|
||||
fireEvent.change(screen.getByLabelText('Brand'), { target: { value: 'Updated Brand' } });
|
||||
fireEvent.change(screen.getByLabelText('Model'), { target: { value: 'Updated Model' } });
|
||||
// Simuler un clic sur le bouton "Submit" du formulaire de mise à jour
|
||||
fireEvent.click(screen.getByText('Submit'));
|
||||
// Attendre que l'élément mis à jour soit affiché dans la liste
|
||||
await screen.findByText('Updated Brand Updated Model');
|
||||
});*/
|
||||
|
||||
/*it('allows deleting an item', async () => {
|
||||
// Simuler un clic sur le bouton "Delete" de l'élément à supprimer
|
||||
fireEvent.click(screen.getByText('Delete'));
|
||||
// Attendre que l'élément soit supprimé de la liste
|
||||
await screen.findByText('Updated Brand Updated Model', { timeout: 5000, shouldNotExist: true });
|
||||
});*/
|
||||
});
|
||||
|
@@ -1,5 +1,6 @@
|
||||
import React from "react";
|
||||
import { Form, Input, Button } from "antd";
|
||||
import { createRoom } from '../../api/room'
|
||||
|
||||
import axios from "axios";
|
||||
|
||||
|
Reference in New Issue
Block a user