Skip to content

Commit 2e73cbe

Browse files
Joan Reyerojoanagmaia
andauthored
Keep old timestamp when upserting activities (#144)
Co-authored-by: Joana Maia <joana@crowd.dev>
1 parent 8026736 commit 2e73cbe

2 files changed

Lines changed: 41 additions & 1 deletion

File tree

backend/src/services/__tests__/activityService.test.ts

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -457,6 +457,43 @@ describe('ActivityService tests', () => {
457457
expect(activityCreated7.conversationId).toStrictEqual(conversationCreated2.id)
458458
})
459459

460+
it('Should keep old timestamp', async () => {
461+
const mockIRepositoryOptions = await SequelizeTestUtils.getTestIRepositoryOptions(db)
462+
const memberService = new MemberService(mockIRepositoryOptions)
463+
const activityService = new ActivityService(mockIRepositoryOptions)
464+
465+
const cm = await memberService.upsert({
466+
username: {
467+
[PlatformType.DISCORD]: 'test',
468+
},
469+
platform: PlatformType.DISCORD,
470+
})
471+
472+
const activity1 = {
473+
type: 'message',
474+
timestamp: '2020-05-27T15:13:30Z',
475+
member: cm.id,
476+
platform: PlatformType.DISCORD,
477+
sourceId: 'sourceId#1',
478+
}
479+
480+
const activityCreated1 = await activityService.upsert(activity1)
481+
482+
const activity2 = {
483+
type: 'message',
484+
timestamp: '2022-05-27T15:13:30Z',
485+
member: cm.id,
486+
platform: PlatformType.DISCORD,
487+
sourceId: 'sourceId#1',
488+
body: 'What is love?',
489+
}
490+
491+
const activityCreated2 = await activityService.upsert(activity2)
492+
493+
expect(activityCreated2.timestamp).toStrictEqual(activityCreated1.timestamp)
494+
expect(activityCreated2.body).toBe(activity2.body)
495+
})
496+
460497
it('Should create various conversations successfully with given parent-child relationships of activities [descending timestamp order]', async () => {
461498
const mockIRepositoryOptions = await SequelizeTestUtils.getTestIRepositoryOptions(db)
462499
const memberService = new MemberService(mockIRepositoryOptions)

backend/src/services/activityService.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,10 @@ export default class ActivityService {
7171
if (existing) {
7272
const { id } = existing
7373
delete existing.id
74-
const toUpdate = merge(existing, data)
74+
const toUpdate = merge(existing, data, {
75+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
76+
timestamp: (oldValue, _newValue) => oldValue,
77+
})
7578
record = await ActivityRepository.update(id, toUpdate, {
7679
...this.options,
7780
transaction,

0 commit comments

Comments
 (0)