diff --git a/models/taskRequests.js b/models/taskRequests.js index 494cac45d..ee15dbf7d 100644 --- a/models/taskRequests.js +++ b/models/taskRequests.js @@ -12,6 +12,7 @@ const { Operators } = require("../typeDefinitions/rqlParser"); const { RQLQueryParser } = require("../utils/RQLParser"); const firestore = require("../utils/firestore"); const { buildTaskRequests, generateLink, transformTaskRequests } = require("../utils/task-requests"); +const { getCurrentEpochTime } = require("../utils/time"); const taskRequestsCollection = firestore.collection("taskRequests"); const tasksModel = require("./tasks"); const userModel = require("./users"); @@ -407,6 +408,7 @@ const approveTaskRequest = async (taskRequestId, user, authorUserId) => { }; // End of TODO const updateTaskRequestPromise = transaction.update(taskRequestDocRef, updatedTaskRequest); + const currentEpochTime = getCurrentEpochTime(); const newTaskRequestData = { assignee: user.id, title: taskRequestData.taskTitle, @@ -414,6 +416,8 @@ const approveTaskRequest = async (taskRequestId, user, authorUserId) => { percentCompleted: 0, status: TASK_STATUS.ASSIGNED, priority: DEFAULT_TASK_PRIORITY, + createdAt: currentEpochTime, + updatedAt: currentEpochTime, startedOn: userRequestData.proposedStartDate / 1000, endsOn: userRequestData.proposedDeadline / 1000, github: { @@ -452,7 +456,7 @@ const approveTaskRequest = async (taskRequestId, user, authorUserId) => { } // End of TODO const updateTaskRequestPromise = transaction.update(taskRequestDocRef, updatedTaskRequest); - const updatedTaskData = { assignee: user.id, status: TASK_STATUS.ASSIGNED }; + const updatedTaskData = { assignee: user.id, status: TASK_STATUS.ASSIGNED, updatedAt: getCurrentEpochTime() }; // TODO : remove the unnecessary if-condition after the migration of the task request model. https://github.com/Real-Dev-Squad/website-backend/issues/1613 if (userRequestData) { updatedTaskData.startedOn = userRequestData.proposedStartDate / 1000; diff --git a/test/unit/models/task-requests.test.js b/test/unit/models/task-requests.test.js index 4faff43ee..5c6c582fa 100644 --- a/test/unit/models/task-requests.test.js +++ b/test/unit/models/task-requests.test.js @@ -364,6 +364,12 @@ describe("Task requests | models", function () { expect(approvedTask.exists).to.be.equal(true); expect(approvedTask.data().assignee).to.equal(user.id); expect(approvedTask.data().status).to.equal(TASK_STATUS.ASSIGNED); + expect(approvedTask.data().createdAt).to.be.a("number"); + expect(approvedTask.data().updatedAt).to.be.a("number"); + expect(approvedTask.data().createdAt).to.be.equal( + approvedTask.data().updatedAt, + "When new task is created createdAt and updatedAt both are same" + ); expect(approvedTask.data().percentCompleted).to.equal(0); expect(approvedTask.data().priority).to.equal(DEFAULT_TASK_PRIORITY); }); @@ -380,6 +386,12 @@ describe("Task requests | models", function () { expect(approvedTask.exists).to.be.equal(true); expect(approvedTask.data().assignee).to.equal(user.id); expect(approvedTask.data().status).to.equal(TASK_STATUS.ASSIGNED); + expect(approvedTask.data().createdAt).to.be.a("number"); + expect(approvedTask.data().updatedAt).to.be.a("number"); + expect(approvedTask.data().createdAt).to.be.not.equal( + approvedTask.data().updatedAt, + "When existing task is updated, updatedAt field is updated so createdAt and updatedAt are not same" + ); }); it("should handle invalid user for approval", async function () { const existingTaskRequest = { ...mockData.existingTaskRequest }; diff --git a/utils/time.js b/utils/time.js index 5910a7bdc..f2ca9a6c0 100644 --- a/utils/time.js +++ b/utils/time.js @@ -83,6 +83,14 @@ const convertTimestampToUTCStartOrEndOfDay = (timestamp, isEndOfDay = false) => return currTime.getTime(); }; +/** + * Returns Current Epoch time stamp + * @returns {EpochTimeStamp}: Current Epoch time + */ +const getCurrentEpochTime = () => { + return Math.round(Date.now() / 1000); +}; + module.exports = { convertDaysToMilliseconds, convertHoursToMilliseconds, @@ -90,5 +98,6 @@ module.exports = { getTimeInSecondAfter, getBeforeHourTime, convertTimestampToUTCStartOrEndOfDay, + getCurrentEpochTime, convertMillisToSeconds, };