mirror of
https://github.com/Foundry376/Mailspring.git
synced 2024-09-22 00:06:06 +08:00
fix(specs): Fix and update QuerySubscription specs
- Updates test scenario to test for when the new item already exists in the set with the same clientId but a new serverId
This commit is contained in:
parent
e9eb530994
commit
bce473df55
|
@ -19,7 +19,7 @@ describe "QuerySubscription", ->
|
|||
expect(QuerySubscription.prototype._refetchResultSet).toHaveBeenCalled()
|
||||
|
||||
describe "applyChangeRecord", ->
|
||||
spyOn(Utils, 'generateTempId').andCallFake => ""
|
||||
spyOn(Utils, 'generateTempId').andCallFake => undefined
|
||||
|
||||
scenarios = [{
|
||||
name: "query with full set of objects (4)"
|
||||
|
@ -28,29 +28,29 @@ describe "QuerySubscription", ->
|
|||
.limit(4)
|
||||
.offset(2)
|
||||
lastResultSet: [
|
||||
new Thread(accountId: 'a', id: '4', lastMessageReceivedTimestamp: 4)
|
||||
new Thread(accountId: 'a', id: '3', lastMessageReceivedTimestamp: 3),
|
||||
new Thread(accountId: 'a', id: '2', lastMessageReceivedTimestamp: 2),
|
||||
new Thread(accountId: 'a', id: '1', lastMessageReceivedTimestamp: 1),
|
||||
new Thread(accountId: 'a', clientId: '4', lastMessageReceivedTimestamp: 4)
|
||||
new Thread(accountId: 'a', clientId: '3', lastMessageReceivedTimestamp: 3),
|
||||
new Thread(accountId: 'a', clientId: '2', lastMessageReceivedTimestamp: 2),
|
||||
new Thread(accountId: 'a', clientId: '1', lastMessageReceivedTimestamp: 1),
|
||||
]
|
||||
tests: [{
|
||||
name: 'Item saved which belongs in the set'
|
||||
change:
|
||||
objectClass: Thread.name
|
||||
objects: [new Thread(accountId: 'a', id: '5', lastMessageReceivedTimestamp: 3.5)]
|
||||
objects: [new Thread(accountId: 'a', clientId: '5', lastMessageReceivedTimestamp: 3.5)]
|
||||
type: 'persist'
|
||||
newResultSet:[
|
||||
new Thread(accountId: 'a', id: '4', lastMessageReceivedTimestamp: 4),
|
||||
new Thread(accountId: 'a', id: '5', lastMessageReceivedTimestamp: 3.5),
|
||||
new Thread(accountId: 'a', id: '3', lastMessageReceivedTimestamp: 3),
|
||||
new Thread(accountId: 'a', id: '2', lastMessageReceivedTimestamp: 2),
|
||||
new Thread(accountId: 'a', clientId: '4', lastMessageReceivedTimestamp: 4),
|
||||
new Thread(accountId: 'a', clientId: '5', lastMessageReceivedTimestamp: 3.5),
|
||||
new Thread(accountId: 'a', clientId: '3', lastMessageReceivedTimestamp: 3),
|
||||
new Thread(accountId: 'a', clientId: '2', lastMessageReceivedTimestamp: 2),
|
||||
]
|
||||
refetchRequired: false
|
||||
},{
|
||||
name: 'Item saved which does not match query clauses'
|
||||
change:
|
||||
objectClass: Thread.name
|
||||
objects: [new Thread(accountId: 'b', id: '5', lastMessageReceivedTimestamp: 5)]
|
||||
objects: [new Thread(accountId: 'b', clientId: '5', lastMessageReceivedTimestamp: 5)]
|
||||
type: 'persist'
|
||||
newResultSet: 'unchanged'
|
||||
refetchRequired: false
|
||||
|
@ -58,7 +58,7 @@ describe "QuerySubscription", ->
|
|||
name: 'Item saved which does not lie in the range after sorting'
|
||||
change:
|
||||
objectClass: Thread.name
|
||||
objects: [new Thread(accountId: 'b', id: '5', lastMessageReceivedTimestamp: -2)]
|
||||
objects: [new Thread(accountId: 'b', clientId: '5', lastMessageReceivedTimestamp: -2)]
|
||||
type: 'persist'
|
||||
newResultSet: 'unchanged'
|
||||
refetchRequired: false
|
||||
|
@ -66,71 +66,71 @@ describe "QuerySubscription", ->
|
|||
name: 'Item in set saved'
|
||||
change:
|
||||
objectClass: Thread.name
|
||||
objects: [new Thread(accountId: 'a', id: '4', lastMessageReceivedTimestamp: 4, subject: 'hello')]
|
||||
objects: [new Thread(accountId: 'a', serverId: 's-4', clientId: '4', lastMessageReceivedTimestamp: 4, subject: 'hello')]
|
||||
type: 'persist'
|
||||
newResultSet:[
|
||||
new Thread(accountId: 'a', id: '4', lastMessageReceivedTimestamp: 4, subject: 'hello')
|
||||
new Thread(accountId: 'a', id: '3', lastMessageReceivedTimestamp: 3),
|
||||
new Thread(accountId: 'a', id: '2', lastMessageReceivedTimestamp: 2),
|
||||
new Thread(accountId: 'a', id: '1', lastMessageReceivedTimestamp: 1),
|
||||
new Thread(accountId: 'a', serverId: 's-4', clientId: '4', lastMessageReceivedTimestamp: 4, subject: 'hello')
|
||||
new Thread(accountId: 'a', clientId: '3', lastMessageReceivedTimestamp: 3),
|
||||
new Thread(accountId: 'a', clientId: '2', lastMessageReceivedTimestamp: 2),
|
||||
new Thread(accountId: 'a', clientId: '1', lastMessageReceivedTimestamp: 1),
|
||||
]
|
||||
refetchRequired: false
|
||||
},{
|
||||
name: 'Item in set saved, sort order changed (within range only)'
|
||||
change:
|
||||
objectClass: Thread.name
|
||||
objects: [new Thread(accountId: 'a', id: '3', lastMessageReceivedTimestamp: 1.5)]
|
||||
objects: [new Thread(accountId: 'a', clientId: '3', lastMessageReceivedTimestamp: 1.5)]
|
||||
type: 'persist'
|
||||
newResultSet:[
|
||||
new Thread(accountId: 'a', id: '4', lastMessageReceivedTimestamp: 4),
|
||||
new Thread(accountId: 'a', id: '2', lastMessageReceivedTimestamp: 2),
|
||||
new Thread(accountId: 'a', id: '3', lastMessageReceivedTimestamp: 1.5),
|
||||
new Thread(accountId: 'a', id: '1', lastMessageReceivedTimestamp: 1),
|
||||
new Thread(accountId: 'a', clientId: '4', lastMessageReceivedTimestamp: 4),
|
||||
new Thread(accountId: 'a', clientId: '2', lastMessageReceivedTimestamp: 2),
|
||||
new Thread(accountId: 'a', clientId: '3', lastMessageReceivedTimestamp: 1.5),
|
||||
new Thread(accountId: 'a', clientId: '1', lastMessageReceivedTimestamp: 1),
|
||||
]
|
||||
refetchRequired: false
|
||||
},{
|
||||
name: 'Item in set saved, sort order changed and sorted to edge of set (impacting last)'
|
||||
change:
|
||||
objectClass: Thread.name
|
||||
objects: [new Thread(accountId: 'a', id: '3', lastMessageReceivedTimestamp: 6)]
|
||||
objects: [new Thread(accountId: 'a', clientId: '3', lastMessageReceivedTimestamp: 6)]
|
||||
type: 'persist'
|
||||
refetchRequired: true
|
||||
},{
|
||||
name: 'Item in set saved, sort order changed and sorted to edge of set (impacting first)'
|
||||
change:
|
||||
objectClass: Thread.name
|
||||
objects: [new Thread(accountId: 'a', id: '3', lastMessageReceivedTimestamp: -1)]
|
||||
objects: [new Thread(accountId: 'a', clientId: '3', lastMessageReceivedTimestamp: -1)]
|
||||
type: 'persist'
|
||||
refetchRequired: true
|
||||
},{
|
||||
name: 'Item in set saved, no longer matches query clauses'
|
||||
change:
|
||||
objectClass: Thread.name
|
||||
objects: [new Thread(accountId: 'b', id: '4', lastMessageReceivedTimestamp: 4)]
|
||||
objects: [new Thread(accountId: 'b', clientId: '4', lastMessageReceivedTimestamp: 4)]
|
||||
type: 'persist'
|
||||
newResultSet: [
|
||||
new Thread(accountId: 'a', id: '3', lastMessageReceivedTimestamp: 3),
|
||||
new Thread(accountId: 'a', id: '2', lastMessageReceivedTimestamp: 2),
|
||||
new Thread(accountId: 'a', id: '1', lastMessageReceivedTimestamp: 1),
|
||||
new Thread(accountId: 'a', clientId: '3', lastMessageReceivedTimestamp: 3),
|
||||
new Thread(accountId: 'a', clientId: '2', lastMessageReceivedTimestamp: 2),
|
||||
new Thread(accountId: 'a', clientId: '1', lastMessageReceivedTimestamp: 1),
|
||||
]
|
||||
refetchRequired: true
|
||||
},{
|
||||
name: 'Item in set deleted'
|
||||
change:
|
||||
objectClass: Thread.name
|
||||
objects: [new Thread(accountId: 'a', id: '4')]
|
||||
objects: [new Thread(accountId: 'a', clientId: '4')]
|
||||
type: 'unpersist'
|
||||
newResultSet: [
|
||||
new Thread(accountId: 'a', id: '3', lastMessageReceivedTimestamp: 3),
|
||||
new Thread(accountId: 'a', id: '2', lastMessageReceivedTimestamp: 2),
|
||||
new Thread(accountId: 'a', id: '1', lastMessageReceivedTimestamp: 1),
|
||||
new Thread(accountId: 'a', clientId: '3', lastMessageReceivedTimestamp: 3),
|
||||
new Thread(accountId: 'a', clientId: '2', lastMessageReceivedTimestamp: 2),
|
||||
new Thread(accountId: 'a', clientId: '1', lastMessageReceivedTimestamp: 1),
|
||||
]
|
||||
refetchRequired: true
|
||||
},{
|
||||
name: 'Item not in set deleted'
|
||||
change:
|
||||
objectClass: Thread.name
|
||||
objects: [new Thread(accountId: 'a', id: '5')]
|
||||
objects: [new Thread(accountId: 'a', clientId: '5')]
|
||||
type: 'unpersist'
|
||||
newResultSet: 'unchanged'
|
||||
refetchRequired: false
|
||||
|
@ -143,30 +143,30 @@ describe "QuerySubscription", ->
|
|||
.limit(4)
|
||||
.offset(2)
|
||||
lastResultSet: [
|
||||
new Thread(accountId: 'a', id: '4', lastMessageReceivedTimestamp: 4)
|
||||
new Thread(accountId: 'a', id: '3', lastMessageReceivedTimestamp: 3),
|
||||
new Thread(accountId: 'a', id: '2', lastMessageReceivedTimestamp: 2)
|
||||
new Thread(accountId: 'a', clientId: '4', lastMessageReceivedTimestamp: 4)
|
||||
new Thread(accountId: 'a', clientId: '3', lastMessageReceivedTimestamp: 3),
|
||||
new Thread(accountId: 'a', clientId: '2', lastMessageReceivedTimestamp: 2)
|
||||
]
|
||||
tests: [{
|
||||
name: 'Item in set saved, no longer matches query clauses'
|
||||
change:
|
||||
objectClass: Thread.name
|
||||
objects: [new Thread(accountId: 'b', id: '4', lastMessageReceivedTimestamp: 4)]
|
||||
objects: [new Thread(accountId: 'b', clientId: '4', lastMessageReceivedTimestamp: 4)]
|
||||
type: 'persist'
|
||||
newResultSet: [
|
||||
new Thread(accountId: 'a', id: '3', lastMessageReceivedTimestamp: 3),
|
||||
new Thread(accountId: 'a', id: '2', lastMessageReceivedTimestamp: 2),
|
||||
new Thread(accountId: 'a', clientId: '3', lastMessageReceivedTimestamp: 3),
|
||||
new Thread(accountId: 'a', clientId: '2', lastMessageReceivedTimestamp: 2),
|
||||
]
|
||||
refetchRequired: false
|
||||
},{
|
||||
name: 'Item in set deleted'
|
||||
change:
|
||||
objectClass: Thread.name
|
||||
objects: [new Thread(accountId: 'a', id: '4')]
|
||||
objects: [new Thread(accountId: 'a', clientId: '4')]
|
||||
type: 'unpersist'
|
||||
newResultSet: [
|
||||
new Thread(accountId: 'a', id: '3', lastMessageReceivedTimestamp: 3),
|
||||
new Thread(accountId: 'a', id: '2', lastMessageReceivedTimestamp: 2),
|
||||
new Thread(accountId: 'a', clientId: '3', lastMessageReceivedTimestamp: 3),
|
||||
new Thread(accountId: 'a', clientId: '2', lastMessageReceivedTimestamp: 2),
|
||||
]
|
||||
refetchRequired: false
|
||||
}]
|
||||
|
@ -178,22 +178,22 @@ describe "QuerySubscription", ->
|
|||
.offset(2)
|
||||
.order(Thread.attributes.lastMessageReceivedTimestamp.ascending())
|
||||
lastResultSet: [
|
||||
new Thread(accountId: 'a', id: '1', lastMessageReceivedTimestamp: 1)
|
||||
new Thread(accountId: 'a', id: '2', lastMessageReceivedTimestamp: 2)
|
||||
new Thread(accountId: 'a', id: '3', lastMessageReceivedTimestamp: 3)
|
||||
new Thread(accountId: 'a', id: '4', lastMessageReceivedTimestamp: 4)
|
||||
new Thread(accountId: 'a', clientId: '1', lastMessageReceivedTimestamp: 1)
|
||||
new Thread(accountId: 'a', clientId: '2', lastMessageReceivedTimestamp: 2)
|
||||
new Thread(accountId: 'a', clientId: '3', lastMessageReceivedTimestamp: 3)
|
||||
new Thread(accountId: 'a', clientId: '4', lastMessageReceivedTimestamp: 4)
|
||||
]
|
||||
tests: [{
|
||||
name: 'Item in set saved, sort order changed'
|
||||
change:
|
||||
objectClass: Thread.name
|
||||
objects: [new Thread(accountId: 'a', id: '3', lastMessageReceivedTimestamp: 1.5)]
|
||||
objects: [new Thread(accountId: 'a', clientId: '3', lastMessageReceivedTimestamp: 1.5)]
|
||||
type: 'persist'
|
||||
newResultSet:[
|
||||
new Thread(accountId: 'a', id: '1', lastMessageReceivedTimestamp: 1)
|
||||
new Thread(accountId: 'a', id: '3', lastMessageReceivedTimestamp: 1.5)
|
||||
new Thread(accountId: 'a', id: '2', lastMessageReceivedTimestamp: 2)
|
||||
new Thread(accountId: 'a', id: '4', lastMessageReceivedTimestamp: 4)
|
||||
new Thread(accountId: 'a', clientId: '1', lastMessageReceivedTimestamp: 1)
|
||||
new Thread(accountId: 'a', clientId: '3', lastMessageReceivedTimestamp: 1.5)
|
||||
new Thread(accountId: 'a', clientId: '2', lastMessageReceivedTimestamp: 2)
|
||||
new Thread(accountId: 'a', clientId: '4', lastMessageReceivedTimestamp: 4)
|
||||
]
|
||||
refetchRequired: false
|
||||
}]
|
||||
|
@ -209,22 +209,22 @@ describe "QuerySubscription", ->
|
|||
Thread.attributes.unread.descending()
|
||||
])
|
||||
lastResultSet: [
|
||||
new Thread(accountId: 'a', id: '1', lastMessageReceivedTimestamp: 1, unread: true)
|
||||
new Thread(accountId: 'a', id: '2', lastMessageReceivedTimestamp: 1, unread: false)
|
||||
new Thread(accountId: 'a', id: '3', lastMessageReceivedTimestamp: 1, unread: false)
|
||||
new Thread(accountId: 'a', id: '4', lastMessageReceivedTimestamp: 2, unread: true)
|
||||
new Thread(accountId: 'a', clientId: '1', lastMessageReceivedTimestamp: 1, unread: true)
|
||||
new Thread(accountId: 'a', clientId: '2', lastMessageReceivedTimestamp: 1, unread: false)
|
||||
new Thread(accountId: 'a', clientId: '3', lastMessageReceivedTimestamp: 1, unread: false)
|
||||
new Thread(accountId: 'a', clientId: '4', lastMessageReceivedTimestamp: 2, unread: true)
|
||||
]
|
||||
tests: [{
|
||||
name: 'Item in set saved, secondary sort order changed'
|
||||
change:
|
||||
objectClass: Thread.name
|
||||
objects: [new Thread(accountId: 'a', id: '3', lastMessageReceivedTimestamp: 1, unread: true)]
|
||||
objects: [new Thread(accountId: 'a', clientId: '3', lastMessageReceivedTimestamp: 1, unread: true)]
|
||||
type: 'persist'
|
||||
newResultSet:[
|
||||
new Thread(accountId: 'a', id: '1', lastMessageReceivedTimestamp: 1, unread: true)
|
||||
new Thread(accountId: 'a', id: '3', lastMessageReceivedTimestamp: 1, unread: true)
|
||||
new Thread(accountId: 'a', id: '2', lastMessageReceivedTimestamp: 1, unread: false)
|
||||
new Thread(accountId: 'a', id: '4', lastMessageReceivedTimestamp: 2, unread: true)
|
||||
new Thread(accountId: 'a', clientId: '1', lastMessageReceivedTimestamp: 1, unread: true)
|
||||
new Thread(accountId: 'a', clientId: '3', lastMessageReceivedTimestamp: 1, unread: true)
|
||||
new Thread(accountId: 'a', clientId: '2', lastMessageReceivedTimestamp: 1, unread: false)
|
||||
new Thread(accountId: 'a', clientId: '4', lastMessageReceivedTimestamp: 2, unread: true)
|
||||
]
|
||||
refetchRequired: false
|
||||
}]
|
||||
|
|
Loading…
Reference in a new issue