aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firestore/Example/Tests
diff options
context:
space:
mode:
Diffstat (limited to 'Firestore/Example/Tests')
-rw-r--r--Firestore/Example/Tests/Core/FSTDatabaseInfoTests.mm59
-rw-r--r--Firestore/Example/Tests/Core/FSTQueryTests.mm10
-rw-r--r--Firestore/Example/Tests/Integration/FSTDatastoreTests.mm22
-rw-r--r--Firestore/Example/Tests/Integration/FSTStreamTests.mm27
-rw-r--r--Firestore/Example/Tests/Local/FSTLocalSerializerTests.mm14
-rw-r--r--Firestore/Example/Tests/Local/FSTPersistenceTestHelpers.mm13
-rw-r--r--Firestore/Example/Tests/Model/FSTDatabaseIDTests.mm45
-rw-r--r--Firestore/Example/Tests/Model/FSTFieldValueTests.mm22
-rw-r--r--Firestore/Example/Tests/Remote/FSTSerializerBetaTests.mm20
-rw-r--r--Firestore/Example/Tests/SpecTests/FSTMockDatastore.mm35
-rw-r--r--Firestore/Example/Tests/Util/FSTHelpers.mm21
-rw-r--r--Firestore/Example/Tests/Util/FSTIntegrationTestCase.mm19
12 files changed, 130 insertions, 177 deletions
diff --git a/Firestore/Example/Tests/Core/FSTDatabaseInfoTests.mm b/Firestore/Example/Tests/Core/FSTDatabaseInfoTests.mm
deleted file mode 100644
index c7cf22a..0000000
--- a/Firestore/Example/Tests/Core/FSTDatabaseInfoTests.mm
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright 2017 Google
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#import "Firestore/Source/Core/FSTDatabaseInfo.h"
-
-#import <XCTest/XCTest.h>
-
-#import "Firestore/Source/Model/FSTDatabaseID.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface FSTDatabaseInfoTests : XCTestCase
-@end
-
-@implementation FSTDatabaseInfoTests
-
-- (void)testConstructor {
- FSTDatabaseID *databaseID = [FSTDatabaseID databaseIDWithProject:@"p" database:@"d"];
- FSTDatabaseInfo *databaseInfo = [FSTDatabaseInfo databaseInfoWithDatabaseID:databaseID
- persistenceKey:@"pk"
- host:@"h"
- sslEnabled:YES];
- XCTAssertEqualObjects(databaseInfo.databaseID.projectID, @"p");
- XCTAssertEqualObjects(databaseInfo.databaseID.databaseID, @"d");
- XCTAssertEqualObjects(databaseInfo.persistenceKey, @"pk");
- XCTAssertEqualObjects(databaseInfo.host, @"h");
- XCTAssertEqual(databaseInfo.sslEnabled, YES);
-}
-
-- (void)testDefaultDatabase {
- FSTDatabaseID *databaseID =
- [FSTDatabaseID databaseIDWithProject:@"p" database:kDefaultDatabaseID];
- FSTDatabaseInfo *databaseInfo = [FSTDatabaseInfo databaseInfoWithDatabaseID:databaseID
- persistenceKey:@"pk"
- host:@"h"
- sslEnabled:YES];
- XCTAssertEqualObjects(databaseInfo.databaseID.projectID, @"p");
- XCTAssertEqualObjects(databaseInfo.databaseID.databaseID, @"(default)");
- XCTAssertEqualObjects(databaseInfo.persistenceKey, @"pk");
- XCTAssertEqualObjects(databaseInfo.host, @"h");
- XCTAssertEqual(databaseInfo.sslEnabled, YES);
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/Firestore/Example/Tests/Core/FSTQueryTests.mm b/Firestore/Example/Tests/Core/FSTQueryTests.mm
index 3d2bd82..8acefb5 100644
--- a/Firestore/Example/Tests/Core/FSTQueryTests.mm
+++ b/Firestore/Example/Tests/Core/FSTQueryTests.mm
@@ -19,13 +19,18 @@
#import <XCTest/XCTest.h>
#import "Firestore/Source/API/FIRFirestore+Internal.h"
-#import "Firestore/Source/Model/FSTDatabaseID.h"
#import "Firestore/Source/Model/FSTDocument.h"
#import "Firestore/Source/Model/FSTDocumentKey.h"
#import "Firestore/Source/Model/FSTPath.h"
#import "Firestore/Example/Tests/Util/FSTHelpers.h"
+#include "Firestore/core/src/firebase/firestore/model/database_id.h"
+#include "Firestore/core/src/firebase/firestore/util/string_apple.h"
+
+namespace util = firebase::firestore::util;
+using firebase::firestore::model::DatabaseId;
+
NS_ASSUME_NONNULL_BEGIN
/** Convenience methods for building test queries. */
@@ -304,6 +309,7 @@ NS_ASSUME_NONNULL_BEGIN
[query queryByAddingSortOrder:[FSTSortOrder sortOrderWithFieldPath:FSTTestFieldPath(@"sort")
ascending:YES]];
+ NSString *defaultDatabaseID = util::WrapNSStringNoCopy(DatabaseId::kDefaultDatabaseId);
// clang-format off
NSArray<FSTDocument *> *docs = @[
FSTTestDoc(@"collection/1", 0, @{@"sort": [NSNull null]}, NO),
@@ -320,7 +326,7 @@ NS_ASSUME_NONNULL_BEGIN
FSTTestDoc(@"collection/1", 0, @{@"sort": @"ab"}, NO),
FSTTestDoc(@"collection/1", 0, @{@"sort": @"b"}, NO),
FSTTestDoc(@"collection/1", 0, @{@"sort":
- FSTTestRef(@"project", kDefaultDatabaseID, @"collection/id1")}, NO),
+ FSTTestRef(@"project", defaultDatabaseID, @"collection/id1")}, NO),
];
// clang-format on
diff --git a/Firestore/Example/Tests/Integration/FSTDatastoreTests.mm b/Firestore/Example/Tests/Integration/FSTDatastoreTests.mm
index bf56367..36b0494 100644
--- a/Firestore/Example/Tests/Integration/FSTDatastoreTests.mm
+++ b/Firestore/Example/Tests/Integration/FSTDatastoreTests.mm
@@ -23,13 +23,11 @@
#import "Firestore/Source/API/FIRDocumentReference+Internal.h"
#import "Firestore/Source/API/FSTUserDataConverter.h"
#import "Firestore/Source/Auth/FSTEmptyCredentialsProvider.h"
-#import "Firestore/Source/Core/FSTDatabaseInfo.h"
#import "Firestore/Source/Core/FSTFirestoreClient.h"
#import "Firestore/Source/Core/FSTQuery.h"
#import "Firestore/Source/Core/FSTSnapshotVersion.h"
#import "Firestore/Source/Core/FSTTimestamp.h"
#import "Firestore/Source/Local/FSTQueryData.h"
-#import "Firestore/Source/Model/FSTDatabaseID.h"
#import "Firestore/Source/Model/FSTDocumentKey.h"
#import "Firestore/Source/Model/FSTFieldValue.h"
#import "Firestore/Source/Model/FSTMutation.h"
@@ -43,6 +41,14 @@
#import "Firestore/Example/Tests/Util/FSTIntegrationTestCase.h"
+#include "Firestore/core/src/firebase/firestore/core/database_info.h"
+#include "Firestore/core/src/firebase/firestore/model/database_id.h"
+#include "Firestore/core/src/firebase/firestore/util/string_apple.h"
+
+namespace util = firebase::firestore::util;
+using firebase::firestore::core::DatabaseInfo;
+using firebase::firestore::model::DatabaseId;
+
NS_ASSUME_NONNULL_BEGIN
@interface FSTRemoteStore (Tests)
@@ -137,6 +143,7 @@ NS_ASSUME_NONNULL_BEGIN
FSTLocalStore *_localStore;
id<FSTCredentialsProvider> _credentials;
+ DatabaseInfo _databaseInfo;
FSTDatastore *_datastore;
FSTRemoteStore *_remoteStore;
}
@@ -154,13 +161,10 @@ NS_ASSUME_NONNULL_BEGIN
[GRPCCall useInsecureConnectionsForHost:settings.host];
}
- FSTDatabaseID *databaseID =
- [FSTDatabaseID databaseIDWithProject:projectID database:kDefaultDatabaseID];
+ DatabaseId database_id(util::MakeStringView(projectID), DatabaseId::kDefaultDatabaseId);
- FSTDatabaseInfo *databaseInfo = [FSTDatabaseInfo databaseInfoWithDatabaseID:databaseID
- persistenceKey:@"test-key"
- host:settings.host
- sslEnabled:settings.sslEnabled];
+ _databaseInfo = DatabaseInfo(database_id, "test-key", util::MakeStringView(settings.host),
+ settings.sslEnabled);
_testWorkerQueue = [FSTDispatchQueue
queueWith:dispatch_queue_create("com.google.firestore.FSTDatastoreTestsWorkerQueue",
@@ -168,7 +172,7 @@ NS_ASSUME_NONNULL_BEGIN
_credentials = [[FSTEmptyCredentialsProvider alloc] init];
- _datastore = [FSTDatastore datastoreWithDatabase:databaseInfo
+ _datastore = [FSTDatastore datastoreWithDatabase:&_databaseInfo
workerDispatchQueue:_testWorkerQueue
credentials:_credentials];
diff --git a/Firestore/Example/Tests/Integration/FSTStreamTests.mm b/Firestore/Example/Tests/Integration/FSTStreamTests.mm
index bbdf372..6259aff 100644
--- a/Firestore/Example/Tests/Integration/FSTStreamTests.mm
+++ b/Firestore/Example/Tests/Integration/FSTStreamTests.mm
@@ -22,12 +22,18 @@
#import "Firestore/Example/Tests/Util/FSTIntegrationTestCase.h"
#import "Firestore/Example/Tests/Util/FSTTestDispatchQueue.h"
#import "Firestore/Source/Auth/FSTEmptyCredentialsProvider.h"
-#import "Firestore/Source/Core/FSTDatabaseInfo.h"
-#import "Firestore/Source/Model/FSTDatabaseID.h"
#import "Firestore/Source/Remote/FSTDatastore.h"
#import "Firestore/Source/Remote/FSTStream.h"
#import "Firestore/Source/Util/FSTAssert.h"
+#include "Firestore/core/src/firebase/firestore/core/database_info.h"
+#include "Firestore/core/src/firebase/firestore/model/database_id.h"
+#include "Firestore/core/src/firebase/firestore/util/string_apple.h"
+
+namespace util = firebase::firestore::util;
+using firebase::firestore::core::DatabaseInfo;
+using firebase::firestore::model::DatabaseId;
+
/** Exposes otherwise private methods for testing. */
@interface FSTStream (Testing)
- (void)writesFinishedWithError:(NSError *_Nullable)error;
@@ -128,7 +134,7 @@
@implementation FSTStreamTests {
dispatch_queue_t _testQueue;
FSTTestDispatchQueue *_workerDispatchQueue;
- FSTDatabaseInfo *_databaseInfo;
+ DatabaseInfo _databaseInfo;
FSTEmptyCredentialsProvider *_credentials;
FSTStreamStatusDelegate *_delegate;
@@ -140,17 +146,14 @@
[super setUp];
FIRFirestoreSettings *settings = [FSTIntegrationTestCase settings];
- FSTDatabaseID *databaseID =
- [FSTDatabaseID databaseIDWithProject:[FSTIntegrationTestCase projectID]
- database:kDefaultDatabaseID];
+ DatabaseId database_id(util::MakeStringView([FSTIntegrationTestCase projectID]),
+ DatabaseId::kDefaultDatabaseId);
_testQueue = dispatch_queue_create("FSTStreamTestWorkerQueue", DISPATCH_QUEUE_SERIAL);
_workerDispatchQueue = [[FSTTestDispatchQueue alloc] initWithQueue:_testQueue];
- _databaseInfo = [FSTDatabaseInfo databaseInfoWithDatabaseID:databaseID
- persistenceKey:@"test-key"
- host:settings.host
- sslEnabled:settings.sslEnabled];
+ _databaseInfo = DatabaseInfo(database_id, "test-key", util::MakeStringView(settings.host),
+ settings.sslEnabled);
_credentials = [[FSTEmptyCredentialsProvider alloc] init];
_delegate = [[FSTStreamStatusDelegate alloc] initWithTestCase:self queue:_workerDispatchQueue];
@@ -159,14 +162,14 @@
}
- (FSTWriteStream *)setUpWriteStream {
- FSTDatastore *datastore = [[FSTDatastore alloc] initWithDatabaseInfo:_databaseInfo
+ FSTDatastore *datastore = [[FSTDatastore alloc] initWithDatabaseInfo:&_databaseInfo
workerDispatchQueue:_workerDispatchQueue
credentials:_credentials];
return [datastore createWriteStream];
}
- (FSTWatchStream *)setUpWatchStream {
- FSTDatastore *datastore = [[FSTDatastore alloc] initWithDatabaseInfo:_databaseInfo
+ FSTDatastore *datastore = [[FSTDatastore alloc] initWithDatabaseInfo:&_databaseInfo
workerDispatchQueue:_workerDispatchQueue
credentials:_credentials];
return [datastore createWatchStream];
diff --git a/Firestore/Example/Tests/Local/FSTLocalSerializerTests.mm b/Firestore/Example/Tests/Local/FSTLocalSerializerTests.mm
index 95b9b11..1b55795 100644
--- a/Firestore/Example/Tests/Local/FSTLocalSerializerTests.mm
+++ b/Firestore/Example/Tests/Local/FSTLocalSerializerTests.mm
@@ -31,7 +31,6 @@
#import "Firestore/Source/Core/FSTSnapshotVersion.h"
#import "Firestore/Source/Core/FSTTimestamp.h"
#import "Firestore/Source/Local/FSTQueryData.h"
-#import "Firestore/Source/Model/FSTDatabaseID.h"
#import "Firestore/Source/Model/FSTDocument.h"
#import "Firestore/Source/Model/FSTDocumentKey.h"
#import "Firestore/Source/Model/FSTFieldValue.h"
@@ -42,6 +41,11 @@
#import "Firestore/Example/Tests/Util/FSTHelpers.h"
+#include "Firestore/core/src/firebase/firestore/model/database_id.h"
+#include "Firestore/core/src/firebase/firestore/util/string_apple.h"
+
+using firebase::firestore::model::DatabaseId;
+
NS_ASSUME_NONNULL_BEGIN
@interface FSTSerializerBeta (Test)
@@ -52,7 +56,9 @@ NS_ASSUME_NONNULL_BEGIN
- (GCFSValue *)encodedString:(NSString *)value;
@end
-@interface FSTLocalSerializerTests : XCTestCase
+@interface FSTLocalSerializerTests : XCTestCase {
+ DatabaseId _databaseId;
+}
@property(nonatomic, strong) FSTLocalSerializer *serializer;
@property(nonatomic, strong) FSTSerializerBeta *remoteSerializer;
@@ -62,8 +68,8 @@ NS_ASSUME_NONNULL_BEGIN
@implementation FSTLocalSerializerTests
- (void)setUp {
- FSTDatabaseID *databaseID = [FSTDatabaseID databaseIDWithProject:@"p" database:@"d"];
- self.remoteSerializer = [[FSTSerializerBeta alloc] initWithDatabaseID:databaseID];
+ _databaseId = DatabaseId("p", "d");
+ self.remoteSerializer = [[FSTSerializerBeta alloc] initWithDatabaseID:&_databaseId];
self.serializer = [[FSTLocalSerializer alloc] initWithRemoteSerializer:self.remoteSerializer];
}
diff --git a/Firestore/Example/Tests/Local/FSTPersistenceTestHelpers.mm b/Firestore/Example/Tests/Local/FSTPersistenceTestHelpers.mm
index e9e129d..b59a062 100644
--- a/Firestore/Example/Tests/Local/FSTPersistenceTestHelpers.mm
+++ b/Firestore/Example/Tests/Local/FSTPersistenceTestHelpers.mm
@@ -19,9 +19,13 @@
#import "Firestore/Source/Local/FSTLevelDB.h"
#import "Firestore/Source/Local/FSTLocalSerializer.h"
#import "Firestore/Source/Local/FSTMemoryPersistence.h"
-#import "Firestore/Source/Model/FSTDatabaseID.h"
#import "Firestore/Source/Remote/FSTSerializerBeta.h"
+#include "Firestore/core/src/firebase/firestore/model/database_id.h"
+#include "Firestore/core/src/firebase/firestore/util/string_apple.h"
+
+using firebase::firestore::model::DatabaseId;
+
NS_ASSUME_NONNULL_BEGIN
@implementation FSTPersistenceTestHelpers
@@ -43,10 +47,11 @@ NS_ASSUME_NONNULL_BEGIN
}
+ (FSTLevelDB *)levelDBPersistence {
- NSString *dir = [self levelDBDir];
+ // This owns the DatabaseIds since we do not have FirestoreClient instance to own them.
+ static DatabaseId database_id{"p", "d"};
- FSTDatabaseID *databaseID = [FSTDatabaseID databaseIDWithProject:@"p" database:@"d"];
- FSTSerializerBeta *remoteSerializer = [[FSTSerializerBeta alloc] initWithDatabaseID:databaseID];
+ NSString *dir = [self levelDBDir];
+ FSTSerializerBeta *remoteSerializer = [[FSTSerializerBeta alloc] initWithDatabaseID:&database_id];
FSTLocalSerializer *serializer =
[[FSTLocalSerializer alloc] initWithRemoteSerializer:remoteSerializer];
FSTLevelDB *db = [[FSTLevelDB alloc] initWithDirectory:dir serializer:serializer];
diff --git a/Firestore/Example/Tests/Model/FSTDatabaseIDTests.mm b/Firestore/Example/Tests/Model/FSTDatabaseIDTests.mm
deleted file mode 100644
index cb1b19d..0000000
--- a/Firestore/Example/Tests/Model/FSTDatabaseIDTests.mm
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright 2017 Google
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#import "Firestore/Source/Model/FSTDatabaseID.h"
-
-#import <XCTest/XCTest.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface FSTDatabaseIDTests : XCTestCase
-@end
-
-@implementation FSTDatabaseIDTests
-
-- (void)testConstructor {
- FSTDatabaseID *databaseID = [FSTDatabaseID databaseIDWithProject:@"p" database:@"d"];
- XCTAssertEqualObjects(databaseID.projectID, @"p");
- XCTAssertEqualObjects(databaseID.databaseID, @"d");
- XCTAssertFalse([databaseID isDefaultDatabase]);
-}
-
-- (void)testDefaultDatabase {
- FSTDatabaseID *databaseID =
- [FSTDatabaseID databaseIDWithProject:@"p" database:kDefaultDatabaseID];
- XCTAssertEqualObjects(databaseID.projectID, @"p");
- XCTAssertEqualObjects(databaseID.databaseID, @"(default)");
- XCTAssertTrue([databaseID isDefaultDatabase]);
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/Firestore/Example/Tests/Model/FSTFieldValueTests.mm b/Firestore/Example/Tests/Model/FSTFieldValueTests.mm
index 56b885f..52d5a4e 100644
--- a/Firestore/Example/Tests/Model/FSTFieldValueTests.mm
+++ b/Firestore/Example/Tests/Model/FSTFieldValueTests.mm
@@ -22,13 +22,18 @@
#import "Firestore/Source/API/FIRFirestore+Internal.h"
#import "Firestore/Source/API/FSTUserDataConverter.h"
#import "Firestore/Source/Core/FSTTimestamp.h"
-#import "Firestore/Source/Model/FSTDatabaseID.h"
#import "Firestore/Source/Model/FSTFieldValue.h"
#import "Firestore/Source/Model/FSTPath.h"
#import "Firestore/Example/Tests/API/FSTAPIHelpers.h"
#import "Firestore/Example/Tests/Util/FSTHelpers.h"
+#include "Firestore/core/src/firebase/firestore/model/database_id.h"
+#include "Firestore/core/src/firebase/firestore/util/string_apple.h"
+
+namespace util = firebase::firestore::util;
+using firebase::firestore::model::DatabaseId;
+
/** Helper to wrap the values in a set of equality groups using FSTTestFieldValue(). */
NSArray *FSTWrapGroups(NSArray *groups) {
NSMutableArray *wrapped = [NSMutableArray array];
@@ -249,14 +254,15 @@ union DoubleBits {
- (void)testWrapResourceNames {
NSArray *values = @[
- FSTTestRef(@"project", kDefaultDatabaseID, @"foo/bar"),
- FSTTestRef(@"project", kDefaultDatabaseID, @"foo/baz")
+ FSTTestRef(@"project", util::WrapNSStringNoCopy(DatabaseId::kDefaultDatabaseId), @"foo/bar"),
+ FSTTestRef(@"project", util::WrapNSStringNoCopy(DatabaseId::kDefaultDatabaseId), @"foo/baz")
];
for (FSTDocumentKeyReference *value in values) {
FSTFieldValue *wrapped = FSTTestFieldValue(value);
XCTAssertEqualObjects([wrapped class], [FSTReferenceValue class]);
XCTAssertEqualObjects([wrapped value], value.key);
- XCTAssertEqualObjects(((FSTDatabaseID *)wrapped).databaseID, value.databaseID);
+ XCTAssertTrue(*((FSTReferenceValue *)wrapped).databaseID ==
+ *(const DatabaseId *)(value.databaseID));
}
}
@@ -417,6 +423,7 @@ union DoubleBits {
}
- (void)testValueEquality {
+ DatabaseId database_id = DatabaseId("project", DatabaseId::kDefaultDatabaseId);
NSArray *groups = @[
@[ FSTTestFieldValue(@YES), [FSTBooleanValue booleanValue:YES] ],
@[ FSTTestFieldValue(@NO), [FSTBooleanValue booleanValue:NO] ],
@@ -459,10 +466,9 @@ union DoubleBits {
],
@[ FSTTestFieldValue(FSTTestGeoPoint(1, 0)) ],
@[
- [FSTReferenceValue referenceValue:FSTTestDocKey(@"coll/doc1")
- databaseID:[FSTDatabaseID databaseIDWithProject:@"project"
- database:kDefaultDatabaseID]],
- FSTTestFieldValue(FSTTestRef(@"project", kDefaultDatabaseID, @"coll/doc1"))
+ [FSTReferenceValue referenceValue:FSTTestDocKey(@"coll/doc1") databaseID:&database_id],
+ FSTTestFieldValue(FSTTestRef(
+ @"project", util::WrapNSStringNoCopy(DatabaseId::kDefaultDatabaseId), @"coll/doc1"))
],
@[ FSTTestRef(@"project", @"(default)", @"coll/doc2") ],
@[ FSTTestFieldValue(@[ @"foo", @"bar" ]), FSTTestFieldValue(@[ @"foo", @"bar" ]) ],
diff --git a/Firestore/Example/Tests/Remote/FSTSerializerBetaTests.mm b/Firestore/Example/Tests/Remote/FSTSerializerBetaTests.mm
index de4a07a..48e5546 100644
--- a/Firestore/Example/Tests/Remote/FSTSerializerBetaTests.mm
+++ b/Firestore/Example/Tests/Remote/FSTSerializerBetaTests.mm
@@ -35,7 +35,6 @@
#import "Firestore/Source/Core/FSTSnapshotVersion.h"
#import "Firestore/Source/Core/FSTTimestamp.h"
#import "Firestore/Source/Local/FSTQueryData.h"
-#import "Firestore/Source/Model/FSTDatabaseID.h"
#import "Firestore/Source/Model/FSTDocument.h"
#import "Firestore/Source/Model/FSTDocumentKey.h"
#import "Firestore/Source/Model/FSTFieldValue.h"
@@ -47,6 +46,12 @@
#import "Firestore/Example/Tests/API/FSTAPIHelpers.h"
#import "Firestore/Example/Tests/Util/FSTHelpers.h"
+#include "Firestore/core/src/firebase/firestore/model/database_id.h"
+#include "Firestore/core/src/firebase/firestore/util/string_apple.h"
+
+namespace util = firebase::firestore::util;
+using firebase::firestore::model::DatabaseId;
+
NS_ASSUME_NONNULL_BEGIN
@interface FSTSerializerBeta (Test)
@@ -79,15 +84,18 @@ NS_ASSUME_NONNULL_BEGIN
}
@end
-@interface FSTSerializerBetaTests : XCTestCase
+@interface FSTSerializerBetaTests : XCTestCase {
+ DatabaseId _databaseId;
+}
+
@property(nonatomic, strong) FSTSerializerBeta *serializer;
@end
@implementation FSTSerializerBetaTests
- (void)setUp {
- FSTDatabaseID *databaseID = [FSTDatabaseID databaseIDWithProject:@"p" database:@"d"];
- self.serializer = [[FSTSerializerBeta alloc] initWithDatabaseID:databaseID];
+ _databaseId = DatabaseId("p", "d");
+ self.serializer = [[FSTSerializerBeta alloc] initWithDatabaseID:&_databaseId];
}
- (void)testEncodesNull {
@@ -231,7 +239,9 @@ NS_ASSUME_NONNULL_BEGIN
}
- (void)testEncodesResourceNames {
- FSTDocumentKeyReference *reference = FSTTestRef(@"project", kDefaultDatabaseID, @"foo/bar");
+ FSTDocumentKeyReference *reference =
+ FSTTestRef(@"project", util::WrapNSStringNoCopy(DatabaseId::kDefaultDatabaseId), @"foo/bar");
+ _databaseId = DatabaseId("project", DatabaseId::kDefaultDatabaseId);
GCFSValue *proto = [GCFSValue message];
proto.referenceValue = @"projects/project/databases/(default)/documents/foo/bar";
diff --git a/Firestore/Example/Tests/SpecTests/FSTMockDatastore.mm b/Firestore/Example/Tests/SpecTests/FSTMockDatastore.mm
index 9a1d719..d3c4171 100644
--- a/Firestore/Example/Tests/SpecTests/FSTMockDatastore.mm
+++ b/Firestore/Example/Tests/SpecTests/FSTMockDatastore.mm
@@ -17,10 +17,8 @@
#import "Firestore/Example/Tests/SpecTests/FSTMockDatastore.h"
#import "Firestore/Source/Auth/FSTEmptyCredentialsProvider.h"
-#import "Firestore/Source/Core/FSTDatabaseInfo.h"
#import "Firestore/Source/Core/FSTSnapshotVersion.h"
#import "Firestore/Source/Local/FSTQueryData.h"
-#import "Firestore/Source/Model/FSTDatabaseID.h"
#import "Firestore/Source/Model/FSTMutation.h"
#import "Firestore/Source/Remote/FSTSerializerBeta.h"
#import "Firestore/Source/Remote/FSTStream.h"
@@ -29,6 +27,13 @@
#import "Firestore/Example/Tests/Remote/FSTWatchChange+Testing.h"
+#include "Firestore/core/src/firebase/firestore/core/database_info.h"
+#include "Firestore/core/src/firebase/firestore/model/database_id.h"
+#include "Firestore/core/src/firebase/firestore/util/string_apple.h"
+
+using firebase::firestore::core::DatabaseInfo;
+using firebase::firestore::model::DatabaseId;
+
@class GRPCProtoCall;
NS_ASSUME_NONNULL_BEGIN
@@ -42,12 +47,12 @@ NS_ASSUME_NONNULL_BEGIN
credentials:(id<FSTCredentialsProvider>)credentials
serializer:(FSTSerializerBeta *)serializer NS_DESIGNATED_INITIALIZER;
-- (instancetype)initWithDatabase:(FSTDatabaseInfo *)database
+- (instancetype)initWithDatabase:(const DatabaseInfo *)database
workerDispatchQueue:(FSTDispatchQueue *)workerDispatchQueue
credentials:(id<FSTCredentialsProvider>)credentials
serializer:(FSTSerializerBeta *)serializer NS_UNAVAILABLE;
-- (instancetype)initWithDatabase:(FSTDatabaseInfo *)database
+- (instancetype)initWithDatabase:(const DatabaseInfo *)database
workerDispatchQueue:(FSTDispatchQueue *)workerDispatchQueue
credentials:(id<FSTCredentialsProvider>)credentials
responseMessageClass:(Class)responseMessageClass NS_UNAVAILABLE;
@@ -168,12 +173,12 @@ NS_ASSUME_NONNULL_BEGIN
credentials:(id<FSTCredentialsProvider>)credentials
serializer:(FSTSerializerBeta *)serializer NS_DESIGNATED_INITIALIZER;
-- (instancetype)initWithDatabase:(FSTDatabaseInfo *)database
+- (instancetype)initWithDatabase:(const DatabaseInfo *)database
workerDispatchQueue:(FSTDispatchQueue *)workerDispatchQueue
credentials:(id<FSTCredentialsProvider>)credentials
serializer:(FSTSerializerBeta *)serializer NS_UNAVAILABLE;
-- (instancetype)initWithDatabase:(FSTDatabaseInfo *)database
+- (instancetype)initWithDatabase:(const DatabaseInfo *)database
workerDispatchQueue:(FSTDispatchQueue *)workerDispatchQueue
credentials:(id<FSTCredentialsProvider>)credentials
responseMessageClass:(Class)responseMessageClass NS_UNAVAILABLE;
@@ -281,15 +286,13 @@ NS_ASSUME_NONNULL_BEGIN
@implementation FSTMockDatastore
+ (instancetype)mockDatastoreWithWorkerDispatchQueue:(FSTDispatchQueue *)workerDispatchQueue {
- FSTDatabaseID *databaseID = [FSTDatabaseID databaseIDWithProject:@"project" database:@"database"];
- FSTDatabaseInfo *databaseInfo = [FSTDatabaseInfo databaseInfoWithDatabaseID:databaseID
- persistenceKey:@"persistence"
- host:@"host"
- sslEnabled:NO];
+ // This owns the DatabaseInfos since we do not have FirestoreClient instance to own them.
+ static DatabaseInfo database_info{DatabaseId{"project", "database"}, "persistence", "host",
+ false};
FSTEmptyCredentialsProvider *credentials = [[FSTEmptyCredentialsProvider alloc] init];
- return [[FSTMockDatastore alloc] initWithDatabaseInfo:databaseInfo
+ return [[FSTMockDatastore alloc] initWithDatabaseInfo:&database_info
workerDispatchQueue:workerDispatchQueue
credentials:credentials];
}
@@ -297,24 +300,24 @@ NS_ASSUME_NONNULL_BEGIN
#pragma mark - Overridden FSTDatastore methods.
- (FSTWatchStream *)createWatchStream {
- FSTAssert(self.databaseInfo, @"DatabaseInfo must not be nil");
+ // FSTAssert(self.databaseInfo, @"DatabaseInfo must not be nil");
self.watchStream = [[FSTMockWatchStream alloc]
initWithDatastore:self
workerDispatchQueue:self.workerDispatchQueue
credentials:self.credentials
serializer:[[FSTSerializerBeta alloc]
- initWithDatabaseID:self.databaseInfo.databaseID]];
+ initWithDatabaseID:&self.databaseInfo->database_id()]];
return self.watchStream;
}
- (FSTWriteStream *)createWriteStream {
- FSTAssert(self.databaseInfo, @"DatabaseInfo must not be nil");
+ // FSTAssert(self.databaseInfo, @"DatabaseInfo must not be nil");
self.writeStream = [[FSTMockWriteStream alloc]
initWithDatastore:self
workerDispatchQueue:self.workerDispatchQueue
credentials:self.credentials
serializer:[[FSTSerializerBeta alloc]
- initWithDatabaseID:self.databaseInfo.databaseID]];
+ initWithDatabaseID:&self.databaseInfo->database_id()]];
return self.writeStream;
}
diff --git a/Firestore/Example/Tests/Util/FSTHelpers.mm b/Firestore/Example/Tests/Util/FSTHelpers.mm
index 64fe213..406d4dd 100644
--- a/Firestore/Example/Tests/Util/FSTHelpers.mm
+++ b/Firestore/Example/Tests/Util/FSTHelpers.mm
@@ -17,6 +17,7 @@
#import "Firestore/Example/Tests/Util/FSTHelpers.h"
#include <inttypes.h>
+#include <vector>
#import <FirebaseFirestore/FIRFieldPath.h>
#import <FirebaseFirestore/FIRGeoPoint.h>
@@ -30,7 +31,6 @@
#import "Firestore/Source/Core/FSTViewSnapshot.h"
#import "Firestore/Source/Local/FSTLocalViewChanges.h"
#import "Firestore/Source/Local/FSTQueryData.h"
-#import "Firestore/Source/Model/FSTDatabaseID.h"
#import "Firestore/Source/Model/FSTDocument.h"
#import "Firestore/Source/Model/FSTDocumentKey.h"
#import "Firestore/Source/Model/FSTDocumentSet.h"
@@ -41,6 +41,12 @@
#import "Firestore/Source/Remote/FSTWatchChange.h"
#import "Firestore/Source/Util/FSTAssert.h"
+#include "Firestore/core/src/firebase/firestore/model/database_id.h"
+#include "Firestore/core/src/firebase/firestore/util/string_apple.h"
+
+namespace util = firebase::firestore::util;
+using firebase::firestore::model::DatabaseId;
+
NS_ASSUME_NONNULL_BEGIN
/** A string sentinel that can be used with FSTTestPatchMutation() to mark a field for deletion. */
@@ -100,10 +106,10 @@ FSTFieldPath *FSTTestFieldPath(NSString *field) {
}
FSTFieldValue *FSTTestFieldValue(id _Nullable value) {
- FSTDatabaseID *databaseID =
- [FSTDatabaseID databaseIDWithProject:@"project" database:kDefaultDatabaseID];
+ // This owns the DatabaseIds since we do not have FirestoreClient instance to own them.
+ static DatabaseId database_id{"project", DatabaseId::kDefaultDatabaseId};
FSTUserDataConverter *converter =
- [[FSTUserDataConverter alloc] initWithDatabaseID:databaseID
+ [[FSTUserDataConverter alloc] initWithDatabaseID:&database_id
preConverter:^id _Nullable(id _Nullable input) {
return input;
}];
@@ -167,8 +173,11 @@ FSTResourcePath *FSTTestPath(NSString *path) {
}
FSTDocumentKeyReference *FSTTestRef(NSString *projectID, NSString *database, NSString *path) {
- FSTDatabaseID *databaseID = [FSTDatabaseID databaseIDWithProject:projectID database:database];
- return [[FSTDocumentKeyReference alloc] initWithKey:FSTTestDocKey(path) databaseID:databaseID];
+ // This owns the DatabaseIds since we do not have FirestoreClient instance to own them.
+ static std::vector<DatabaseId> database_ids;
+ database_ids.emplace_back(util::MakeStringView(projectID), util::MakeStringView(database));
+ return [[FSTDocumentKeyReference alloc] initWithKey:FSTTestDocKey(path)
+ databaseID:&database_ids.back()];
}
FSTQuery *FSTTestQuery(NSString *path) {
diff --git a/Firestore/Example/Tests/Util/FSTIntegrationTestCase.mm b/Firestore/Example/Tests/Util/FSTIntegrationTestCase.mm
index ef15056..df591b0 100644
--- a/Firestore/Example/Tests/Util/FSTIntegrationTestCase.mm
+++ b/Firestore/Example/Tests/Util/FSTIntegrationTestCase.mm
@@ -27,12 +27,16 @@
#import "Firestore/Source/Auth/FSTEmptyCredentialsProvider.h"
#import "Firestore/Source/Core/FSTFirestoreClient.h"
#import "Firestore/Source/Local/FSTLevelDB.h"
-#import "Firestore/Source/Model/FSTDatabaseID.h"
#import "Firestore/Source/Util/FSTDispatchQueue.h"
#import "Firestore/Example/Tests/Util/FSTEventAccumulator.h"
#import "Firestore/Example/Tests/Util/FSTTestDispatchQueue.h"
+#include "Firestore/core/src/firebase/firestore/model/database_id.h"
+#include "Firestore/core/src/firebase/firestore/util/string_apple.h"
+
+namespace util = firebase::firestore::util;
+using firebase::firestore::model::DatabaseId;
using firebase::firestore::util::CreateAutoId;
NS_ASSUME_NONNULL_BEGIN
@@ -137,12 +141,13 @@ NS_ASSUME_NONNULL_BEGIN
FIRSetLoggerLevel(FIRLoggerLevelDebug);
// HACK: FIRFirestore expects a non-nil app, but for tests we cheat.
FIRApp *app = nil;
- FIRFirestore *firestore = [[FIRFirestore alloc] initWithProjectID:projectID
- database:kDefaultDatabaseID
- persistenceKey:persistenceKey
- credentialsProvider:credentialsProvider
- workerDispatchQueue:workerDispatchQueue
- firebaseApp:app];
+ FIRFirestore *firestore = [[FIRFirestore alloc]
+ initWithProjectID:projectID
+ database:util::WrapNSStringNoCopy(DatabaseId::kDefaultDatabaseId)
+ persistenceKey:persistenceKey
+ credentialsProvider:credentialsProvider
+ workerDispatchQueue:workerDispatchQueue
+ firebaseApp:app];
firestore.settings = [FSTIntegrationTestCase settings];