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:
Juan Tejada 2015-12-22 14:30:28 -08:00
parent e9eb530994
commit bce473df55

View file

@ -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
}]