mirror of
https://github.com/firebase/firebase-ios-sdk
synced 2026-11-11 22:55:59 +05:45
859 lines
17 KiB
JSON
859 lines
17 KiB
JSON
{
|
|
"Local mutations are persisted and re-sent": {
|
|
"describeName": "Persistence:",
|
|
"itName": "Local mutations are persisted and re-sent",
|
|
"tags": [
|
|
"persistence"
|
|
],
|
|
"config": {
|
|
"useGarbageCollection": true
|
|
},
|
|
"steps": [
|
|
{
|
|
"userSet": [
|
|
"collection/key1",
|
|
{
|
|
"foo": "bar"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"userSet": [
|
|
"collection/key2",
|
|
{
|
|
"baz": "quu"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"restart": true,
|
|
"stateExpect": {
|
|
"activeTargets": {},
|
|
"limboDocs": [],
|
|
"numOutstandingWrites": 2
|
|
}
|
|
},
|
|
{
|
|
"writeAck": {
|
|
"version": 1,
|
|
"expectUserCallback": false
|
|
}
|
|
},
|
|
{
|
|
"writeAck": {
|
|
"version": 2,
|
|
"expectUserCallback": false
|
|
},
|
|
"stateExpect": {
|
|
"numOutstandingWrites": 0
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"Persisted local mutations are visible to listeners": {
|
|
"describeName": "Persistence:",
|
|
"itName": "Persisted local mutations are visible to listeners",
|
|
"tags": [
|
|
"persistence"
|
|
],
|
|
"config": {
|
|
"useGarbageCollection": true
|
|
},
|
|
"steps": [
|
|
{
|
|
"userSet": [
|
|
"collection/key1",
|
|
{
|
|
"foo": "bar"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"userSet": [
|
|
"collection/key2",
|
|
{
|
|
"baz": "quu"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"restart": true,
|
|
"stateExpect": {
|
|
"activeTargets": {},
|
|
"limboDocs": []
|
|
}
|
|
},
|
|
{
|
|
"userListen": [
|
|
2,
|
|
{
|
|
"path": "collection",
|
|
"filters": [],
|
|
"orderBys": []
|
|
}
|
|
],
|
|
"stateExpect": {
|
|
"activeTargets": {
|
|
"2": {
|
|
"query": {
|
|
"path": "collection",
|
|
"filters": [],
|
|
"orderBys": []
|
|
},
|
|
"resumeToken": ""
|
|
}
|
|
}
|
|
},
|
|
"expect": [
|
|
{
|
|
"query": {
|
|
"path": "collection",
|
|
"filters": [],
|
|
"orderBys": []
|
|
},
|
|
"added": [
|
|
[
|
|
"collection/key1",
|
|
0,
|
|
{
|
|
"foo": "bar"
|
|
},
|
|
"local"
|
|
],
|
|
[
|
|
"collection/key2",
|
|
0,
|
|
{
|
|
"baz": "quu"
|
|
},
|
|
"local"
|
|
]
|
|
],
|
|
"errorCode": 0,
|
|
"fromCache": true,
|
|
"hasPendingWrites": true
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"Remote documents are persisted": {
|
|
"describeName": "Persistence:",
|
|
"itName": "Remote documents are persisted",
|
|
"tags": [
|
|
"persistence"
|
|
],
|
|
"config": {
|
|
"useGarbageCollection": true
|
|
},
|
|
"steps": [
|
|
{
|
|
"userListen": [
|
|
2,
|
|
{
|
|
"path": "collection",
|
|
"filters": [],
|
|
"orderBys": []
|
|
}
|
|
],
|
|
"stateExpect": {
|
|
"activeTargets": {
|
|
"2": {
|
|
"query": {
|
|
"path": "collection",
|
|
"filters": [],
|
|
"orderBys": []
|
|
},
|
|
"resumeToken": ""
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"watchAck": [
|
|
2
|
|
]
|
|
},
|
|
{
|
|
"watchEntity": {
|
|
"docs": [
|
|
[
|
|
"collection/key",
|
|
1000,
|
|
{
|
|
"foo": "bar"
|
|
}
|
|
]
|
|
],
|
|
"targets": [
|
|
2
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"watchCurrent": [
|
|
[
|
|
2
|
|
],
|
|
"resume-token-1000"
|
|
],
|
|
"watchSnapshot": 1000,
|
|
"expect": [
|
|
{
|
|
"query": {
|
|
"path": "collection",
|
|
"filters": [],
|
|
"orderBys": []
|
|
},
|
|
"added": [
|
|
[
|
|
"collection/key",
|
|
1000,
|
|
{
|
|
"foo": "bar"
|
|
}
|
|
]
|
|
],
|
|
"errorCode": 0,
|
|
"fromCache": false,
|
|
"hasPendingWrites": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"restart": true,
|
|
"stateExpect": {
|
|
"activeTargets": {},
|
|
"limboDocs": []
|
|
}
|
|
},
|
|
{
|
|
"userListen": [
|
|
2,
|
|
{
|
|
"path": "collection",
|
|
"filters": [],
|
|
"orderBys": []
|
|
}
|
|
],
|
|
"stateExpect": {
|
|
"activeTargets": {
|
|
"2": {
|
|
"query": {
|
|
"path": "collection",
|
|
"filters": [],
|
|
"orderBys": []
|
|
},
|
|
"resumeToken": "resume-token-1000"
|
|
}
|
|
}
|
|
},
|
|
"expect": [
|
|
{
|
|
"query": {
|
|
"path": "collection",
|
|
"filters": [],
|
|
"orderBys": []
|
|
},
|
|
"added": [
|
|
[
|
|
"collection/key",
|
|
1000,
|
|
{
|
|
"foo": "bar"
|
|
}
|
|
]
|
|
],
|
|
"errorCode": 0,
|
|
"fromCache": true,
|
|
"hasPendingWrites": false
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"Remote documents from watch are not GC'd": {
|
|
"describeName": "Persistence:",
|
|
"itName": "Remote documents from watch are not GC'd",
|
|
"tags": [
|
|
"persistence"
|
|
],
|
|
"config": {
|
|
"useGarbageCollection": false
|
|
},
|
|
"steps": [
|
|
{
|
|
"userListen": [
|
|
2,
|
|
{
|
|
"path": "collection",
|
|
"filters": [],
|
|
"orderBys": []
|
|
}
|
|
],
|
|
"stateExpect": {
|
|
"activeTargets": {
|
|
"2": {
|
|
"query": {
|
|
"path": "collection",
|
|
"filters": [],
|
|
"orderBys": []
|
|
},
|
|
"resumeToken": ""
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"watchAck": [
|
|
2
|
|
]
|
|
},
|
|
{
|
|
"watchEntity": {
|
|
"docs": [
|
|
[
|
|
"collection/key",
|
|
1000,
|
|
{
|
|
"foo": "bar"
|
|
}
|
|
]
|
|
],
|
|
"targets": [
|
|
2
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"watchCurrent": [
|
|
[
|
|
2
|
|
],
|
|
"resume-token-1000"
|
|
],
|
|
"watchSnapshot": 1000,
|
|
"expect": [
|
|
{
|
|
"query": {
|
|
"path": "collection",
|
|
"filters": [],
|
|
"orderBys": []
|
|
},
|
|
"added": [
|
|
[
|
|
"collection/key",
|
|
1000,
|
|
{
|
|
"foo": "bar"
|
|
}
|
|
]
|
|
],
|
|
"errorCode": 0,
|
|
"fromCache": false,
|
|
"hasPendingWrites": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"userUnlisten": [
|
|
2,
|
|
{
|
|
"path": "collection",
|
|
"filters": [],
|
|
"orderBys": []
|
|
}
|
|
],
|
|
"stateExpect": {
|
|
"activeTargets": {}
|
|
}
|
|
},
|
|
{
|
|
"userListen": [
|
|
2,
|
|
{
|
|
"path": "collection",
|
|
"filters": [],
|
|
"orderBys": []
|
|
}
|
|
],
|
|
"stateExpect": {
|
|
"activeTargets": {
|
|
"2": {
|
|
"query": {
|
|
"path": "collection",
|
|
"filters": [],
|
|
"orderBys": []
|
|
},
|
|
"resumeToken": "resume-token-1000"
|
|
}
|
|
}
|
|
},
|
|
"expect": [
|
|
{
|
|
"query": {
|
|
"path": "collection",
|
|
"filters": [],
|
|
"orderBys": []
|
|
},
|
|
"added": [
|
|
[
|
|
"collection/key",
|
|
1000,
|
|
{
|
|
"foo": "bar"
|
|
}
|
|
]
|
|
],
|
|
"errorCode": 0,
|
|
"fromCache": true,
|
|
"hasPendingWrites": false
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"Remote documents from user sets are not GC'd": {
|
|
"describeName": "Persistence:",
|
|
"itName": "Remote documents from user sets are not GC'd",
|
|
"tags": [
|
|
"persistence"
|
|
],
|
|
"config": {
|
|
"useGarbageCollection": false
|
|
},
|
|
"steps": [
|
|
{
|
|
"userSet": [
|
|
"collection/key",
|
|
{
|
|
"foo": "bar"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"writeAck": {
|
|
"version": 1000,
|
|
"expectUserCallback": true
|
|
}
|
|
},
|
|
{
|
|
"userListen": [
|
|
2,
|
|
{
|
|
"path": "collection",
|
|
"filters": [],
|
|
"orderBys": []
|
|
}
|
|
],
|
|
"stateExpect": {
|
|
"activeTargets": {
|
|
"2": {
|
|
"query": {
|
|
"path": "collection",
|
|
"filters": [],
|
|
"orderBys": []
|
|
},
|
|
"resumeToken": ""
|
|
}
|
|
}
|
|
},
|
|
"expect": [
|
|
{
|
|
"query": {
|
|
"path": "collection",
|
|
"filters": [],
|
|
"orderBys": []
|
|
},
|
|
"added": [
|
|
[
|
|
"collection/key",
|
|
0,
|
|
{
|
|
"foo": "bar"
|
|
}
|
|
]
|
|
],
|
|
"errorCode": 0,
|
|
"fromCache": true,
|
|
"hasPendingWrites": false
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"Mutation Queue is persisted across uid switches": {
|
|
"describeName": "Persistence:",
|
|
"itName": "Mutation Queue is persisted across uid switches",
|
|
"tags": [
|
|
"persistence"
|
|
],
|
|
"config": {
|
|
"useGarbageCollection": true
|
|
},
|
|
"steps": [
|
|
{
|
|
"userSet": [
|
|
"users/anon",
|
|
{
|
|
"uid": "anon"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"changeUser": "user1",
|
|
"stateExpect": {
|
|
"numOutstandingWrites": 0
|
|
}
|
|
},
|
|
{
|
|
"userSet": [
|
|
"users/user1",
|
|
{
|
|
"uid": "user1"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"userSet": [
|
|
"users/user1",
|
|
{
|
|
"uid": "user1",
|
|
"extra": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"changeUser": null,
|
|
"stateExpect": {
|
|
"numOutstandingWrites": 1
|
|
}
|
|
},
|
|
{
|
|
"writeAck": {
|
|
"version": 1000,
|
|
"expectUserCallback": true
|
|
}
|
|
},
|
|
{
|
|
"changeUser": "user1",
|
|
"stateExpect": {
|
|
"numOutstandingWrites": 2
|
|
}
|
|
},
|
|
{
|
|
"writeAck": {
|
|
"version": 2000,
|
|
"expectUserCallback": true
|
|
}
|
|
},
|
|
{
|
|
"writeAck": {
|
|
"version": 3000,
|
|
"expectUserCallback": true
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"Mutation Queue is persisted across uid switches (with restarts)": {
|
|
"describeName": "Persistence:",
|
|
"itName": "Mutation Queue is persisted across uid switches (with restarts)",
|
|
"tags": [
|
|
"persistence"
|
|
],
|
|
"config": {
|
|
"useGarbageCollection": true
|
|
},
|
|
"steps": [
|
|
{
|
|
"userSet": [
|
|
"users/anon",
|
|
{
|
|
"uid": "anon"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"changeUser": "user1",
|
|
"stateExpect": {
|
|
"numOutstandingWrites": 0
|
|
}
|
|
},
|
|
{
|
|
"userSet": [
|
|
"users/user1",
|
|
{
|
|
"uid": "user1"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"userSet": [
|
|
"users/user1",
|
|
{
|
|
"uid": "user1",
|
|
"extra": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"changeUser": null
|
|
},
|
|
{
|
|
"restart": true,
|
|
"stateExpect": {
|
|
"activeTargets": {},
|
|
"limboDocs": [],
|
|
"numOutstandingWrites": 1
|
|
}
|
|
},
|
|
{
|
|
"writeAck": {
|
|
"version": 1000,
|
|
"expectUserCallback": false
|
|
}
|
|
},
|
|
{
|
|
"changeUser": "user1"
|
|
},
|
|
{
|
|
"restart": true,
|
|
"stateExpect": {
|
|
"activeTargets": {},
|
|
"limboDocs": [],
|
|
"numOutstandingWrites": 2
|
|
}
|
|
},
|
|
{
|
|
"writeAck": {
|
|
"version": 2000,
|
|
"expectUserCallback": false
|
|
}
|
|
},
|
|
{
|
|
"writeAck": {
|
|
"version": 3000,
|
|
"expectUserCallback": false
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"Visible mutations reflect uid switches": {
|
|
"describeName": "Persistence:",
|
|
"itName": "Visible mutations reflect uid switches",
|
|
"tags": [
|
|
"persistence"
|
|
],
|
|
"config": {
|
|
"useGarbageCollection": true
|
|
},
|
|
"steps": [
|
|
{
|
|
"userListen": [
|
|
2,
|
|
{
|
|
"path": "users",
|
|
"filters": [],
|
|
"orderBys": []
|
|
}
|
|
],
|
|
"stateExpect": {
|
|
"activeTargets": {
|
|
"2": {
|
|
"query": {
|
|
"path": "users",
|
|
"filters": [],
|
|
"orderBys": []
|
|
},
|
|
"resumeToken": ""
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"watchAck": [
|
|
2
|
|
]
|
|
},
|
|
{
|
|
"watchEntity": {
|
|
"docs": [
|
|
[
|
|
"users/existing",
|
|
0,
|
|
{
|
|
"uid": "existing"
|
|
}
|
|
]
|
|
],
|
|
"targets": [
|
|
2
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"watchCurrent": [
|
|
[
|
|
2
|
|
],
|
|
"resume-token-500"
|
|
],
|
|
"watchSnapshot": 500,
|
|
"expect": [
|
|
{
|
|
"query": {
|
|
"path": "users",
|
|
"filters": [],
|
|
"orderBys": []
|
|
},
|
|
"added": [
|
|
[
|
|
"users/existing",
|
|
0,
|
|
{
|
|
"uid": "existing"
|
|
}
|
|
]
|
|
],
|
|
"errorCode": 0,
|
|
"fromCache": false,
|
|
"hasPendingWrites": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"userSet": [
|
|
"users/anon",
|
|
{
|
|
"uid": "anon"
|
|
}
|
|
],
|
|
"expect": [
|
|
{
|
|
"query": {
|
|
"path": "users",
|
|
"filters": [],
|
|
"orderBys": []
|
|
},
|
|
"added": [
|
|
[
|
|
"users/anon",
|
|
0,
|
|
{
|
|
"uid": "anon"
|
|
},
|
|
"local"
|
|
]
|
|
],
|
|
"errorCode": 0,
|
|
"fromCache": false,
|
|
"hasPendingWrites": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"changeUser": "user1",
|
|
"stateExpect": {
|
|
"activeTargets": {
|
|
"2": {
|
|
"query": {
|
|
"path": "users",
|
|
"filters": [],
|
|
"orderBys": []
|
|
},
|
|
"resumeToken": "resume-token-500"
|
|
}
|
|
}
|
|
},
|
|
"expect": [
|
|
{
|
|
"query": {
|
|
"path": "users",
|
|
"filters": [],
|
|
"orderBys": []
|
|
},
|
|
"removed": [
|
|
[
|
|
"users/anon",
|
|
0,
|
|
{
|
|
"uid": "anon"
|
|
},
|
|
"local"
|
|
]
|
|
],
|
|
"errorCode": 0,
|
|
"fromCache": false,
|
|
"hasPendingWrites": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"userSet": [
|
|
"users/user1",
|
|
{
|
|
"uid": "user1"
|
|
}
|
|
],
|
|
"expect": [
|
|
{
|
|
"query": {
|
|
"path": "users",
|
|
"filters": [],
|
|
"orderBys": []
|
|
},
|
|
"added": [
|
|
[
|
|
"users/user1",
|
|
0,
|
|
{
|
|
"uid": "user1"
|
|
},
|
|
"local"
|
|
]
|
|
],
|
|
"errorCode": 0,
|
|
"fromCache": false,
|
|
"hasPendingWrites": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"changeUser": null,
|
|
"expect": [
|
|
{
|
|
"query": {
|
|
"path": "users",
|
|
"filters": [],
|
|
"orderBys": []
|
|
},
|
|
"added": [
|
|
[
|
|
"users/anon",
|
|
0,
|
|
{
|
|
"uid": "anon"
|
|
},
|
|
"local"
|
|
]
|
|
],
|
|
"removed": [
|
|
[
|
|
"users/user1",
|
|
0,
|
|
{
|
|
"uid": "user1"
|
|
},
|
|
"local"
|
|
]
|
|
],
|
|
"errorCode": 0,
|
|
"fromCache": false,
|
|
"hasPendingWrites": true
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|