Group toV and fromV by the doc they correspond to

This commit is contained in:
James Allen
2014-03-20 13:37:23 +00:00
parent 5595910122
commit 6aaa7ba8d5
3 changed files with 66 additions and 48 deletions
@@ -480,97 +480,107 @@ describe "UpdatesManager", ->
@now = Date.now()
@user_1 = { id: "mock-user-1" }
@user_2 = { id: "mock-user-2" }
@doc_id_1 = "mock-doc-id-1"
@doc_id_2 = "mock-doc-id-2"
it "should concat updates that are close in time", ->
expect(@UpdatesManager._summarizeUpdates [{
doc_id: @doc_id_1
result = @UpdatesManager._summarizeUpdates [{
doc_id: "doc-id-1"
meta:
user: @user_1
start_ts: @now + 20
end_ts: @now + 30
v: 5
}, {
doc_id: @doc_id_1
doc_id: "doc-id-1"
meta:
user: @user_2
start_ts: @now
end_ts: @now + 10
v: 4
}]).to.deep.equal [{
doc_ids: [@doc_id_1]
}]
expect(result).to.deep.equal [{
docs:
"doc-id-1":
fromV: 4
toV: 5
meta:
users: [@user_1, @user_2]
start_ts: @now
end_ts: @now + 30
fromV: 4
toV: 5
}]
it "should leave updates that are far apart in time", ->
oneDay = 1000 * 60 * 60 * 24
expect(@UpdatesManager._summarizeUpdates [{
doc_id: @doc_id_1
result = @UpdatesManager._summarizeUpdates [{
doc_id: "doc-id-1"
meta:
user: @user_2
start_ts: @now + oneDay
end_ts: @now + oneDay + 10
v: 5
}, {
doc_id: @doc_id_1
doc_id: "doc-id-1"
meta:
user: @user_1
start_ts: @now
end_ts: @now + 10
v: 4
}]).to.deep.equal [{
doc_ids: [@doc_id_1]
}]
expect(result).to.deep.equal [{
docs:
"doc-id-1":
fromV: 5
toV: 5
meta:
users: [@user_2]
start_ts: @now + oneDay
end_ts: @now + oneDay + 10
fromV: 5
toV: 5
}, {
doc_ids: [@doc_id_1]
docs:
"doc-id-1":
fromV: 4
toV: 4
meta:
users: [@user_1]
start_ts: @now
end_ts: @now + 10
fromV: 4
toV: 4
}]
it "should concat onto existing summarized updates", ->
expect(@UpdatesManager._summarizeUpdates [{
doc_id: @doc_id_2
result = @UpdatesManager._summarizeUpdates [{
doc_id: "doc-id-2"
meta:
user: @user_1
start_ts: @now + 20
end_ts: @now + 30
v: 5
}, {
doc_id: @doc_id_2
doc_id: "doc-id-2"
meta:
user: @user_2
start_ts: @now
end_ts: @now + 10
v: 4
}], [{
doc_ids: [@doc_id_1]
docs:
"doc-id-1":
fromV: 6
toV: 8
meta:
users: [@user_1]
start_ts: @now + 40
end_ts: @now + 50
fromV: 6
toV: 8
}]).to.deep.equal [{
doc_ids: [@doc_id_1, @doc_id_2]
}]
expect(result).to.deep.equal [{
docs:
"doc-id-1":
toV: 8
fromV: 6
"doc-id-2":
toV: 5
fromV: 4
meta:
users: [@user_1, @user_2]
start_ts: @now
end_ts: @now + 50
fromV: 4
toV: 8
}]