Skip to content

Commit 6961223

Browse files
committed
Pass RCNConfigDBManagerTest.m
1 parent c1eefe4 commit 6961223

File tree

7 files changed

+22
-30
lines changed

7 files changed

+22
-30
lines changed

FirebaseRemoteConfig/SwiftNew/ConfigDBManager.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,17 +50,17 @@ open class ConfigDBManager: NSObject {
5050
/// Shared Singleton Instance
5151
@objc public static let sharedInstance = ConfigDBManager()
5252

53-
private let databaseActor = DatabaseActor() // Use the actor
53+
private let databaseActor: DatabaseActor
5454

5555
@objc public var isNewDatabase: Bool = false
5656

57-
@objc override public init() {
57+
@objc public init(dbPath: String = remoteConfigPathForDatabase()) {
58+
databaseActor = DatabaseActor(dbPath: dbPath)
5859
super.init()
5960
}
6061

6162
/// Returns the current version of the Remote Config database.
62-
@objc public
63-
static func remoteConfigPathForDatabase() -> String {
63+
public static func remoteConfigPathForDatabase() -> String {
6464
#if os(tvOS)
6565
let dirPaths = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true)
6666
#else

FirebaseRemoteConfig/SwiftNew/DatabaseActor.swift

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,10 @@ private let RCNDatabaseName = "RemoteConfig.sqlite3"
2424
actor DatabaseActor {
2525
private var database: OpaquePointer?
2626
private var isNewDatabase: Bool = false
27+
private let dbPath: String
2728

28-
init() {
29+
init(dbPath: String) {
30+
self.dbPath = dbPath
2931
Task {
3032
await createOrOpenDatabase()
3133
}
@@ -39,13 +41,9 @@ actor DatabaseActor {
3941
"Old database V0 exists, removed it and replace with the new one.")
4042
removeDatabase(atPath: oldV0DBPath)
4143
}
42-
let dbPath = ConfigDBManager.remoteConfigPathForDatabase()
4344
RCLog.info("I-RCN000062", "Loading database at path \(dbPath)")
4445
let cDbPath = (dbPath as NSString).utf8String
4546

46-
#warning("Delete me")
47-
removeDatabase(atPath: dbPath)
48-
4947
// Create or open database path.
5048
if !createFilePath(ifNotExist: dbPath) {
5149
return
@@ -87,7 +85,7 @@ actor DatabaseActor {
8785

8886
func insertMetadataTable(withValues columnNameToValue: [String: Any]) -> Bool {
8987
let sql = """
90-
INSERT INTO fetch_metadata (\
88+
INSERT into fetch_metadata (\
9189
bundle_identifier, \
9290
namespace, \
9391
fetch_time, \

FirebaseRemoteConfig/Tests/Unit/RCNConfigDBManagerTest.m

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,10 @@ - (void)setUp {
5555
_DBPath = [RCNTestUtilities remoteConfigPathForTestDatabase];
5656

5757
_expectionTimeout = 10.0;
58-
id classMock = OCMClassMock([RCNConfigDBManager class]);
59-
OCMStub([classMock remoteConfigPathForDatabase]).andReturn(_DBPath);
60-
_DBManager = [[RCNConfigDBManager alloc] init];
58+
_DBManager = [[RCNConfigDBManager alloc] initWithDbPath:_DBPath];
6159

6260
// TODO: Why does this make all tests fail?
63-
// [_DBManager removeDatabaseWithPath: _DBPath];
61+
//[_DBManager removeDatabaseWithPath: _DBPath];
6462
}
6563

6664
- (void)tearDown {
@@ -134,9 +132,12 @@ - (void)testWriteAndLoadMainTableResult {
134132
// check DB read correctly
135133
[self->_DBManager
136134
loadMainWithBundleIdentifier:bundleIdentifier
137-
completionHandler:^(BOOL success, NSDictionary *fetchedConfig,
138-
NSDictionary *activeConfig, NSDictionary *defaultConfig,
139-
NSDictionary *unusedRolloutMetadata) {
135+
completionHandler:^(
136+
BOOL loadSuccess,
137+
NSDictionary<NSString *, NSDictionary<NSString *, id> *> *fetchedConfig,
138+
NSDictionary<NSString *, NSDictionary<NSString *, id> *> *activeConfig,
139+
NSDictionary<NSString *, NSDictionary<NSString *, id> *> *defaultConfig,
140+
NSDictionary *unusedRolloutMetadata) {
140141
NSMutableDictionary *res = [fetchedConfig mutableCopy];
141142
XCTAssertTrue(success);
142143
FIRRemoteConfigValue *value = res[namespace_p][@"key100"];
@@ -219,7 +220,7 @@ - (void)testWriteAndLoadMetadataResult {
219220
NSTimeInterval lastFetchTimestamp = [NSDate date].timeIntervalSince1970;
220221

221222
NSDictionary *deviceContext =
222-
@{@"app_version" : @"1.0.1", @"app_build" : @"1.0.1.11", @"os_version" : @"iOS9.1"};
223+
@{@"app_version" : @"1.0.1", @"app_build" : @"1.0.1.11", @"os_version" : @"iOS19.1"};
223224
NSDictionary *syncedDBCustomVariables = @{@"user_level" : @15, @"user_experiences" : @"2468"};
224225
NSArray *successFetchTimes = @[];
225226
NSTimeInterval now = [NSDate date].timeIntervalSince1970;

FirebaseRemoteConfig/Tests/Unit/RCNConfigExperimentTest.m

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,6 @@ - (void)setUp {
6363
[super setUp];
6464
_expectationTimeout = 1.0;
6565
_DBPath = [RCNTestUtilities remoteConfigPathForTestDatabase];
66-
_DBManagerMock = OCMClassMock([RCNConfigDBManager class]);
67-
OCMStub([_DBManagerMock remoteConfigPathForDatabase]).andReturn(_DBPath);
6866

6967
// Mock all database operations.
7068
NSDictionary<NSString *, id> *payload1 = @{@"experimentId" : @"DBValue1"};

FirebaseRemoteConfig/Tests/Unit/RCNInstanceIDTest.m

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,7 @@ - (void)setUpConfigMock {
9393

9494
// Always remove the database at the start of testing.
9595
_DBPath = [RCNTestUtilities remoteConfigPathForTestDatabase];
96-
id classMock = OCMClassMock([RCNConfigDBManager class]);
97-
OCMStub([classMock remoteConfigPathForDatabase]).andReturn(_DBPath);
98-
_DBManager = [[RCNConfigDBManager alloc] init];
96+
_DBManager = [[RCNConfigDBManager alloc] initWithDbPath:_DBPath];
9997

10098
_userDefaultsSuiteName = [RCNTestUtilities userDefaultsSuiteNameForTestSuite];
10199
_userDefaults = [[NSUserDefaults alloc] initWithSuiteName:_userDefaultsSuiteName];

FirebaseRemoteConfig/Tests/Unit/RCNPersonalizationTest.m

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -93,18 +93,17 @@ - (void)setUp {
9393

9494
// Always remove the database at the start of testing.
9595
NSString *DBPath = [RCNTestUtilities remoteConfigPathForTestDatabase];
96-
id DBMock = OCMClassMock([RCNConfigDBManager class]);
97-
OCMStub([DBMock remoteConfigPathForDatabase]).andReturn(DBPath);
96+
RCNConfigDBManager *DBManager = [[RCNConfigDBManager alloc] initWithDbPath:DBPath];
9897

99-
RCNConfigContent *configContent = [[RCNConfigContent alloc] initWithDBManager:DBMock];
98+
RCNConfigContent *configContent = [[RCNConfigContent alloc] initWithDBManager:DBManager];
10099

101100
// Create a mock FIRRemoteConfig instance.
102101
_configInstance = OCMPartialMock([[FIRRemoteConfig alloc]
103102
initWithAppName:@"testApp"
104103
FIROptions:[[FIROptions alloc] initWithGoogleAppID:@"1:123:ios:test"
105104
GCMSenderID:@"testSender"]
106105
namespace:@"namespace"
107-
DBManager:DBMock
106+
DBManager:DBManager
108107
configContent:configContent
109108
analytics:_analyticsMock]);
110109
[_configInstance setValue:[RCNPersonalizationTest mockFetchRequest] forKey:@"_configFetch"];

FirebaseRemoteConfig/Tests/Unit/RCNRemoteConfigTest.m

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -165,9 +165,7 @@ - (void)setUp {
165165

166166
// Always remove the database at the start of testing.
167167
_DBPath = [RCNTestUtilities remoteConfigPathForTestDatabase];
168-
_DBManagerMock = OCMClassMock([RCNConfigDBManager class]);
169-
OCMStub([_DBManagerMock remoteConfigPathForDatabase]).andReturn(_DBPath);
170-
_DBManager = [[RCNConfigDBManager alloc] init];
168+
_DBManager = [[RCNConfigDBManager alloc] initWithDbPath:_DBPath];
171169

172170
_userDefaultsSuiteName = [RCNTestUtilities userDefaultsSuiteNameForTestSuite];
173171
_userDefaults = [[NSUserDefaults alloc] initWithSuiteName:_userDefaultsSuiteName];

0 commit comments

Comments
 (0)