From 454f79b7f835836338d79fa811f3532557ba9c7c Mon Sep 17 00:00:00 2001 From: Uzair-Manzoor Date: Fri, 28 Jul 2023 15:50:05 +0500 Subject: [PATCH] add test file for clearAllCompleted function --- src/module/test/clearAllCompleted.test.js | 65 ++++++++++++++++++++++- 1 file changed, 64 insertions(+), 1 deletion(-) diff --git a/src/module/test/clearAllCompleted.test.js b/src/module/test/clearAllCompleted.test.js index 3396492..17fb4ad 100644 --- a/src/module/test/clearAllCompleted.test.js +++ b/src/module/test/clearAllCompleted.test.js @@ -1 +1,64 @@ -import 'jest-localstorage-mock'; \ No newline at end of file +import 'jest-localstorage-mock'; + +import clearAllCompletedTasks from '../clearTask.js'; +import { + tasks, + storeTasksToLocalStorage, + deleteTask, +} from '../taskFunctions.js'; + +// Mock the localStorage and DOM elements +jest.mock('../taskFunctions.js', () => ({ + tasks: [ + { description: 'Task 1', completed: false, index: 1 }, + { description: 'Task 2', completed: false, index: 2 }, + { description: 'Task 3', completed: false, index: 3 }, + ], + storeTasksToLocalStorage: jest.fn(), + deleteTask: jest.fn(), + addTask: jest.fn(), + sortTasks: jest.fn(), +})); + +const mockDisplayTasks = jest.fn(); + +jest.mock('../../index.js', () => ({ + displayTasks: mockDisplayTasks, +})); + +const emptyTasks = []; + +describe('clearAllCompletedTasks', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('should clear all completed tasks', () => { + clearAllCompletedTasks(tasks); + + expect(tasks.length).toBe(3); + expect(tasks[0].description).toBe('Task 1'); + expect(tasks[0].completed).toBe(false); + expect(tasks[1].description).toBe('Task 2'); + expect(tasks[1].completed).toBe(false); + expect(tasks[2].description).toBe('Task 3'); + expect(tasks[2].completed).toBe(false); + expect(storeTasksToLocalStorage).toHaveBeenCalledTimes(1); + }); + + it('should not delete not completed tasks', () => { + tasks.forEach((task) => { + task.completed = false; + }); + + clearAllCompletedTasks(tasks); + + expect(deleteTask).not.toHaveBeenCalled(); + }); + + it('should not do anything if the list is empty', () => { + clearAllCompletedTasks(emptyTasks); + + expect(emptyTasks.length).toBe(0); + }); +});