CFE-3 complete Submission part of testing for CreateForm And
CreateContent component ubmission part of testing for CreateForm And CreateContent component :q
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import {GET_PROVINCE_LIST, GET_ROLE_LIST, GET_USER_ROUTE} from "@/core/data/apiRoutes";
|
||||
import {CREATE_EXPERT_MANAGEMENT, GET_PROVINCE_LIST, GET_ROLE_LIST, GET_USER_ROUTE} from "@/core/data/apiRoutes";
|
||||
import {rest} from "msw";
|
||||
|
||||
export const handler = [
|
||||
@@ -38,5 +38,10 @@ export const handler = [
|
||||
}
|
||||
]
|
||||
}))
|
||||
})
|
||||
}),
|
||||
rest.post(CREATE_EXPERT_MANAGEMENT, (req, res, ctx) => {
|
||||
return res(
|
||||
ctx.status(200),
|
||||
);
|
||||
}),
|
||||
]
|
||||
@@ -2,7 +2,18 @@ import {fireEvent, render, screen, waitFor} from "@testing-library/react";
|
||||
import React from 'react';
|
||||
import CreateContent from "../../CreateContent";
|
||||
import MockAppWithProviders from "../../../../../../../../mocks/AppWithProvider";
|
||||
import CreateForm from "@/components/dashboard/expert-management/Form/CreateForm";
|
||||
import userEvent from '@testing-library/user-event';
|
||||
|
||||
function selectDropdownItem(screen, openerTestId, itemText) {
|
||||
const opener = screen.getByTestId(openerTestId);
|
||||
fireEvent.mouseDown(opener);
|
||||
const selectItem = screen.queryByText(itemText);
|
||||
fireEvent.click(selectItem);
|
||||
}
|
||||
|
||||
function setInputValue(screen, inputElement, value) {
|
||||
fireEvent.change(inputElement, {target: {value}});
|
||||
}
|
||||
|
||||
describe("CreateContent Component From Expert Management", () => {
|
||||
describe("Rendering", () => {
|
||||
@@ -37,27 +48,19 @@ describe("CreateContent Component From Expert Management", () => {
|
||||
const nationalIdInput = screen.queryByLabelText('کد ملی');
|
||||
const passwordInput = screen.queryByLabelText('رمز عبور');
|
||||
const positionInput = screen.queryByLabelText('سمت');
|
||||
const provinceSelectOpener = screen.getByTestId("option-opener-province");
|
||||
const roleSelectOpener = screen.getByTestId("option-opener-role");
|
||||
const genderSelectOpener = screen.getByTestId("option-opener-gender");
|
||||
fireEvent.mouseDown(provinceSelectOpener);
|
||||
fireEvent.mouseDown(roleSelectOpener);
|
||||
fireEvent.mouseDown(genderSelectOpener);
|
||||
|
||||
fireEvent.change(nameInput, {target: {value: 'nameTest'}});
|
||||
fireEvent.change(usernameInput, {target: {value: 'usernameTest'}});
|
||||
fireEvent.change(emailInput, {target: {value: 'emailTest'}});
|
||||
fireEvent.change(phoneNumberInput, {target: {value: 'phoneNumberTest'}});
|
||||
fireEvent.change(telephoneIdInput, {target: {value: 'telephoneIdTest'}});
|
||||
fireEvent.change(nationalIdInput, {target: {value: 'nationalIdTest'}});
|
||||
fireEvent.change(passwordInput, {target: {value: 'passwordTest'}});
|
||||
fireEvent.change(positionInput, {target: {value: 'positionTest'}});
|
||||
const selectItemProvince = screen.queryByText("آذربایجان شرقی");
|
||||
fireEvent.click(selectItemProvince);
|
||||
const selectItemRole = screen.queryByText("ادمین");
|
||||
fireEvent.click(selectItemRole);
|
||||
const selectItemGender = screen.queryByText("مرد");
|
||||
fireEvent.click(selectItemGender);
|
||||
selectDropdownItem(screen, "option-opener-province", "آذربایجان شرقی");
|
||||
selectDropdownItem(screen, "option-opener-role", "ادمین");
|
||||
selectDropdownItem(screen, "option-opener-gender", "مرد");
|
||||
|
||||
setInputValue(screen, nameInput, 'nameTest');
|
||||
setInputValue(screen, usernameInput, 'usernameTest');
|
||||
setInputValue(screen, emailInput, 'emailTest');
|
||||
setInputValue(screen, phoneNumberInput, 'phoneNumberTest');
|
||||
setInputValue(screen, telephoneIdInput, 'telephoneIdTest');
|
||||
setInputValue(screen, nationalIdInput, 'nationalIdTest');
|
||||
setInputValue(screen, passwordInput, 'passwordTest');
|
||||
setInputValue(screen, positionInput, 'positionTest');
|
||||
|
||||
await waitFor(() => {
|
||||
expect(submitButton).not.toBeDisabled();
|
||||
|
||||
@@ -1,8 +1,19 @@
|
||||
import {act, fireEvent, render, screen} from "@testing-library/react";
|
||||
import {act, fireEvent, render, screen, waitFor} from "@testing-library/react";
|
||||
import React from 'react';
|
||||
import MockAppWithProviders from "../../../../../../../mocks/AppWithProvider";
|
||||
import CreateForm from "../../CreateForm";
|
||||
|
||||
function selectDropdownItem(screen, openerTestId, itemText) {
|
||||
const opener = screen.getByTestId(openerTestId);
|
||||
fireEvent.mouseDown(opener);
|
||||
const selectItem = screen.queryByText(itemText);
|
||||
fireEvent.click(selectItem);
|
||||
}
|
||||
|
||||
function setInputValue(screen, inputElement, value) {
|
||||
fireEvent.change(inputElement, {target: {value}});
|
||||
}
|
||||
|
||||
describe("CreateForm Component From Expert Management", () => {
|
||||
describe("Rendering", () => {
|
||||
it("Create Button Rendered", () => {
|
||||
@@ -27,4 +38,103 @@ describe("CreateForm Component From Expert Management", () => {
|
||||
});
|
||||
});
|
||||
});
|
||||
describe("Form Submission", () => {
|
||||
it('Should request to api and if get success close dialog', async () => {
|
||||
render(<MockAppWithProviders><CreateForm/></MockAppWithProviders>);
|
||||
|
||||
const CreateButton = screen.getByRole('button', {name: "افزودن کارشناس"});
|
||||
fireEvent.click(CreateButton);
|
||||
|
||||
const submitButton = screen.queryByText('ثبت');
|
||||
|
||||
const nameInput = screen.queryByLabelText('نام کامل');
|
||||
const usernameInput = screen.queryByLabelText('نام کاربری');
|
||||
const emailInput = screen.queryByLabelText('پست الکترونیک');
|
||||
const phoneNumberInput = screen.queryByLabelText('شماره همراه');
|
||||
const telephoneIdInput = screen.queryByLabelText('کد تلفن');
|
||||
const nationalIdInput = screen.queryByLabelText('کد ملی');
|
||||
const passwordInput = screen.queryByLabelText('رمز عبور');
|
||||
const positionInput = screen.queryByLabelText('سمت');
|
||||
|
||||
selectDropdownItem(screen, "option-opener-province", "آذربایجان شرقی");
|
||||
selectDropdownItem(screen, "option-opener-role", "ادمین");
|
||||
selectDropdownItem(screen, "option-opener-gender", "مرد");
|
||||
|
||||
setInputValue(screen, nameInput, 'nameTest');
|
||||
setInputValue(screen, usernameInput, 'usernameTest');
|
||||
setInputValue(screen, emailInput, 'emailTest@gmail.com');
|
||||
setInputValue(screen, phoneNumberInput, '0914577458');
|
||||
setInputValue(screen, telephoneIdInput, '091');
|
||||
setInputValue(screen, nationalIdInput, 'nationalIdTest');
|
||||
setInputValue(screen, passwordInput, 'passwordTest12');
|
||||
setInputValue(screen, positionInput, 'positionTest');
|
||||
|
||||
expect(submitButton).not.toBeDisabled();
|
||||
await fireEvent.click(submitButton);
|
||||
|
||||
await waitFor(() => {
|
||||
const dialogContent = screen.getByTestId('create-dialog-content');
|
||||
expect(dialogContent).not.toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
it('Should request to api and if get error keep previous data', async () => {
|
||||
render(<MockAppWithProviders><CreateForm/></MockAppWithProviders>);
|
||||
|
||||
const CreateButton = screen.getByRole('button', {name: "افزودن کارشناس"});
|
||||
fireEvent.click(CreateButton);
|
||||
|
||||
const submitButton = screen.queryByText('ثبت');
|
||||
|
||||
const nameInput = screen.queryByLabelText('نام کامل');
|
||||
const usernameInput = screen.queryByLabelText('نام کاربری');
|
||||
const emailInput = screen.queryByLabelText('پست الکترونیک');
|
||||
const phoneNumberInput = screen.queryByLabelText('شماره همراه');
|
||||
const telephoneIdInput = screen.queryByLabelText('کد تلفن');
|
||||
const nationalIdInput = screen.queryByLabelText('کد ملی');
|
||||
const passwordInput = screen.queryByLabelText('رمز عبور');
|
||||
const positionInput = screen.queryByLabelText('سمت');
|
||||
const provinceSelectOpener = screen.getByTestId("option-opener-province");
|
||||
const provinceInput = screen.getByTestId("input-province-id")
|
||||
const roleSelectOpener = screen.getByTestId("option-opener-role");
|
||||
const roleInput = screen.getByTestId("input-role-id")
|
||||
const genderSelectOpener = screen.getByTestId("option-opener-gender");
|
||||
const genderInput = screen.getByTestId("input-gender")
|
||||
fireEvent.mouseDown(provinceSelectOpener);
|
||||
fireEvent.mouseDown(roleSelectOpener);
|
||||
fireEvent.mouseDown(genderSelectOpener);
|
||||
|
||||
fireEvent.change(nameInput, {target: {value: 'nameTest'}});
|
||||
fireEvent.change(usernameInput, {target: {value: 'usernameTest'}});
|
||||
fireEvent.change(emailInput, {target: {value: 'emailTest'}});
|
||||
fireEvent.change(phoneNumberInput, {target: {value: 'phoneNumberTest'}});
|
||||
fireEvent.change(telephoneIdInput, {target: {value: 'telephoneIdTest'}});
|
||||
fireEvent.change(nationalIdInput, {target: {value: 'nationalIdTest'}});
|
||||
fireEvent.change(passwordInput, {target: {value: 'passwordTest'}});
|
||||
fireEvent.change(positionInput, {target: {value: 'positionTest'}});
|
||||
const selectItemProvince = screen.queryByText("آذربایجان شرقی");
|
||||
fireEvent.click(selectItemProvince);
|
||||
const selectItemRole = screen.queryByText("ادمین");
|
||||
fireEvent.click(selectItemRole);
|
||||
const selectItemGender = screen.queryByText("مرد");
|
||||
fireEvent.click(selectItemGender);
|
||||
|
||||
expect(submitButton).not.toBeDisabled();
|
||||
await fireEvent.click(submitButton);
|
||||
|
||||
await waitFor(() => {
|
||||
expect(nameInput).toHaveValue('nameTest');
|
||||
expect(usernameInput).toHaveValue('usernameTest');
|
||||
expect(emailInput).toHaveValue('emailTest');
|
||||
expect(phoneNumberInput).toHaveValue('phoneNumberTest');
|
||||
expect(telephoneIdInput).toHaveValue('telephoneIdTest');
|
||||
expect(nationalIdInput).toHaveValue('nationalIdTest');
|
||||
expect(passwordInput).toHaveValue('passwordTest');
|
||||
expect(positionInput).toHaveValue('positionTest');
|
||||
expect(provinceInput).toHaveValue('1');
|
||||
expect(roleInput).toHaveValue('1');
|
||||
expect(genderInput).toHaveValue('male');
|
||||
|
||||
});
|
||||
});
|
||||
})
|
||||
});
|
||||
@@ -26,7 +26,7 @@ const Create = ({mutate, fetchUrl}) => {
|
||||
</Button>
|
||||
</Tooltip>
|
||||
</Stack>
|
||||
<Dialog fullWidth maxWidth={'lg'} open={openCreateDialog}
|
||||
<Dialog data-testid="create-dialog-content" fullWidth maxWidth={'lg'} open={openCreateDialog}
|
||||
TransitionProps={{unmountOnExit: true}}
|
||||
PaperProps={{sx: {boxShadow: 'rgba(60, 64, 67, 0.3) 0px 1px 16px 0px, rgba(60, 64, 67, 0.15) 0px 1px 10px 0px'}}}>
|
||||
<DialogTitle>{t("ExpertMangement.create")}</DialogTitle>
|
||||
|
||||
Reference in New Issue
Block a user