Skip to content

Commit

Permalink
Fix/add created at updated at in task request task creation (Real-Dev…
Browse files Browse the repository at this point in the history
…-Squad#1771)

* feat: add function to get epoch time

* feat: add createdAt and updatedAt

* test: update unit test to check createdAt and updatedAT
  • Loading branch information
prakashchoudhary07 authored Dec 19, 2023
1 parent 569588a commit 2414251
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 1 deletion.
6 changes: 5 additions & 1 deletion models/taskRequests.js
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand Down Expand Up @@ -407,13 +408,16 @@ 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,
type: TASK_TYPE.FEATURE,
percentCompleted: 0,
status: TASK_STATUS.ASSIGNED,
priority: DEFAULT_TASK_PRIORITY,
createdAt: currentEpochTime,
updatedAt: currentEpochTime,
startedOn: userRequestData.proposedStartDate / 1000,
endsOn: userRequestData.proposedDeadline / 1000,
github: {
Expand Down Expand Up @@ -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;
Expand Down
12 changes: 12 additions & 0 deletions test/unit/models/task-requests.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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);
});
Expand All @@ -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 };
Expand Down
9 changes: 9 additions & 0 deletions utils/time.js
Original file line number Diff line number Diff line change
Expand Up @@ -83,12 +83,21 @@ 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,
convertMinutesToMilliseconds,
getTimeInSecondAfter,
getBeforeHourTime,
convertTimestampToUTCStartOrEndOfDay,
getCurrentEpochTime,
convertMillisToSeconds,
};

0 comments on commit 2414251

Please sign in to comment.