Skip to content

Commit dd309a5

Browse files
committed
feat(events): update bulkToggleEventMark to return updatedEventIds
1 parent 0593ed3 commit dd309a5

4 files changed

Lines changed: 20 additions & 4 deletions

File tree

src/models/eventsFactory.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -934,7 +934,7 @@ class EventsFactory extends Factory {
934934
*
935935
* @param {string[]} eventIds - original event ids
936936
* @param {string} mark - 'resolved' | 'ignored' | 'starred'
937-
* @returns {Promise<{ updatedCount: number, failedEventIds: string[] }>}
937+
* @returns {Promise<{ updatedCount: number, updatedEventIds: string[], failedEventIds: string[] }>}
938938
*/
939939
async bulkToggleEventMark(eventIds, mark) {
940940
if (mark !== 'resolved' && mark !== 'ignored' && mark !== 'starred') {
@@ -962,6 +962,7 @@ class EventsFactory extends Factory {
962962
if (validObjectIds.length === 0) {
963963
return {
964964
updatedCount: 0,
965+
updatedEventIds: [],
965966
failedEventIds,
966967
};
967968
}
@@ -982,6 +983,7 @@ class EventsFactory extends Factory {
982983
const markKey = `marks.${mark}`;
983984
const allHaveMark = found.length > 0 && found.every(doc => doc.marks && doc.marks[mark]);
984985
const ops = [];
986+
const updatedEventIds = [];
985987

986988
for (const doc of found) {
987989
const hasMark = doc.marks && doc.marks[mark];
@@ -1001,11 +1003,13 @@ class EventsFactory extends Factory {
10011003
update,
10021004
},
10031005
});
1006+
updatedEventIds.push(doc._id.toString());
10041007
}
10051008

10061009
if (ops.length === 0) {
10071010
return {
10081011
updatedCount: 0,
1012+
updatedEventIds: [],
10091013
failedEventIds,
10101014
};
10111015
}
@@ -1014,6 +1018,7 @@ class EventsFactory extends Factory {
10141018

10151019
return {
10161020
updatedCount: bulkResult.modifiedCount + bulkResult.upsertedCount,
1021+
updatedEventIds,
10171022
failedEventIds,
10181023
};
10191024
}

src/typeDefs/event.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -461,6 +461,11 @@ type BulkToggleEventMarksResult {
461461
"""
462462
updatedCount: Int!
463463
464+
"""
465+
Original event ids actually toggled in this operation
466+
"""
467+
updatedEventIds: [ID!]!
468+
464469
"""
465470
Event ids that were not updated (invalid id or not found)
466471
"""

test/models/eventsFactory-bulk-toggle.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ describe('EventsFactory.bulkToggleEventMark', () => {
7878
const result = await factory.bulkToggleEventMark([ id.toString() ], 'starred');
7979

8080
expect(result.updatedCount).toBe(1);
81+
expect(result.updatedEventIds).toEqual([ id.toString() ]);
8182
const ops = collectionMock.bulkWrite.mock.calls[0][0];
8283

8384
expect(ops).toHaveLength(1);
@@ -130,6 +131,7 @@ describe('EventsFactory.bulkToggleEventMark', () => {
130131
const result = await factory.bulkToggleEventMark([ 'not-a-valid-id' ], 'resolved');
131132

132133
expect(result.updatedCount).toBe(0);
134+
expect(result.updatedEventIds).toEqual([]);
133135
expect(result.failedEventIds).toContain('not-a-valid-id');
134136
expect(collectionMock.bulkWrite).not.toHaveBeenCalled();
135137
});
@@ -145,6 +147,7 @@ describe('EventsFactory.bulkToggleEventMark', () => {
145147
const result = await factory.bulkToggleEventMark([ missing.toString() ], 'ignored');
146148

147149
expect(result.updatedCount).toBe(0);
150+
expect(result.updatedEventIds).toEqual([]);
148151
expect(result.failedEventIds).toContain(missing.toString());
149152
expect(collectionMock.bulkWrite).not.toHaveBeenCalled();
150153
});
@@ -169,6 +172,7 @@ describe('EventsFactory.bulkToggleEventMark', () => {
169172
const result = await factory.bulkToggleEventMark([ a.toString(), b.toString() ], 'ignored');
170173

171174
expect(result.updatedCount).toBe(1);
175+
expect(result.updatedEventIds).toEqual([ b.toString() ]);
172176
const ops = collectionMock.bulkWrite.mock.calls[0][0];
173177

174178
expect(ops).toHaveLength(1);
@@ -200,6 +204,7 @@ describe('EventsFactory.bulkToggleEventMark', () => {
200204
const result = await factory.bulkToggleEventMark([ a.toString(), b.toString() ], 'resolved');
201205

202206
expect(result.updatedCount).toBe(2);
207+
expect(result.updatedEventIds).toEqual([ a.toString(), b.toString() ]);
203208
const ops = collectionMock.bulkWrite.mock.calls[0][0];
204209

205210
expect(ops).toHaveLength(2);
@@ -227,6 +232,7 @@ describe('EventsFactory.bulkToggleEventMark', () => {
227232
const result = await factory.bulkToggleEventMark([ a.toString(), b.toString() ], 'ignored');
228233

229234
expect(result.updatedCount).toBe(1);
235+
expect(result.updatedEventIds).toEqual([ b.toString() ]);
230236
const ops = collectionMock.bulkWrite.mock.calls[0][0];
231237

232238
expect(ops).toHaveLength(1);

test/resolvers/event-bulk-toggle-marks.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ const eventResolvers = require('../../src/resolvers/event') as {
1515
o: unknown,
1616
args: { projectId: string; eventIds: string[]; mark: string },
1717
ctx: unknown
18-
) => Promise<{ updatedCount: number; failedEventIds: string[] }>;
18+
) => Promise<{ updatedCount: number; updatedEventIds: string[]; failedEventIds: string[] }>;
1919
};
2020
};
2121

@@ -62,7 +62,7 @@ describe('Mutation.bulkToggleEventMarks', () => {
6262
});
6363

6464
it('should call factory with original event ids and return its result', async () => {
65-
const payload = { updatedCount: 2, failedEventIds: [ 'x' ] };
65+
const payload = { updatedCount: 2, updatedEventIds: [ 'a', 'b' ], failedEventIds: [ 'x' ] };
6666

6767
bulkToggleEventMark.mockResolvedValue(payload);
6868

@@ -85,7 +85,7 @@ describe('Mutation.bulkToggleEventMarks', () => {
8585
});
8686

8787
it('should allow starred mark for bulk toggle', async () => {
88-
const payload = { updatedCount: 1, failedEventIds: [] };
88+
const payload = { updatedCount: 1, updatedEventIds: [ '507f1f77bcf86cd799439011' ], failedEventIds: [] };
8989

9090
bulkToggleEventMark.mockResolvedValue(payload);
9191

0 commit comments

Comments
 (0)