From 2f3b115ec2f6dab5c1314825400fd5f0394f0481 Mon Sep 17 00:00:00 2001
From: Shema
Date: Mon, 21 Oct 2024 16:08:07 +0200
Subject: [PATCH] Added BulkRatingModal
---
package-lock.json | 61 +
package.json | 1 +
src/Mutations/Ratings.tsx | 52 +
src/Mutations/teamMutation.tsx | 12 +
src/components/BulkRatingModal.tsx | 230 ++
src/pages/AdminTraineeDashboard.tsx | 23 +-
src/pages/ttlTraineeDashboard.tsx | 20 +
tests/components/BulkRatingModal.test.tsx | 248 ++
.../AdminTraineeDashboard.test.tsx.snap | 109 +-
.../__snapshots__/DashHeader.test.tsx.snap | 2 +-
.../__snapshots__/Header.test.tsx.snap | 126 +-
.../__snapshots__/Cohorts.test.tsx.snap | 154 +-
tests/pages/__snapshots__/About.test.tsx.snap | 29 +-
.../AdminTraineeDashboard.test.tsx.snap | 109 +-
.../__snapshots__/Admindash.test.tsx.snap | 154 +-
.../__snapshots__/GradingSystem.test.tsx.snap | 186 +-
.../pages/__snapshots__/Profile.test.tsx.snap | 3346 +++++++++++++++--
.../TraineeRatingDashboard.test.tsx.snap | 170 +-
.../UpdateTraineeRating.test.tsx.snap | 186 +-
.../__snapshots__/userRegister.test.tsx.snap | 2 +-
20 files changed, 4302 insertions(+), 918 deletions(-)
create mode 100644 src/components/BulkRatingModal.tsx
create mode 100644 tests/components/BulkRatingModal.test.tsx
diff --git a/package-lock.json b/package-lock.json
index c765241cf..f80ca6197 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -91,6 +91,7 @@
"url-polyfill": "^1.1.12",
"vite": "^5.4.7",
"vite-tsconfig-paths": "^5.0.1",
+ "xlsx": "^0.18.5",
"zod": "^3.23.8"
},
"devDependencies": {
@@ -23326,6 +23327,15 @@
"node": ">=0.8"
}
},
+ "node_modules/word": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz",
+ "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
"node_modules/word-wrap": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
@@ -23503,6 +23513,57 @@
}
}
},
+ "node_modules/xlsx": {
+ "version": "0.18.5",
+ "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz",
+ "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "adler-32": "~1.3.0",
+ "cfb": "~1.2.1",
+ "codepage": "~1.15.0",
+ "crc-32": "~1.2.1",
+ "ssf": "~0.11.2",
+ "wmf": "~1.0.1",
+ "word": "~0.3.0"
+ },
+ "bin": {
+ "xlsx": "bin/xlsx.njs"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/xlsx/node_modules/adler-32": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz",
+ "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/xlsx/node_modules/codepage": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz",
+ "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/xlsx/node_modules/ssf": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz",
+ "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "frac": "~1.1.2"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
"node_modules/xml-name-validator": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz",
diff --git a/package.json b/package.json
index 39a90777c..e626b14c4 100644
--- a/package.json
+++ b/package.json
@@ -113,6 +113,7 @@
"url-polyfill": "^1.1.12",
"vite": "^5.4.7",
"vite-tsconfig-paths": "^5.0.1",
+ "xlsx": "^0.18.5",
"zod": "^3.23.8"
},
"devDependencies": {
diff --git a/src/Mutations/Ratings.tsx b/src/Mutations/Ratings.tsx
index 78168db19..2474c5257 100644
--- a/src/Mutations/Ratings.tsx
+++ b/src/Mutations/Ratings.tsx
@@ -179,3 +179,55 @@ export const REJECT_RATING = gql`
rejectRating(user: $user, sprint: $sprint)
}
`;
+
+export const GET_RATINGS_BY_USER_COHORT = gql`
+ query getRatingsByUserCohort($orgToken: String!){
+ getRatingsByUserCohort(orgToken: $orgToken){
+ id
+ sprint
+ }
+}
+`
+
+export const ADD_RATINGS_BY_FILE = gql`
+ mutation addRatingsByFile($file: Upload!, $sprint: Int!, $orgToken: String!){
+ addRatingsByFile(file: $file, sprint: $sprint orgToken: $orgToken){
+ NewRatings {
+ user {
+ email
+ }
+ sprint
+ phase
+ quality
+ quantity
+ professional_Skills
+ feedbacks {
+ sender {
+ email
+ }
+ content
+ createdAt
+ }
+ cohort {
+ name
+ }
+ }
+ RejectedRatings{
+ email
+ quantity
+ quality
+ professional_skills
+ feedBacks
+ }
+ UpdatedRatings {
+ quantity
+ quality
+ professional_Skills
+ feedbacks {
+ content
+ }
+ oldFeedback
+ }
+ }
+ }
+`
diff --git a/src/Mutations/teamMutation.tsx b/src/Mutations/teamMutation.tsx
index db368f2ff..7f7de1094 100644
--- a/src/Mutations/teamMutation.tsx
+++ b/src/Mutations/teamMutation.tsx
@@ -53,3 +53,15 @@ export const DeleteTeam = gql`
}
`;
+export const GET_TEAMS_BY_USER_ROLE = gql`
+ query getTeamsByUserRole($orgToken: String!) {
+ getTeamsByUserRole(orgToken: $orgToken){
+ id
+ name
+ members {
+ email
+ role
+ }
+ }
+ }
+`
diff --git a/src/components/BulkRatingModal.tsx b/src/components/BulkRatingModal.tsx
new file mode 100644
index 000000000..541b42d99
--- /dev/null
+++ b/src/components/BulkRatingModal.tsx
@@ -0,0 +1,230 @@
+import { useLazyQuery, useMutation } from "@apollo/client"
+import React, { useEffect, useState } from "react"
+import { useTranslation } from "react-i18next"
+import * as XLSX from "xlsx"
+import { ADD_RATINGS_BY_FILE, GET_RATINGS_BY_USER_COHORT } from "../Mutations/Ratings"
+import { toast } from "react-toastify"
+import { GET_TEAMS_BY_USER_ROLE } from "../Mutations/teamMutation"
+
+type BulkRatingModalProps = {
+ bulkRateModal: boolean,
+ setBulkRateModal: React.Dispatch>
+}
+
+type AddRatingsByFileFormData = {
+ sprint: string,
+ file: File | null,
+}
+
+const BulkRatingModal = ({ bulkRateModal, setBulkRateModal }: BulkRatingModalProps) => {
+ const { t } = useTranslation()
+ const [getRatingsByUserCohort, { data: ratings, loading: loadingRatings, error: ratingsError }] = useLazyQuery(GET_RATINGS_BY_USER_COHORT, {
+ variables: {
+ orgToken: localStorage.getItem('orgToken')
+ },
+ fetchPolicy: 'network-only',
+ })
+ const [getTeamsByUserRole, {data: teams, loading: loadingTeams, error: teamsError}] = useLazyQuery(GET_TEAMS_BY_USER_ROLE, {
+ variables: {
+ orgToken: localStorage.getItem('orgToken')
+ },
+ fetchPolicy: 'network-only',
+ })
+ const [addRatingsByFile, { data: bulkRatings, loading: loadingBulkRatings, error: bulkRatingsError }] = useMutation(ADD_RATINGS_BY_FILE)
+ const [formData, setFormData] = useState({
+ sprint: '',
+ file: null
+ })
+ const [selectedTeam, setSelectedTeam] = useState('')
+
+ const saveRatings = async (e: React.FormEvent) => {
+ try {
+ e.preventDefault()
+ if(!formData.sprint) throw new Error("Please select a sprint")
+ if(!formData.file) throw new Error("Please select a file")
+ await addRatingsByFile({
+ variables: {
+ file: formData.file,
+ sprint: parseInt(formData.sprint),
+ orgToken: localStorage.getItem('orgToken')
+ },
+ })
+ getRatingsByUserCohort()
+ toast.success("Rating completed successfully")
+ } catch (err: any) {
+ toast.error(err?.message)
+ }
+ }
+
+ const downloadTeamFile = async(e: any)=>{
+ try{
+ if(selectedTeam === '') throw new Error("No Team was selected")
+ const team = teams.getTeamsByUserRole.find((team:any)=>team.id === selectedTeam)
+ const rows: any = []
+ team.members.forEach((member: any) => {
+ console.log(member)
+ if (member.role === "trainee") {
+ rows.push({
+ email: member.email,
+ quantity: '',
+ quality: '',
+ professional_skills: '',
+ feedBacks: ''
+ })
+ }
+ })
+ const workSheet = rows.length ? XLSX.utils.json_to_sheet(rows) : XLSX.utils.json_to_sheet([{
+ email: '',
+ quantity: '',
+ quality: '',
+ professional_skills:'',
+ feedBacks: ''
+ }])
+ const workBook = XLSX.utils.book_new()
+ workSheet["!cols"] = [ { wch: 20 } ]
+ XLSX.utils.book_append_sheet(workBook, workSheet,"ratings")
+ XLSX.writeFile(workBook, `${team.name.replace(' ','')}_Ratings.xlsx`)
+ }catch(err: any){
+ toast.error(err?.message)
+ }
+ }
+
+ useEffect(() => {
+ getRatingsByUserCohort()
+ getTeamsByUserRole()
+ }, [])
+
+ return (
+
+
+
+
+ {t('Bulk Rating')}
+
+
+
+
+
+
+ )
+}
+
+export default BulkRatingModal
\ No newline at end of file
diff --git a/src/pages/AdminTraineeDashboard.tsx b/src/pages/AdminTraineeDashboard.tsx
index b6aa471ca..86bb2d1b2 100644
--- a/src/pages/AdminTraineeDashboard.tsx
+++ b/src/pages/AdminTraineeDashboard.tsx
@@ -42,6 +42,7 @@ import Dropdown from 'react-dropdown-select';
import ViewWeeklyRatings from '../components/ratings/ViewWeeklyRatings';
import { FaTimes } from 'react-icons/fa';
import TtlSkeleton from '../Skeletons/ttl.skeleton';
+import BulkRatingModal from '../components/BulkRatingModal';
const organizationToken = localStorage.getItem('orgToken');
function AdminTraineeDashboard() {
@@ -92,6 +93,9 @@ function AdminTraineeDashboard() {
// restoreMemberFromCohort
const [selectedTraineeId, setSelectedTraineeId] = useState();
+ //BulkRatingModal
+ const [bulkRateModal, setBulkRateModal] = useState(false)
+
useEffect(() => {
const handleClickOutside = (event: any) => {
if (modalRef.current && !modalRef.current.contains(event.target)) {
@@ -1585,7 +1589,12 @@ function AdminTraineeDashboard() {
{/* =========================== End:: RemoveTraineeModel =============================== */}
-
+ {/*============================ Start:: BulkRateModal =================================== */}
+
+ {/*============================ End:: BulkRateModal =================================== */}
@@ -1602,6 +1611,18 @@ function AdminTraineeDashboard() {
>
{t('add')} +{' '}
+ {
+ JSON.parse(localStorage.getItem('auth')!) && ['coordinator','ttl'].includes(JSON.parse(localStorage.getItem('auth')!).role) ?
+ setBulkRateModal(true)}
+ >
+ {t('Bulk Rate')}
+ : ''
+ }
diff --git a/src/pages/ttlTraineeDashboard.tsx b/src/pages/ttlTraineeDashboard.tsx
index 1c026a1b9..a0cdd31e0 100644
--- a/src/pages/ttlTraineeDashboard.tsx
+++ b/src/pages/ttlTraineeDashboard.tsx
@@ -26,6 +26,7 @@ import { useTraineesContext } from '../hook/useTraineesData';
import { XIcon } from '@heroicons/react/solid';
import { FaTimes } from 'react-icons/fa';
import { log } from 'console';
+import BulkRatingModal from '../components/BulkRatingModal';
const organizationToken = localStorage.getItem('orgToken');
``;
/* istanbul ignore next */
@@ -58,6 +59,7 @@ const TtlTraineeDashboard = () => {
const [open2, setOpen2] = React.useState(false);
const [selectedTraineeId, setSelectedTraineeId] = useState
()
+ const [bulkRateModal, setBulkRateModal] = useState(false)
const handleClickOpen2 = async () => {
setIsLoaded(true);
@@ -417,6 +419,17 @@ const TtlTraineeDashboard = () => {
+
+ setBulkRateModal(true)}
+ >
+ {t('Bulk Rate')}
+
+
{fetchError || traineeData?.length === 0 ? ( // Check both fetchError and traineeData length
{
)}
+ {
+ bulkRateModal?
+
: ''
+ }
diff --git a/tests/components/BulkRatingModal.test.tsx b/tests/components/BulkRatingModal.test.tsx
new file mode 100644
index 000000000..292a370e7
--- /dev/null
+++ b/tests/components/BulkRatingModal.test.tsx
@@ -0,0 +1,248 @@
+import React from "react"
+import "@testing-library/jest-dom"
+import { MockedProvider, MockedResponse } from "@apollo/client/testing"
+import { render, fireEvent, screen, cleanup, waitFor } from "@testing-library/react"
+import BulkRatingModal from "../../src/components/BulkRatingModal"
+import { ADD_RATINGS_BY_FILE, GET_RATINGS_BY_USER_COHORT } from "../../src/Mutations/Ratings"
+import { GET_TEAMS_BY_USER_ROLE } from "../../src/Mutations/teamMutation"
+import { toast } from "react-toastify"
+import * as XLSX from "xlsx"
+
+const mockRatingsFile: File = new File(["Test"], "testRatings.xlsx", {type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"})
+
+const getRatingsByUserCohort: MockedResponse = {
+ request:{
+ query: GET_RATINGS_BY_USER_COHORT,
+ variables: {
+ orgToken: 'mocked_org_token'
+ }
+ },
+ result:{
+ data: {
+ getRatingsByUserCohort: [
+ {
+ id: "1",
+ sprint: 1,
+ },
+ {
+ id: "2",
+ sprint: 2,
+ }
+ ]
+ }
+ }
+}
+
+const getTeamsByUserRole = {
+ request: {
+ query: GET_TEAMS_BY_USER_ROLE,
+ variables: {
+ orgToken: "mocked_org_token"
+ }
+ },
+ result:{
+ data: {
+ getTeamsByUserRole: [
+ {
+ id: "1",
+ name: "Team I",
+ members:[
+ {
+ email: "test@gmail.com",
+ role: "trainee"
+ },
+ {
+ email: "test2@gmail.com",
+ role: "ttl"
+ },
+ {
+ email: "test3@gmail.com",
+ role: "trainee"
+ },
+ ]
+ },
+ {
+ id: "2",
+ name: "Team II",
+ members:[
+ {
+ email: "test4@gmail.com",
+ role: "trainee"
+ },
+ {
+ email: "test5@gmail.com",
+ role: "ttl"
+ },
+ {
+ email: "test6@gmail.com",
+ role: "trainee"
+ },
+ ]
+ }
+ ]
+ }
+ }
+}
+
+const addRatingsByFile: MockedResponse = {
+ request:{
+ query: ADD_RATINGS_BY_FILE,
+ variables: {
+ file: mockRatingsFile,
+ sprint: 1,
+ orgToken: "mocked_org_token"
+ }
+ },
+ result:{
+ data:{
+ addRatingsByFile: {
+ NewRatings: {
+ user: {
+ email: "test@gmail.com"
+ },
+ sprint: 1,
+ phase: "Phase I",
+ quality: 1,
+ quantity: 1,
+ professional_Skills: 1,
+ feedbacks: {
+ sender: {
+ email: "testing@gmail.com"
+ },
+ content: "ok",
+ createdAt: "2024-10-30T00:00:00:000z"
+ },
+ cohort: {
+ name: "Cohort 1"
+ },
+ },
+ RejectedRatings:{
+ email: "rejectedemail@gmail.com",
+ quantity: 1,
+ quality: 1,
+ professional_skills: 1,
+ feedBacks: "ok",
+ },
+ UpdatedRatings: {
+ quantity: 1,
+ quality: 1,
+ professional_Skills: 1,
+ feedbacks: {
+ content: "Average"
+ },
+ oldFeedback: ["ok"],
+ }
+ }
+ }
+ }
+}
+
+jest.mock('react-toastify', () => ({
+ toast: {
+ success: jest.fn(),
+ error: jest.fn(),
+ }
+}))
+
+jest.mock('xlsx')
+
+beforeEach(() => {
+ localStorage.setItem('auth_token', 'mocked_auth_token')
+ localStorage.setItem('orgToken', 'mocked_org_token')
+ localStorage.setItem('auth', JSON.stringify({
+ auth: true,
+ email: "testing@gmail.com",
+ firstName: "Jack",
+ role: "coordinator",
+ userId: "1"
+ }))
+})
+
+afterEach(() => {
+ localStorage.clear()
+ cleanup()
+})
+
+describe("BulkRatingModal", () => {
+ const setBulkRateModel = jest.fn()
+
+ it("displays all sprints", async() => {
+ render(
+
+
+
+ )
+ await waitFor(()=>{
+ expect(screen.getByTestId("sprint-option-1")).toBeInTheDocument()
+ expect(screen.getByTestId("sprint-option-2")).toBeInTheDocument()
+ })
+ })
+ it("displays teams", async() => {
+ render(
+
+
+
+ )
+ await waitFor(()=>{
+ expect(screen.getByTestId("team-option-1")).toBeInTheDocument()
+ expect(screen.getByTestId("team-option-2")).toBeInTheDocument()
+ })
+ })
+
+ it("bulk rates successfully", async() => {
+ render(
+
+
+
+ )
+ const bulkRatingForm = screen.getByTestId("bulk-rating-form")
+ const sprintInput = screen.getByTestId("select-sprint")
+ const fileInput = screen.getByTestId("file-input")
+ await waitFor(()=>{
+ fireEvent.change(sprintInput, {
+ target: {
+ value: "1"
+ }
+ })
+ fireEvent.change(fileInput, {
+ target: {
+ files: [mockRatingsFile]
+ }
+ })
+ fireEvent.submit(bulkRatingForm)
+ expect(toast.success).toHaveBeenCalledWith("Rating completed successfully")
+ })
+ })
+
+ it("downloads team rating templates successfully", async() => {
+ render(
+
+
+
+ )
+ const teamInput = screen.getByTestId("select-team")
+ const downloadButton = screen.getByTestId("download-button")
+ await waitFor(()=>{
+ fireEvent.change(teamInput, {
+ target: {
+ value: "1"
+ }
+ })
+ fireEvent.click(downloadButton)
+ expect(XLSX.utils.json_to_sheet).toHaveBeenCalled()
+ expect(XLSX.utils.book_new).toHaveBeenCalled()
+ })
+ })
+})
\ No newline at end of file
diff --git a/tests/components/__snapshots__/AdminTraineeDashboard.test.tsx.snap b/tests/components/__snapshots__/AdminTraineeDashboard.test.tsx.snap
index 36f807f1b..3f083b9b3 100644
--- a/tests/components/__snapshots__/AdminTraineeDashboard.test.tsx.snap
+++ b/tests/components/__snapshots__/AdminTraineeDashboard.test.tsx.snap
@@ -463,7 +463,7 @@ Array [
name="date"
readOnly={true}
type="text"
- value="2024-10-06"
+ value="2024-10-30"
/>
,
+
+
+
+
+ Bulk Rating
+
+
+
+
+
+
,
@@ -955,15 +1053,6 @@ Array [
+
-
- Invite
-
@@ -272,7 +277,7 @@ exports[`Header Tests Should render the header with home 1`] = `
exports[`Header Tests Should render the header with no active 1`] = `
@@ -541,7 +551,7 @@ exports[`Header Tests Should render the header with no active 1`] = `
exports[`Header Tests Should render the header with no active 2`] = `
@@ -781,7 +796,7 @@ exports[`Header Tests Should render the header with no active 2`] = `
exports[`Header Tests Should render the header with no active 3`] = `
@@ -1051,7 +1071,7 @@ exports[`Header Tests Should render the header with no active 3`] = `
exports[`Header Tests Should render the header with pricing active 1`] = `
@@ -1321,7 +1346,7 @@ exports[`Header Tests Should render the header with pricing active 1`] = `
exports[`Header Tests Should render the header with product active 1`] = `
diff --git a/tests/containers/admin-dashboard/__snapshots__/Cohorts.test.tsx.snap b/tests/containers/admin-dashboard/__snapshots__/Cohorts.test.tsx.snap
index 2843aa57f..d496ad235 100644
--- a/tests/containers/admin-dashboard/__snapshots__/Cohorts.test.tsx.snap
+++ b/tests/containers/admin-dashboard/__snapshots__/Cohorts.test.tsx.snap
@@ -1026,14 +1026,14 @@ Array [
colSpan={6}
>
diff --git a/tests/pages/__snapshots__/About.test.tsx.snap b/tests/pages/__snapshots__/About.test.tsx.snap
index 539be8335..7df40910f 100644
--- a/tests/pages/__snapshots__/About.test.tsx.snap
+++ b/tests/pages/__snapshots__/About.test.tsx.snap
@@ -170,7 +170,6 @@ exports[`About page renders the about page 1`] = `
>
Come shape the future together
-
- I'm extremely impressed with Pulse and their performance management platform.
- Since using their services, it has been a game-changer for our organization.
- The platform is intuitive, easy to navigate, and packed with powerful features.
+ Content1
- I'm delighted to share my positive experience with Pulse and their exceptional
- performance management platform. Implementing their services has led to remarkable
- improvements in our performance tracking and management processes.
+ Content2
-
- We are thrilled with the services provided by Pulse. Their performance management platform
- has exceeded our expectations in every way. The user-friendly interface and comprehensive
- features have made tracking and monitoring our performance metrics a breeze.
-
+ Content3
- I'm extremely impressed with Pulse and their performance management platform.
- Since using their services, it has been a game-changer for our organization.
- The platform is intuitive, easy to navigate, and packed with powerful features.
+ Content1
- I'm delighted to share my positive experience with Pulse and their exceptional
- performance management platform. Implementing their services has led to remarkable
- improvements in our performance tracking and management processes.
+ Content2
-
- We are thrilled with the services provided by Pulse. Their performance management platform
- has exceeded our expectations in every way. The user-friendly interface and comprehensive
- features have made tracking and monitoring our performance metrics a breeze.
-
+ Content3
diff --git a/tests/pages/__snapshots__/AdminTraineeDashboard.test.tsx.snap b/tests/pages/__snapshots__/AdminTraineeDashboard.test.tsx.snap
index cdb28ed1f..4b29c187c 100644
--- a/tests/pages/__snapshots__/AdminTraineeDashboard.test.tsx.snap
+++ b/tests/pages/__snapshots__/AdminTraineeDashboard.test.tsx.snap
@@ -463,7 +463,7 @@ Array [
name="date"
readOnly={true}
type="text"
- value="2024-10-06"
+ value="2024-10-30"
/>
,
+
+
+
+
+ Bulk Rating
+
+
+
+
+
+
,
@@ -955,15 +1053,6 @@ Array [
+
-
- Invite
-
diff --git a/tests/pages/__snapshots__/GradingSystem.test.tsx.snap b/tests/pages/__snapshots__/GradingSystem.test.tsx.snap
index ce701c773..6dc4578ab 100644
--- a/tests/pages/__snapshots__/GradingSystem.test.tsx.snap
+++ b/tests/pages/__snapshots__/GradingSystem.test.tsx.snap
@@ -369,7 +369,7 @@ Array [
className="max-w-full"
>
-
-
-
-
-
-
-
-
-
-
-
- No records available
-
-
-
-
+ No records available
+
-
@@ -504,14 +484,14 @@ Array [
colSpan={3}
>
diff --git a/tests/pages/__snapshots__/Profile.test.tsx.snap b/tests/pages/__snapshots__/Profile.test.tsx.snap
index 50a62de3d..da0515bac 100644
--- a/tests/pages/__snapshots__/Profile.test.tsx.snap
+++ b/tests/pages/__snapshots__/Profile.test.tsx.snap
@@ -165,16 +165,17 @@ Object {
>
- First Name
+ Email
-
- ~
- Update Profile
-
-
-
-
-
-