mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-11-14 22:23:42 +01:00
Merge pull request #34714 from overleaf/mj-tracked-change-merges
[overleaf-editor-core+ranges-tracker] Pick lower timestamp when merging tracking info GitOrigin-RevId: 5b1c8d7c719003df4506014c381f2a525d0a7ff4
This commit is contained in:
committed by
Copybot
parent
7ee385fe45
commit
ef05288f81
@@ -222,4 +222,114 @@ describe('RangesTracker', function () {
|
||||
)
|
||||
})
|
||||
})
|
||||
|
||||
describe('merging tracked inserts from the same user', function () {
|
||||
beforeEach(function () {
|
||||
this.comments = []
|
||||
})
|
||||
|
||||
it('keeps the earlier timestamp when the existing insert is older', function () {
|
||||
this.rangesTracker = new RangesTracker(
|
||||
[
|
||||
{
|
||||
id: 'id1',
|
||||
op: { p: 10, i: 'foo' },
|
||||
metadata: { user_id: 'user-1', ts: '2024-01-01T00:00:00.000Z' },
|
||||
},
|
||||
],
|
||||
this.comments
|
||||
)
|
||||
this.rangesTracker.track_changes = true
|
||||
this.rangesTracker.applyOp(
|
||||
{ p: 13, i: 'bar' },
|
||||
{ user_id: 'user-1', ts: new Date('2024-06-01T00:00:00.000Z') }
|
||||
)
|
||||
expect(this.rangesTracker.changes).to.have.length(1)
|
||||
const [change] = this.rangesTracker.changes
|
||||
expect(change.op).to.deep.equal({ p: 10, i: 'foobar' })
|
||||
expect(change.metadata.user_id).to.equal('user-1')
|
||||
expect(new Date(change.metadata.ts).toISOString()).to.equal(
|
||||
'2024-01-01T00:00:00.000Z'
|
||||
)
|
||||
})
|
||||
|
||||
it('keeps the earlier timestamp when the incoming insert is older', function () {
|
||||
this.rangesTracker = new RangesTracker(
|
||||
[
|
||||
{
|
||||
id: 'id1',
|
||||
op: { p: 10, i: 'foo' },
|
||||
metadata: { user_id: 'user-1', ts: '2024-06-01T00:00:00.000Z' },
|
||||
},
|
||||
],
|
||||
this.comments
|
||||
)
|
||||
this.rangesTracker.track_changes = true
|
||||
this.rangesTracker.applyOp(
|
||||
{ p: 13, i: 'bar' },
|
||||
{ user_id: 'user-1', ts: new Date('2024-01-01T00:00:00.000Z') }
|
||||
)
|
||||
expect(this.rangesTracker.changes).to.have.length(1)
|
||||
const [change] = this.rangesTracker.changes
|
||||
expect(change.op).to.deep.equal({ p: 10, i: 'foobar' })
|
||||
expect(change.metadata.user_id).to.equal('user-1')
|
||||
expect(new Date(change.metadata.ts).toISOString()).to.equal(
|
||||
'2024-01-01T00:00:00.000Z'
|
||||
)
|
||||
})
|
||||
|
||||
it('uses the defined timestamp when the existing insert has a null timestamp', function () {
|
||||
this.rangesTracker = new RangesTracker(
|
||||
[
|
||||
{
|
||||
id: 'id1',
|
||||
op: { p: 10, i: 'foo' },
|
||||
metadata: { user_id: 'user-1', ts: null },
|
||||
},
|
||||
],
|
||||
this.comments
|
||||
)
|
||||
this.rangesTracker.track_changes = true
|
||||
this.rangesTracker.applyOp(
|
||||
{ p: 13, i: 'bar' },
|
||||
{ user_id: 'user-1', ts: new Date('2024-01-01T00:00:00.000Z') }
|
||||
)
|
||||
expect(this.rangesTracker.changes).to.have.length(1)
|
||||
const [change] = this.rangesTracker.changes
|
||||
expect(new Date(change.metadata.ts).toISOString()).to.equal(
|
||||
'2024-01-01T00:00:00.000Z'
|
||||
)
|
||||
})
|
||||
|
||||
it('keeps the earlier timestamp when re-merging inserts after a deletion', function () {
|
||||
this.rangesTracker = new RangesTracker(
|
||||
[
|
||||
{
|
||||
id: 'id1',
|
||||
op: { p: 10, i: 'aaa' },
|
||||
metadata: { user_id: 'user-1', ts: '2024-03-01T00:00:00.000Z' },
|
||||
},
|
||||
{
|
||||
id: 'id2',
|
||||
op: { p: 13, i: 'bb' },
|
||||
metadata: { user_id: 'user-2', ts: '2024-02-01T00:00:00.000Z' },
|
||||
},
|
||||
{
|
||||
id: 'id3',
|
||||
op: { p: 15, i: 'ccc' },
|
||||
metadata: { user_id: 'user-1', ts: '2024-01-01T00:00:00.000Z' },
|
||||
},
|
||||
],
|
||||
this.comments
|
||||
)
|
||||
this.rangesTracker.applyOp({ p: 13, d: 'bb' })
|
||||
expect(this.rangesTracker.changes).to.have.length(1)
|
||||
const [change] = this.rangesTracker.changes
|
||||
expect(change.op).to.deep.equal({ p: 10, i: 'aaaccc' })
|
||||
expect(change.metadata.user_id).to.equal('user-1')
|
||||
expect(new Date(change.metadata.ts).toISOString()).to.equal(
|
||||
'2024-01-01T00:00:00.000Z'
|
||||
)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user