Skip to content

Commit dbe8e3c

Browse files
✨ feat(dates): update modules to use custom dayjs module (#1029)
* ✨ feat(dates): update modules to use custom dayjs module * ✨ feat(dates): use supplied end param in computeSomedayEventsRequestFilter
1 parent 56857f4 commit dbe8e3c

File tree

62 files changed

+211
-235
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+211
-235
lines changed

packages/backend/src/event/services/event.delete.test.ts

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
import dayjs from "dayjs";
2-
import { Collection, ObjectId } from "mongodb";
1+
import { ObjectId } from "mongodb";
32
import {
43
mockSomedayRecurrences,
54
newsletterId,
5+
userId,
66
} from "@core/__mocks__/v1/events/events.someday.recur";
7+
import { Origin, Priorities } from "@core/constants/core.constants";
78
import { YEAR_MONTH_DAY_FORMAT } from "@core/constants/date.constants";
8-
import { Schema_Event } from "@core/types/event.types";
9+
import dayjs from "@core/util/date/dayjs";
910
import {
1011
cleanupTestDb,
1112
setupTestDb,
@@ -14,17 +15,16 @@ import mongoService from "@backend/common/services/mongo.service";
1415
import { getDeleteByIdFilter } from "@backend/event/services/event.service.util";
1516

1617
describe("Delete Events", () => {
17-
let eventCollection: Collection<Schema_Event>;
18-
19-
beforeAll(async () => {
20-
await setupTestDb();
21-
22-
eventCollection = mongoService.db.collection("event.delete.test");
23-
});
18+
beforeAll(setupTestDb);
2419

2520
beforeEach(async () => {
26-
await eventCollection.deleteMany({});
27-
await eventCollection.insertMany([...mockSomedayRecurrences]);
21+
await mongoService.event.deleteMany({});
22+
await mongoService.event.insertMany(
23+
mockSomedayRecurrences.map((event) => ({
24+
...event,
25+
_id: new ObjectId(event._id),
26+
})),
27+
);
2828
});
2929

3030
afterAll(cleanupTestDb);
@@ -35,17 +35,19 @@ describe("Delete Events", () => {
3535
const instanceId = new ObjectId();
3636

3737
const filter = getDeleteByIdFilter({
38-
_id: instanceId,
39-
user: "user1",
38+
_id: instanceId.toString(),
39+
user: userId,
4040
recurrence: { rule: ["foo"], eventId: newsletterId },
4141
startDate: today.format(YEAR_MONTH_DAY_FORMAT),
4242
endDate: today.add(6, "days").format(YEAR_MONTH_DAY_FORMAT),
43+
origin: Origin.COMPASS,
44+
priority: Priorities.SELF,
4345
});
4446

45-
const { deletedCount } = await eventCollection.deleteMany(filter);
47+
const { deletedCount } = await mongoService.event.deleteMany(filter);
4648
expect(deletedCount).not.toBe(0);
4749

48-
const _events = await eventCollection.find({ user: "user1" }).toArray();
50+
const _events = await mongoService.event.find({ user: userId }).toArray();
4951
const events = _events.map((e) => e.title);
5052

5153
expect(events.includes("Send Newsletter | Base | Past")).toBe(true);

packages/backend/src/event/services/event.service.util.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Filter, ObjectId } from "mongodb";
1+
import { Filter, ObjectId, WithId } from "mongodb";
22
import {
33
Query_Event,
44
Schema_Event,
@@ -7,11 +7,10 @@ import {
77
import { isSameMonth } from "@core/util/date/date.util";
88
import { GenericError } from "@backend/common/errors/generic/generic.errors";
99
import { error } from "@backend/common/errors/handlers/error.handler";
10-
import mongoService from "@backend/common/services/mongo.service";
1110

1211
export const getDeleteByIdFilter = (
1312
event: Schema_Event_Core,
14-
): Parameters<typeof mongoService.event.find>[0] => {
13+
): Filter<WithId<Omit<Schema_Event, "_id">>> => {
1514
if (!event._id) {
1615
throw error(
1716
GenericError.BadRequest,

packages/backend/src/event/services/recur/recur.week.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import dayjs from "dayjs";
1+
import { RRULE } from "@core/constants/core.constants";
22
import { Schema_Event_Core } from "@core/types/event.types";
3-
import { RRULE } from "../../../../../core/src/constants/core.constants";
3+
import dayjs from "@core/util/date/dayjs";
44
import { areDatesUnique, haveSharedValues } from "./recur.test.util";
55
import { assembleInstances } from "./util/recur.util";
66

packages/backend/src/sync/services/import/sync.import.util.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
1-
import dayjs from "dayjs";
21
import { ObjectId } from "mongodb";
32
import { gcalEvents } from "@core/__mocks__/v1/events/gcal/gcal.event";
43
import { Event_Core } from "@core/types/event.types";
4+
import { gSchema$Event } from "@core/types/gcal";
5+
import dayjs from "@core/util/date/dayjs";
56
import {
67
createMockBaseEvent,
78
createMockInstance,
89
} from "@core/util/test/ccal.event.factory";
910
import { generateGcalId } from "@backend/__tests__/mocks.gcal/factories/gcal.event.factory";
1011
import { cancelledEventsIds } from "@backend/common/services/gcal/gcal.utils";
11-
import { syncExpired, syncExpiresSoon } from "@backend/sync/util/sync.util";
12-
import { gSchema$Event } from "../../../../../core/src/types/gcal";
1312
import {
1413
assignIdsToEvents,
1514
organizeGcalEventsByType,
16-
} from "./sync.import.util";
15+
} from "@backend/sync/services/import/sync.import.util";
16+
import { syncExpired, syncExpiresSoon } from "@backend/sync/util/sync.util";
1717

1818
describe("categorizeGcalEvents", () => {
1919
const { toDelete, toUpdate } = organizeGcalEventsByType(gcalEvents.items);

packages/backend/src/sync/services/log/sync.logger.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import dayjs from "dayjs";
21
import fs from "fs";
32
import path from "path";
43
import { Schema_Event_Core } from "@core/types/event.types";
54
import { gSchema$Event } from "@core/types/gcal";
5+
import dayjs from "@core/util/date/dayjs";
66

77
interface SyncLogData {
88
updatedEvents: gSchema$Event[];

packages/backend/src/sync/services/maintain/sync.maintenance.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
1-
import dayjs from "dayjs";
21
import { Logger } from "@core/logger/winston.logger";
32
import {
43
Payload_Sync_Events,
54
Payload_Sync_Refresh,
65
Result_Watch_Stop,
76
Schema_Sync,
87
} from "@core/types/sync.types";
8+
import dayjs from "@core/util/date/dayjs";
99
import compassAuthService from "@backend/auth/services/compass.auth.service";
1010
import { getGcalClient } from "@backend/auth/services/google.auth.service";
1111
import {
1212
isFullSyncRequired,
1313
isInvalidGoogleToken,
1414
} from "@backend/common/services/gcal/gcal.utils";
1515
import mongoService from "@backend/common/services/mongo.service";
16+
import syncService from "@backend/sync/services/sync.service";
1617
import {
1718
getSync,
1819
hasUpdatedCompassEventRecently,
@@ -23,7 +24,6 @@ import {
2324
syncExpiresSoon,
2425
} from "@backend/sync/util/sync.util";
2526
import userService from "@backend/user/services/user.service";
26-
import syncService from "../sync.service";
2727

2828
const logger = Logger("app:sync.maintenance");
2929

packages/backend/src/sync/services/sync/__tests__/gcal.sync.processor.test.util.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import dayjs from "dayjs";
2-
import timezone from "dayjs/plugin/timezone";
31
import { Filter, ObjectId, WithId } from "mongodb";
42
import {
53
Event_Core,
@@ -9,6 +7,7 @@ import {
97
} from "@core/types/event.types";
108
import { gSchema$EventBase, gSchema$EventInstance } from "@core/types/gcal";
119
import { Schema_User } from "@core/types/user.types";
10+
import dayjs from "@core/util/date/dayjs";
1211
import {
1312
categorizeEvents,
1413
isBase,
@@ -21,8 +20,6 @@ import { mockRecurringGcalInstances } from "@backend/__tests__/mocks.gcal/factor
2120
import { Event_API } from "@backend/common/types/backend.event.types";
2221
import { validateEventSafely } from "@backend/common/validators/validate.event";
2322

24-
dayjs.extend(timezone);
25-
2623
/** Utility assertions for the gcal sync processor tests */
2724
export const baseHasRecurrenceRule = async (
2825
events: Event_Core[],

packages/core/src/__mocks__/v1/events/events.someday.recur.ts

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
import dayjs from "dayjs";
1+
import { ObjectId } from "bson";
22
import { YEAR_MONTH_DAY_FORMAT } from "@core/constants/date.constants";
33
import { Schema_Event } from "@core/types/event.types";
4+
import dayjs from "@core/util/date/dayjs";
45

5-
const userId = "user1";
6-
export const newsletterId = "64c266a87866ebd0a2bda49b";
7-
const walkDogId = "77c777a87866ebd0a2bda49b";
6+
export const userId = new ObjectId().toString();
7+
export const newsletterId = new ObjectId().toString();
8+
const walkDogId = new ObjectId().toString();
89

910
const today = dayjs();
1011

@@ -18,7 +19,7 @@ export const newsletterRecurrences: Schema_Event[] = [
1819
endDate: today.add(-13, "days").format(YEAR_MONTH_DAY_FORMAT),
1920
},
2021
{
21-
_id: "instance1",
22+
_id: new ObjectId().toString(),
2223
user: userId,
2324
title: "Send Newsletter | Instance | Past",
2425
isSomeday: true,
@@ -30,7 +31,7 @@ export const newsletterRecurrences: Schema_Event[] = [
3031
},
3132
},
3233
{
33-
_id: "instance2a",
34+
_id: new ObjectId().toString(),
3435
user: userId,
3536
title: "Send Newsletter | Instance2 | Starts Today",
3637
isSomeday: true,
@@ -42,7 +43,7 @@ export const newsletterRecurrences: Schema_Event[] = [
4243
},
4344
},
4445
{
45-
_id: "instance2b",
46+
_id: new ObjectId().toString(),
4647
user: userId,
4748
title: "Send Newsletter | Instance2 | Ends Today",
4849
isSomeday: true,
@@ -54,7 +55,7 @@ export const newsletterRecurrences: Schema_Event[] = [
5455
},
5556
},
5657
{
57-
_id: "instance3",
58+
_id: new ObjectId().toString(),
5859
user: userId,
5960
title: "Send Newsletter | Instance3 | Future1",
6061
isSomeday: true,
@@ -66,7 +67,7 @@ export const newsletterRecurrences: Schema_Event[] = [
6667
},
6768
},
6869
{
69-
_id: "instance4",
70+
_id: new ObjectId().toString(),
7071
user: userId,
7172
title: "Send Newsletter | Instance4 | Future2",
7273
isSomeday: true,
@@ -89,7 +90,7 @@ const walkDogRecurrences: Schema_Event[] = [
8990
endDate: today.add(-13, "days").format(YEAR_MONTH_DAY_FORMAT),
9091
},
9192
{
92-
_id: "walkdog-instance1",
93+
_id: new ObjectId().toString(),
9394
user: userId,
9495
title: "Send Newsletter | Instance | Past",
9596
isSomeday: true,

packages/core/src/util/date/date.util.ts

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,5 @@
1-
import dayjs from "dayjs";
2-
import customParseFormat from "dayjs/plugin/customParseFormat";
3-
import utc from "dayjs/plugin/utc";
4-
import weekOfYear from "dayjs/plugin/weekOfYear";
51
import { YEAR_MONTH_DAY_FORMAT } from "@core/constants/date.constants";
6-
7-
dayjs.extend(utc);
8-
dayjs.extend(weekOfYear);
9-
dayjs.extend(customParseFormat); // for RFC formatting
2+
import dayjs from "@core/util/date/dayjs";
103

114
export const FORMAT = {
125
RFC5545: {

packages/scripts/src/commands/seed.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import axios from "axios";
2-
import dayjs from "dayjs";
32
import pkg from "inquirer";
43
import { ObjectId } from "mongodb";
54
import { getApiBaseUrl, log } from "@scripts/common/cli.utils";
65
import { Schema_Event } from "@core/types/event.types";
6+
import dayjs from "@core/util/date/dayjs";
77
import { createMockStandaloneEvent } from "@core/util/test/ccal.event.factory";
88
import compassAuthService from "@backend/auth/services/compass.auth.service";
99
import mongoService from "@backend/common/services/mongo.service";

0 commit comments

Comments
 (0)