Skip to content

Commit 3d077ea

Browse files
authored
Validate QueryPurpose in spec test (#10954)
1 parent b2383a9 commit 3d077ea

File tree

6 files changed

+235
-102
lines changed

6 files changed

+235
-102
lines changed

Firestore/Example/Tests/SpecTests/FSTSpecTests.mm

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -769,10 +769,13 @@ - (void)validateExpectedState:(nullable NSDictionary *)expectedState {
769769
std::vector<TargetData> queries;
770770
for (id queryJson in queriesJson) {
771771
Query query = [self parseQuery:queryJson];
772-
// TODO(mcg): populate the purpose of the target once it's possible to encode that in
773-
// the spec tests. For now, hard-code that it's a listen despite the fact that it's
774-
// not always the right value.
775-
TargetData target_data(query.ToTarget(), targetID, 0, QueryPurpose::Listen);
772+
773+
QueryPurpose purpose = QueryPurpose::Listen;
774+
if ([queryData objectForKey:@"targetPurpose"] != nil) {
775+
purpose = static_cast<QueryPurpose>([queryData[@"targetPurpose"] intValue]);
776+
}
777+
778+
TargetData target_data(query.ToTarget(), targetID, 0, purpose);
776779
if ([queryData objectForKey:@"resumeToken"] != nil) {
777780
target_data = target_data.WithResumeToken(
778781
MakeResumeToken(queryData[@"resumeToken"]), SnapshotVersion::None());
@@ -887,11 +890,13 @@ - (void)validateActiveTargets {
887890
XCTAssertNotEqual(found, actualTargets.end(), @"Expected active target not found: %s",
888891
targetData.ToString().c_str());
889892

890-
// TODO(mcg): validate the purpose of the target once it's possible to encode that in the
891-
// spec tests. For now, only validate properties that can be validated.
893+
// TODO(Mila): Replace the XCTAssertEqual() checks on the individual properties of TargetData
894+
// below with the single assertEquals on the TargetData objects themselves if the sequenceNumber
895+
// is ever made to be consistent.
892896
// XCTAssertEqualObjects(actualTargets[targetID], TargetData);
893-
894897
const TargetData &actual = found->second;
898+
899+
XCTAssertEqual(actual.purpose(), targetData.purpose());
895900
XCTAssertEqual(actual.target(), targetData.target());
896901
XCTAssertEqual(actual.target_id(), targetData.target_id());
897902
XCTAssertEqual(actual.snapshot_version(), targetData.snapshot_version());

Firestore/Example/Tests/SpecTests/json/bundle_spec_test.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1165,7 +1165,8 @@
11651165
"path": "collection/a"
11661166
}
11671167
],
1168-
"resumeToken": ""
1168+
"resumeToken": "",
1169+
"targetPurpose": 2
11691170
},
11701171
"2": {
11711172
"queries": [

Firestore/Example/Tests/SpecTests/json/existence_filter_spec_test.json

Lines changed: 62 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,24 @@
154154
"path": "collection"
155155
}
156156
}
157-
]
157+
],
158+
"expectedState": {
159+
"activeTargets": {
160+
"2": {
161+
"queries": [
162+
{
163+
"filters": [
164+
],
165+
"orderBys": [
166+
],
167+
"path": "collection"
168+
}
169+
],
170+
"resumeToken": "",
171+
"targetPurpose": 1
172+
}
173+
}
174+
}
158175
},
159176
{
160177
"restart": true,
@@ -414,7 +431,8 @@
414431
"path": "collection"
415432
}
416433
],
417-
"resumeToken": ""
434+
"resumeToken": "",
435+
"targetPurpose": 1
418436
}
419437
}
420438
}
@@ -910,7 +928,8 @@
910928
"path": "collection"
911929
}
912930
],
913-
"resumeToken": ""
931+
"resumeToken": "",
932+
"targetPurpose": 1
914933
}
915934
}
916935
}
@@ -976,7 +995,8 @@
976995
"path": "collection/2"
977996
}
978997
],
979-
"resumeToken": ""
998+
"resumeToken": "",
999+
"targetPurpose": 2
9801000
},
9811001
"2": {
9821002
"queries": [
@@ -988,7 +1008,8 @@
9881008
"path": "collection"
9891009
}
9901010
],
991-
"resumeToken": ""
1011+
"resumeToken": "",
1012+
"targetPurpose": 1
9921013
}
9931014
}
9941015
}
@@ -1043,7 +1064,8 @@
10431064
"path": "collection"
10441065
}
10451066
],
1046-
"resumeToken": ""
1067+
"resumeToken": "",
1068+
"targetPurpose": 1
10471069
}
10481070
}
10491071
}
@@ -1475,7 +1497,8 @@
14751497
"path": "collection"
14761498
}
14771499
],
1478-
"resumeToken": ""
1500+
"resumeToken": "",
1501+
"targetPurpose": 1
14791502
}
14801503
}
14811504
}
@@ -1541,7 +1564,8 @@
15411564
"path": "collection/2"
15421565
}
15431566
],
1544-
"resumeToken": ""
1567+
"resumeToken": "",
1568+
"targetPurpose": 2
15451569
},
15461570
"2": {
15471571
"queries": [
@@ -1553,7 +1577,8 @@
15531577
"path": "collection"
15541578
}
15551579
],
1556-
"resumeToken": ""
1580+
"resumeToken": "",
1581+
"targetPurpose": 1
15571582
}
15581583
}
15591584
}
@@ -1618,7 +1643,8 @@
16181643
"path": "collection"
16191644
}
16201645
],
1621-
"resumeToken": ""
1646+
"resumeToken": "",
1647+
"targetPurpose": 1
16221648
}
16231649
}
16241650
}
@@ -1822,7 +1848,8 @@
18221848
"path": "collection"
18231849
}
18241850
],
1825-
"resumeToken": ""
1851+
"resumeToken": "",
1852+
"targetPurpose": 1
18261853
}
18271854
}
18281855
}
@@ -1888,7 +1915,8 @@
18881915
"path": "collection/2"
18891916
}
18901917
],
1891-
"resumeToken": ""
1918+
"resumeToken": "",
1919+
"targetPurpose": 2
18921920
},
18931921
"2": {
18941922
"queries": [
@@ -1900,7 +1928,8 @@
19001928
"path": "collection"
19011929
}
19021930
],
1903-
"resumeToken": ""
1931+
"resumeToken": "",
1932+
"targetPurpose": 1
19041933
}
19051934
}
19061935
}
@@ -1965,7 +1994,8 @@
19651994
"path": "collection"
19661995
}
19671996
],
1968-
"resumeToken": ""
1997+
"resumeToken": "",
1998+
"targetPurpose": 1
19691999
}
19702000
}
19712001
}
@@ -2219,7 +2249,24 @@
22192249
"path": "collection"
22202250
}
22212251
}
2222-
]
2252+
],
2253+
"expectedState": {
2254+
"activeTargets": {
2255+
"2": {
2256+
"queries": [
2257+
{
2258+
"filters": [
2259+
],
2260+
"orderBys": [
2261+
],
2262+
"path": "collection"
2263+
}
2264+
],
2265+
"resumeToken": "",
2266+
"targetPurpose": 1
2267+
}
2268+
}
2269+
}
22232270
}
22242271
]
22252272
}

0 commit comments

Comments
 (0)