From 86cbefd60c36b921579dcc9f29f423a8def888e1 Mon Sep 17 00:00:00 2001 From: Amin Ghasempoor Date: Tue, 10 Oct 2023 14:56:57 +0330 Subject: [PATCH 1/2] CFE-4 write role management mock --- mocks/handler.js | 48 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/mocks/handler.js b/mocks/handler.js index 169b795..89071d4 100644 --- a/mocks/handler.js +++ b/mocks/handler.js @@ -1,4 +1,4 @@ -import {GET_PERMISSIONS_LIST, GET_USER_ROUTE,SET_USER_PASSWORD} from "@/core/data/apiRoutes"; +import {GET_PERMISSIONS_LIST, GET_ROLE_MANAGEMENT, GET_USER_ROUTE, SET_USER_PASSWORD} from "@/core/data/apiRoutes"; import {rest} from "msw"; export const handler = [ @@ -32,5 +32,51 @@ export const handler = [ } )) }), + rest.get(GET_ROLE_MANAGEMENT, (req, res, ctx) => { + return res( + ctx.json( + { + data : [ + { + created_at: "2023-10-01T07:20:07.000000Z", + guard_name: "api", + id: 1, + name: "admin", + name_fa: "ادمین", + permissions: [ + { + id: 1, + name: "manage_users", + }, + { + id: 2, + name: "manage_roles", + }, + ], + updated_at: "2023-10-10T07:38:12.000000Z" + }, + { + created_at: "2023-10-01T07:20:07.000000Z", + guard_name: "api", + id: 2, + name: "manager", + name_fa: "مدیر", + permissions: [ + { + id: 1, + name: "manage_users", + }, + { + id: 2, + name: "manage_roles", + }, + ], + updated_at: "2023-10-10T07:38:12.000000Z" + } + ] + } + ), + ); + }), ] \ No newline at end of file From 752e8a3662043a89621245ec872a98edae340b34 Mon Sep 17 00:00:00 2001 From: Amin Ghasempoor Date: Tue, 10 Oct 2023 15:36:25 +0330 Subject: [PATCH 2/2] CFE-4 correct act mistakes --- .../CreateForm/__test__/CreateContent.test.js | 37 ++++++++++------- .../Form/CreateForm/__test__/index.test.js | 14 ++++--- .../UpdateForm/__test__/UpdateContent.test.js | 40 +++++++++++-------- .../__test__/RoleManagementComponent.test.js | 32 ++++++++++----- 4 files changed, 77 insertions(+), 46 deletions(-) diff --git a/src/components/dashboard/role-management/Form/CreateForm/__test__/CreateContent.test.js b/src/components/dashboard/role-management/Form/CreateForm/__test__/CreateContent.test.js index 3e31b8f..610e224 100644 --- a/src/components/dashboard/role-management/Form/CreateForm/__test__/CreateContent.test.js +++ b/src/components/dashboard/role-management/Form/CreateForm/__test__/CreateContent.test.js @@ -4,45 +4,51 @@ import CreateContent from "@/components/dashboard/role-management/Form/CreateFor describe("Create Content component from Create Form Component in Role Management Component",()=>{ describe("Rendering", ()=>{ - it('should see AddDialog text in the top ', () => { + it('should see AddDialog text in the top ', async () => { render( ) const textElement = screen.queryByText("افزودن") - expect(textElement).toBeInTheDocument() + await waitFor(()=>{ + expect(textElement).toBeInTheDocument() + }) }); - it('should see name_en text', () => { + it('should see name_en text', async () => { render( ) const textElement = screen.queryByLabelText("نام انگلیسی") - expect(textElement).toBeInTheDocument() + await waitFor(()=>{ + expect(textElement).toBeInTheDocument() + }) }); - it('should see name_fa text', () => { + it('should see name_fa text', async () => { render( ) const textElement = screen.queryByLabelText("نام فارسی") - expect(textElement).toBeInTheDocument() + await waitFor(()=>{ + expect(textElement).toBeInTheDocument() + }) }); - it('should see name_fa text', () => { + it('should see name_fa text', async () => { render( ) const textElement = screen.queryByLabelText("نام فارسی") - expect(textElement).toBeInTheDocument() + await waitFor(()=>{ + expect(textElement).toBeInTheDocument() + }) }); - }) - describe("Behavior",()=>{ it('should see what fill in the name_en input', async () => { render( @@ -81,8 +87,7 @@ describe("Create Content component from Create Form Component in Role Management const checkboxElement = await screen.findAllByTestId("PermissionList-checkbox") expect(checkboxElement).toHaveLength(2) }); - - it('should get checked if permission list item get clicked', () => { + it('should get checked if permission list item get clicked', async () => { render( @@ -90,11 +95,15 @@ describe("Create Content component from Create Form Component in Role Management ) const checkboxElement = screen.getByLabelText("مدیریت کارتابل رییس اداره مسافری استان") - expect(checkboxElement).not.toBeChecked(); + await waitFor(()=>{ + expect(checkboxElement).not.toBeChecked(); + }) fireEvent.click(checkboxElement); - expect(checkboxElement).toBeChecked(); + await waitFor(()=>{ + expect(checkboxElement).toBeChecked(); + }) }); }) describe("Validation",()=>{ diff --git a/src/components/dashboard/role-management/Form/CreateForm/__test__/index.test.js b/src/components/dashboard/role-management/Form/CreateForm/__test__/index.test.js index b4f0e82..7bc9db2 100644 --- a/src/components/dashboard/role-management/Form/CreateForm/__test__/index.test.js +++ b/src/components/dashboard/role-management/Form/CreateForm/__test__/index.test.js @@ -1,21 +1,23 @@ -import {fireEvent, queryByText, render, screen} from "@testing-library/react"; +import {fireEvent, queryByText, render, screen, waitFor} from "@testing-library/react"; import CreateForm from "@/components/dashboard/role-management/Form/CreateForm"; import MockAppWithProviders from "../../../../../../../mocks/AppWithProvider"; describe("Create Form Component from Role Management Component",()=>{ describe("Rendering",()=>{ - it('should see Dialog text', () => { + it('should see Dialog text', async () => { render( ) const textElement = screen.queryByText("افزودن") - expect(textElement).toBeInTheDocument() + await waitFor(()=>{ + expect(textElement).toBeInTheDocument() + }) }); - it('should see Tooltip text when mouse over', () => { + it('should see Tooltip text when mouse over', async () => { render( @@ -24,7 +26,9 @@ describe("Create Form Component from Role Management Component",()=>{ const buttonElement = screen.getByText("افزودن"); fireEvent.mouseOver(buttonElement); const tooltipTextElement = screen.getByText("افزودن"); - expect(tooltipTextElement).toBeInTheDocument(); + await waitFor(()=>{ + expect(tooltipTextElement).toBeInTheDocument() + }) }); }) }) \ No newline at end of file diff --git a/src/components/dashboard/role-management/Form/UpdateForm/__test__/UpdateContent.test.js b/src/components/dashboard/role-management/Form/UpdateForm/__test__/UpdateContent.test.js index d36fe05..caaa470 100644 --- a/src/components/dashboard/role-management/Form/UpdateForm/__test__/UpdateContent.test.js +++ b/src/components/dashboard/role-management/Form/UpdateForm/__test__/UpdateContent.test.js @@ -36,7 +36,7 @@ describe("Create Content component from Create Form Component in Role Management ) const textElement = screen.queryByText("ویرایش") - act(()=>{ + await waitFor(()=>{ expect(textElement).toBeInTheDocument() }) }); @@ -47,7 +47,7 @@ describe("Create Content component from Create Form Component in Role Management ) const textElement = screen.queryByLabelText("نام انگلیسی") - act(()=>{ + await waitFor(()=>{ expect(textElement).toBeInTheDocument() }) }); @@ -58,29 +58,29 @@ describe("Create Content component from Create Form Component in Role Management ) const textElement = screen.queryByLabelText("نام فارسی") - act(()=>{ + await waitFor(()=>{ expect(textElement).toBeInTheDocument() }) }); - it('should see update text in the submit button ', () => { + it('should see update text in the submit button ', async () => { render( ) const buttonElement = screen.queryByText("ثبت") - act(()=>{ + await waitFor(()=>{ expect(buttonElement).toBeInTheDocument() }) }); - it('should see cancel text in the cancel button ', () => { + it('should see cancel text in the cancel button ', async () => { render( ) const buttonElement = screen.queryByText("بستن") - act(()=>{ + await waitFor(()=>{ expect(buttonElement).toBeInTheDocument() }) }); @@ -96,7 +96,7 @@ describe("Create Content component from Create Form Component in Role Management const nameEnglishInput = screen.getByLabelText('نام انگلیسی'); fireEvent.change(nameEnglishInput, {target: {value: 'testuser'}}); - await act(()=>{ + await waitFor(()=>{ // Simulate user input expect(nameEnglishInput).toHaveValue('testuser'); }) @@ -110,7 +110,7 @@ describe("Create Content component from Create Form Component in Role Management const nameFarsiInput = screen.getByLabelText('نام فارسی'); fireEvent.change(nameFarsiInput, {target: {value: 'testuser'}}); - await act(()=>{ + await waitFor(()=>{ // Simulate user input expect(nameFarsiInput).toHaveValue('testuser'); }) @@ -122,35 +122,43 @@ describe("Create Content component from Create Form Component in Role Management ) const checkboxElement = await screen.findAllByTestId("PermissionList-checkbox") - expect(checkboxElement).toHaveLength(2) + await waitFor(()=>{ + expect(checkboxElement).toHaveLength(2) + }) }); - it('should see the value of the name_en that pass to input value', () => { + it('should see the value of the name_en that pass to input value', async () => { render( ) const name_enElement = screen.getByLabelText("نام انگلیسی") - expect(name_enElement).toHaveValue("manage_passenger_office_navgan") + await waitFor(()=>{ + expect(name_enElement).toHaveValue("manage_passenger_office_navgan") + }) }); - it('should see the value of the name_fa that pass to input value', () => { + it('should see the value of the name_fa that pass to input value', async () => { render( ) const name_enElement = screen.getByLabelText("نام فارسی") - expect(name_enElement).toHaveValue("مدیریت کارتابل رییس اداره مسافری استان") + await waitFor(()=>{ + expect(name_enElement).toHaveValue("مدیریت کارتابل رییس اداره مسافری استان") + }) }); - it('should get checked if the id exists in permission lists', () => { + it('should get checked if the id exists in permission lists', async () => { render( ) const checkboxElement = screen.getByLabelText("مدیریت کارتابل رییس اداره مسافری استان") + await waitFor(()=>{ + expect(checkboxElement).toBeChecked(); + }) - expect(checkboxElement).toBeChecked(); }); }) describe("Validation", ()=>{ diff --git a/src/components/dashboard/role-management/__test__/RoleManagementComponent.test.js b/src/components/dashboard/role-management/__test__/RoleManagementComponent.test.js index 2a50a99..a60dc01 100644 --- a/src/components/dashboard/role-management/__test__/RoleManagementComponent.test.js +++ b/src/components/dashboard/role-management/__test__/RoleManagementComponent.test.js @@ -1,53 +1,63 @@ -import {render, screen} from "@testing-library/react"; +import {render, screen, waitFor} from "@testing-library/react"; import MockAppWithProviders from "../../../../../mocks/AppWithProvider"; import RoleManagementComponent from "@/components/dashboard/role-management/RoleManagementComponent"; describe("Role Management", ()=>{ describe("Rendering", ()=>{ - it('should see id title of data table', () => { + it('should see id title of data table', async () => { render( ) const idEelement = screen.queryByText("کد یکتا") - expect(idEelement).toBeInTheDocument() + await waitFor(()=>{ + expect(idEelement).toBeInTheDocument() + }) }); - it('should see name title of data table', () => { + it('should see name title of data table', async () => { render( ) const nameEelement = screen.queryByText("نام انگلیسی") - expect(nameEelement).toBeInTheDocument() + await waitFor(()=>{ + expect(nameEelement).toBeInTheDocument() + }) }); - it('should see name_fa title of data table', () => { + it('should see name_fa title of data table', async () => { render( ) const name_faEelement = screen.queryByText("نام فارسی") - expect(name_faEelement).toBeInTheDocument() + await waitFor(()=>{ + expect(name_faEelement).toBeInTheDocument() + }) }); - it('should see created at title of data table', () => { + it('should see created at title of data table', async () => { render( ) const createdEelement = screen.queryByText("تاریخ درخواست") - expect(createdEelement).toBeInTheDocument() + await waitFor(()=>{ + expect(createdEelement).toBeInTheDocument() + }) }); - it('should see updated at title of data table', () => { + it('should see updated at title of data table', async () => { render( ) const updateEelement = screen.queryByText("تاریخ بروزرسانی") - expect(updateEelement).toBeInTheDocument() + await waitFor(()=>{ + expect(updateEelement).toBeInTheDocument() + }) }); }) }) \ No newline at end of file