Skip to content

Commit 3356ae6

Browse files
ncooke3paulb777
authored andcommitted
[Config] Port UserDefaultsManagerTests.swift (#14330)
1 parent 2c61afb commit 3356ae6

File tree

1 file changed

+245
-0
lines changed

1 file changed

+245
-0
lines changed
Lines changed: 245 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,245 @@
1+
// Copyright 2025 Google LLC
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
@testable import FirebaseRemoteConfig
16+
import XCTest
17+
18+
private let appName = "testApp"
19+
private let fqNamespace1 = "testNamespace1:testApp"
20+
private let fqNamespace2 = "testNamespace2:testApp"
21+
private var userDefaultsSampleTimestamp: TimeInterval = 0
22+
23+
class UserDefaultsManagerOrigTests: XCTestCase {
24+
private var bundleID: String!
25+
26+
override func setUp() async throws {
27+
try await super.setUp()
28+
// Clear UserDefaults before each test.
29+
bundleID = try XCTUnwrap(Bundle.main.bundleIdentifier)
30+
userDefaultsSampleTimestamp = Date().timeIntervalSince1970
31+
UserDefaults.standard.removePersistentDomain(forName: bundleID)
32+
}
33+
34+
func testUserDefaultsEtagWriteAndRead() {
35+
let manager = UserDefaultsManager(appName: appName,
36+
bundleID: bundleID,
37+
namespace: fqNamespace1)
38+
manager.lastETag = "eTag1"
39+
XCTAssertEqual(manager.lastETag, "eTag1")
40+
41+
manager.lastETag = "eTag2"
42+
XCTAssertEqual(manager.lastETag, "eTag2")
43+
}
44+
45+
func testUserDefaultsLastFetchTimeWriteAndRead() {
46+
let manager = UserDefaultsManager(appName: appName,
47+
bundleID: bundleID,
48+
namespace: fqNamespace1)
49+
manager.lastFetchTime = userDefaultsSampleTimestamp
50+
XCTAssertEqual(manager.lastFetchTime, userDefaultsSampleTimestamp)
51+
52+
manager.lastFetchTime = userDefaultsSampleTimestamp - 1000
53+
XCTAssertEqual(manager.lastFetchTime, userDefaultsSampleTimestamp - 1000)
54+
}
55+
56+
func testUserDefaultsLastETagUpdateTimeWriteAndRead() {
57+
let manager = UserDefaultsManager(appName: appName,
58+
bundleID: bundleID,
59+
namespace: fqNamespace1)
60+
manager.lastETagUpdateTime = userDefaultsSampleTimestamp
61+
XCTAssertEqual(manager.lastETagUpdateTime, userDefaultsSampleTimestamp)
62+
63+
manager.lastETagUpdateTime = userDefaultsSampleTimestamp - 1000
64+
XCTAssertEqual(manager.lastETagUpdateTime, userDefaultsSampleTimestamp - 1000)
65+
}
66+
67+
func testUserDefaultsLastFetchStatusWriteAndRead() {
68+
let manager = UserDefaultsManager(appName: appName,
69+
bundleID: bundleID,
70+
namespace: fqNamespace1)
71+
manager.lastFetchStatus = "Success"
72+
XCTAssertEqual(manager.lastFetchStatus, "Success")
73+
74+
manager.lastFetchStatus = "Error"
75+
XCTAssertEqual(manager.lastFetchStatus, "Error")
76+
}
77+
78+
func testUserDefaultsIsClientThrottledWriteAndRead() {
79+
let manager = UserDefaultsManager(appName: appName,
80+
bundleID: bundleID,
81+
namespace: fqNamespace1)
82+
manager.isClientThrottledWithExponentialBackoff = true
83+
XCTAssertEqual(manager.isClientThrottledWithExponentialBackoff, true)
84+
85+
manager.isClientThrottledWithExponentialBackoff = false
86+
XCTAssertEqual(manager.isClientThrottledWithExponentialBackoff, false)
87+
}
88+
89+
func testUserDefaultsThrottleEndTimeWriteAndRead() {
90+
let manager = UserDefaultsManager(appName: appName,
91+
bundleID: bundleID,
92+
namespace: fqNamespace1)
93+
94+
manager.throttleEndTime = userDefaultsSampleTimestamp - 7.0
95+
XCTAssertEqual(manager.throttleEndTime, userDefaultsSampleTimestamp - 7.0)
96+
97+
manager.throttleEndTime = userDefaultsSampleTimestamp - 8.0
98+
XCTAssertEqual(manager.throttleEndTime, userDefaultsSampleTimestamp - 8.0)
99+
}
100+
101+
func testUserDefaultsCurrentThrottlingRetryIntervalWriteAndRead() {
102+
let manager = UserDefaultsManager(appName: appName,
103+
bundleID: bundleID,
104+
namespace: fqNamespace1)
105+
manager.currentThrottlingRetryIntervalSeconds = userDefaultsSampleTimestamp - 1.0
106+
XCTAssertEqual(
107+
manager.currentThrottlingRetryIntervalSeconds,
108+
userDefaultsSampleTimestamp - 1.0
109+
)
110+
111+
manager.currentThrottlingRetryIntervalSeconds = userDefaultsSampleTimestamp - 2.0
112+
XCTAssertEqual(
113+
manager.currentThrottlingRetryIntervalSeconds,
114+
userDefaultsSampleTimestamp - 2.0
115+
)
116+
}
117+
118+
func testUserDefaultsTemplateVersionWriteAndRead() {
119+
let manager = UserDefaultsManager(appName: appName,
120+
bundleID: bundleID,
121+
namespace: fqNamespace1)
122+
manager.lastFetchedTemplateVersion = "1"
123+
XCTAssertEqual(manager.lastFetchedTemplateVersion, "1")
124+
}
125+
126+
func testUserDefaultsActiveTemplateVersionWriteAndRead() {
127+
let manager = UserDefaultsManager(appName: appName,
128+
bundleID: bundleID,
129+
namespace: fqNamespace1)
130+
manager.lastActiveTemplateVersion = "1"
131+
XCTAssertEqual(manager.lastActiveTemplateVersion, "1")
132+
}
133+
134+
func testUserDefaultsRealtimeThrottleEndTimeWriteAndRead() {
135+
let manager = UserDefaultsManager(
136+
appName: appName,
137+
bundleID: bundleID,
138+
namespace: fqNamespace1
139+
)
140+
141+
manager.realtimeThrottleEndTime = userDefaultsSampleTimestamp - 7.0
142+
XCTAssertEqual(manager.realtimeThrottleEndTime, userDefaultsSampleTimestamp - 7.0)
143+
144+
manager.realtimeThrottleEndTime = userDefaultsSampleTimestamp - 8.0
145+
XCTAssertEqual(manager.realtimeThrottleEndTime, userDefaultsSampleTimestamp - 8.0)
146+
}
147+
148+
func testUserDefaultsCurrentRealtimeThrottlingRetryIntervalWriteAndRead() {
149+
let manager = UserDefaultsManager(appName: appName,
150+
bundleID: bundleID,
151+
namespace: fqNamespace1)
152+
manager.currentRealtimeThrottlingRetryIntervalSeconds = userDefaultsSampleTimestamp - 1.0
153+
XCTAssertEqual(manager.currentRealtimeThrottlingRetryIntervalSeconds,
154+
userDefaultsSampleTimestamp - 1.0)
155+
156+
manager.currentRealtimeThrottlingRetryIntervalSeconds = userDefaultsSampleTimestamp - 2.0
157+
XCTAssertEqual(manager.currentRealtimeThrottlingRetryIntervalSeconds,
158+
userDefaultsSampleTimestamp - 2.0)
159+
}
160+
161+
func testUserDefaultsForMultipleNamespaces() {
162+
let manager1 = UserDefaultsManager(appName: appName,
163+
bundleID: bundleID,
164+
namespace: fqNamespace1)
165+
let manager2 = UserDefaultsManager(appName: appName,
166+
bundleID: bundleID,
167+
namespace: fqNamespace2)
168+
169+
manager1.lastETag = "eTag1ForNamespace1"
170+
manager2.lastETag = "eTag1ForNamespace2"
171+
XCTAssertEqual(manager1.lastETag, "eTag1ForNamespace1")
172+
XCTAssertEqual(manager2.lastETag, "eTag1ForNamespace2")
173+
174+
manager1.lastFetchTime = userDefaultsSampleTimestamp - 1000
175+
manager2.lastFetchTime = userDefaultsSampleTimestamp - 7000
176+
XCTAssertEqual(manager1.lastFetchTime, userDefaultsSampleTimestamp - 1000)
177+
XCTAssertEqual(manager2.lastFetchTime, userDefaultsSampleTimestamp - 7000)
178+
179+
manager1.lastFetchStatus = "Success"
180+
manager2.lastFetchStatus = "Error"
181+
XCTAssertEqual(manager1.lastFetchStatus, "Success")
182+
XCTAssertEqual(manager2.lastFetchStatus, "Error")
183+
184+
manager1.isClientThrottledWithExponentialBackoff = true
185+
manager2.isClientThrottledWithExponentialBackoff = false
186+
XCTAssertEqual(manager1.isClientThrottledWithExponentialBackoff, true)
187+
XCTAssertEqual(manager2.isClientThrottledWithExponentialBackoff, false)
188+
189+
manager1.throttleEndTime = userDefaultsSampleTimestamp - 7.0
190+
manager2.throttleEndTime = userDefaultsSampleTimestamp - 8.0
191+
XCTAssertEqual(manager1.throttleEndTime, userDefaultsSampleTimestamp - 7.0)
192+
XCTAssertEqual(manager2.throttleEndTime, userDefaultsSampleTimestamp - 8.0)
193+
194+
manager1.currentThrottlingRetryIntervalSeconds = userDefaultsSampleTimestamp - 1.0
195+
manager2.currentThrottlingRetryIntervalSeconds = userDefaultsSampleTimestamp - 2.0
196+
XCTAssertEqual(
197+
manager1.currentThrottlingRetryIntervalSeconds,
198+
userDefaultsSampleTimestamp - 1.0
199+
)
200+
XCTAssertEqual(
201+
manager2.currentThrottlingRetryIntervalSeconds,
202+
userDefaultsSampleTimestamp - 2.0
203+
)
204+
205+
manager1.realtimeThrottleEndTime = userDefaultsSampleTimestamp - 7.0
206+
manager2.realtimeThrottleEndTime = userDefaultsSampleTimestamp - 8.0
207+
XCTAssertEqual(manager1.realtimeThrottleEndTime, userDefaultsSampleTimestamp - 7.0)
208+
XCTAssertEqual(manager2.realtimeThrottleEndTime, userDefaultsSampleTimestamp - 8.0)
209+
210+
manager1.currentRealtimeThrottlingRetryIntervalSeconds = userDefaultsSampleTimestamp - 1.0
211+
manager2.currentRealtimeThrottlingRetryIntervalSeconds = userDefaultsSampleTimestamp - 2.0
212+
XCTAssertEqual(
213+
manager1.currentRealtimeThrottlingRetryIntervalSeconds,
214+
userDefaultsSampleTimestamp - 1.0
215+
)
216+
XCTAssertEqual(
217+
manager2.currentRealtimeThrottlingRetryIntervalSeconds,
218+
userDefaultsSampleTimestamp - 2.0
219+
)
220+
221+
manager1.realtimeRetryCount = 1
222+
manager2.realtimeRetryCount = 2
223+
XCTAssertEqual(manager1.realtimeRetryCount, 1)
224+
XCTAssertEqual(manager2.realtimeRetryCount, 2)
225+
226+
manager1.lastFetchedTemplateVersion = "1"
227+
manager2.lastFetchedTemplateVersion = "2"
228+
XCTAssertEqual(manager1.lastFetchedTemplateVersion, "1")
229+
XCTAssertEqual(manager2.lastFetchedTemplateVersion, "2")
230+
231+
manager1.lastActiveTemplateVersion = "1"
232+
manager2.lastActiveTemplateVersion = "2"
233+
XCTAssertEqual(manager1.lastActiveTemplateVersion, "1")
234+
XCTAssertEqual(manager2.lastActiveTemplateVersion, "2")
235+
}
236+
237+
func testUserDefaultsReset() {
238+
let manager = UserDefaultsManager(appName: appName,
239+
bundleID: bundleID,
240+
namespace: fqNamespace1)
241+
manager.lastETag = "testETag"
242+
manager.resetUserDefaults()
243+
XCTAssertNil(manager.lastETag)
244+
}
245+
}

0 commit comments

Comments
 (0)