Skip to content

Commit c7ab489

Browse files
ncooke3paulb777
authored andcommitted
[Config] Add generated tests for UserDefaultsManagerTests.swift (#14337)
1 parent b7e1a53 commit c7ab489

File tree

1 file changed

+231
-0
lines changed

1 file changed

+231
-0
lines changed
Lines changed: 231 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,231 @@
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+
class UserDefaultsManagerTests: XCTestCase {
19+
let appName = "testApp"
20+
let bundleID = "com.example.testApp"
21+
let namespace = "namespace:app"
22+
let fullyQualifiedNamespace = "namespace:testApp"
23+
24+
override func setUp() {
25+
super.setUp()
26+
// Clear for clean test state
27+
let persistentDomain = UserDefaultsManager.userDefaultsSuiteName(for: bundleID)
28+
UserDefaults.standard.removePersistentDomain(forName: persistentDomain)
29+
}
30+
31+
func testSharedUserDefaultsForBundleIdentifier() {
32+
let defaults1 = UserDefaultsManager.sharedUserDefaultsForBundleIdentifier(bundleID)
33+
let defaults2 = UserDefaultsManager.sharedUserDefaultsForBundleIdentifier(bundleID)
34+
XCTAssertTrue(defaults1 === defaults2) // Should return the same instance each time
35+
}
36+
37+
func testUserDefaultsSuiteName() {
38+
let suiteName = UserDefaultsManager.userDefaultsSuiteName(for: bundleID)
39+
XCTAssertEqual(suiteName, "group.\(bundleID).firebase")
40+
}
41+
42+
func testLastETag() {
43+
let manager = UserDefaultsManager(
44+
appName: appName,
45+
bundleID: bundleID,
46+
namespace: namespace
47+
)
48+
manager.lastETag = "eTag1"
49+
XCTAssertEqual(manager.lastETag, "eTag1")
50+
}
51+
52+
func testSettingNilLastETagIsNoOp() {
53+
let manager = UserDefaultsManager(
54+
appName: appName,
55+
bundleID: bundleID,
56+
namespace: namespace
57+
)
58+
manager.lastETag = "eTag1"
59+
XCTAssertEqual(manager.lastETag, "eTag1")
60+
manager.lastETag = nil
61+
XCTAssertEqual(manager.lastETag, "eTag1")
62+
}
63+
64+
func testLastFetchedTemplateVersion() {
65+
let manager = UserDefaultsManager(
66+
appName: appName,
67+
bundleID: bundleID,
68+
namespace: namespace
69+
)
70+
// Test default value
71+
// Default should be "0"
72+
XCTAssertEqual(manager.lastFetchedTemplateVersion, "0")
73+
manager.lastFetchedTemplateVersion = "123"
74+
XCTAssertEqual(manager.lastFetchedTemplateVersion, "123")
75+
}
76+
77+
func testUserDefaultsSharedWithinBundleID() {
78+
let manager1 = UserDefaultsManager(appName: appName, bundleID: bundleID, namespace: namespace)
79+
let manager2 = UserDefaultsManager(appName: appName, bundleID: bundleID, namespace: namespace)
80+
let manager3 = UserDefaultsManager(
81+
appName: appName,
82+
bundleID: bundleID,
83+
namespace: namespace + "1"
84+
)
85+
let manager4 = UserDefaultsManager(
86+
appName: appName,
87+
bundleID: bundleID + "1",
88+
namespace: namespace
89+
)
90+
manager1.lastETag = "etag1"
91+
XCTAssertEqual(manager2.lastETag, "etag1")
92+
XCTAssertEqual(manager3.lastETag, "etag1")
93+
XCTAssertNil(manager4.lastETag)
94+
}
95+
96+
func testLastActiveTemplateVersion() {
97+
let manager = UserDefaultsManager(
98+
appName: appName,
99+
bundleID: bundleID,
100+
namespace: namespace
101+
)
102+
// Test default value
103+
// Default should be "0"
104+
XCTAssertEqual(manager.lastActiveTemplateVersion, "0")
105+
manager.lastActiveTemplateVersion = "456"
106+
XCTAssertEqual(manager.lastActiveTemplateVersion, "456")
107+
}
108+
109+
func testLastETagUpdateTime() {
110+
let manager = UserDefaultsManager(
111+
appName: appName,
112+
bundleID: bundleID,
113+
namespace: namespace
114+
)
115+
let time: TimeInterval = 1_678_886_400 // Example timestamp
116+
manager.lastETagUpdateTime = time
117+
XCTAssertEqual(manager.lastETagUpdateTime, time)
118+
}
119+
120+
func testLastFetchTime() {
121+
let manager = UserDefaultsManager(
122+
appName: appName,
123+
bundleID: bundleID,
124+
namespace: namespace
125+
)
126+
let time: TimeInterval = 1_678_886_400 // Example timestamp
127+
manager.lastFetchTime = time
128+
XCTAssertEqual(manager.lastFetchTime, time)
129+
}
130+
131+
func testLastFetchStatus() {
132+
let manager = UserDefaultsManager(
133+
appName: appName,
134+
bundleID: bundleID,
135+
namespace: namespace
136+
)
137+
manager.lastFetchStatus = "Success"
138+
XCTAssertEqual(manager.lastFetchStatus, "Success")
139+
}
140+
141+
func testLastFetchStatusIsNoOp() {
142+
let manager = UserDefaultsManager(
143+
appName: appName,
144+
bundleID: bundleID,
145+
namespace: namespace
146+
)
147+
manager.lastETag = "eTag1"
148+
XCTAssertEqual(manager.lastETag, "eTag1")
149+
manager.lastETag = nil
150+
XCTAssertEqual(manager.lastETag, "eTag1")
151+
}
152+
153+
func testIsClientThrottledWithExponentialBackoff() {
154+
let manager = UserDefaultsManager(
155+
appName: appName,
156+
bundleID: bundleID,
157+
namespace: namespace
158+
)
159+
manager.isClientThrottledWithExponentialBackoff = true
160+
XCTAssertTrue(manager.isClientThrottledWithExponentialBackoff)
161+
162+
manager.isClientThrottledWithExponentialBackoff = false
163+
XCTAssertFalse(manager.isClientThrottledWithExponentialBackoff)
164+
}
165+
166+
func testThrottleEndTime() {
167+
let manager = UserDefaultsManager(
168+
appName: appName,
169+
bundleID: bundleID,
170+
namespace: namespace
171+
)
172+
let time: TimeInterval = 1_678_886_400 // Example timestamp
173+
manager.throttleEndTime = time
174+
XCTAssertEqual(manager.throttleEndTime, time)
175+
}
176+
177+
func testCurrentThrottlingRetryIntervalSeconds() {
178+
let manager = UserDefaultsManager(
179+
appName: appName,
180+
bundleID: bundleID,
181+
namespace: namespace
182+
)
183+
let interval: TimeInterval = 300 // Example interval
184+
manager.currentThrottlingRetryIntervalSeconds = interval
185+
XCTAssertEqual(manager.currentThrottlingRetryIntervalSeconds, interval)
186+
}
187+
188+
func testRealtimeRetryCount() {
189+
let manager = UserDefaultsManager(
190+
appName: appName,
191+
bundleID: bundleID,
192+
namespace: namespace
193+
)
194+
195+
manager.realtimeRetryCount = 5
196+
XCTAssertEqual(manager.realtimeRetryCount, 5)
197+
}
198+
199+
func testRealtimeThrottleEndTime() {
200+
let manager = UserDefaultsManager(
201+
appName: appName,
202+
bundleID: bundleID,
203+
namespace: namespace
204+
)
205+
let time: TimeInterval = 1_678_886_400 // Example timestamp
206+
manager.realtimeThrottleEndTime = time
207+
XCTAssertEqual(manager.realtimeThrottleEndTime, time)
208+
}
209+
210+
func testCurrentRealtimeThrottlingRetryIntervalSeconds() {
211+
let manager = UserDefaultsManager(
212+
appName: appName,
213+
bundleID: bundleID,
214+
namespace: namespace
215+
)
216+
let interval: TimeInterval = 300 // Example interval
217+
manager.currentRealtimeThrottlingRetryIntervalSeconds = interval
218+
XCTAssertEqual(manager.currentRealtimeThrottlingRetryIntervalSeconds, interval)
219+
}
220+
221+
func testResetUserDefaults() {
222+
let manager = UserDefaultsManager(
223+
appName: appName,
224+
bundleID: bundleID,
225+
namespace: namespace
226+
)
227+
manager.lastETag = "testValue"
228+
manager.resetUserDefaults()
229+
XCTAssertNil(manager.lastETag) // Check if value was removed
230+
}
231+
}

0 commit comments

Comments
 (0)