@@ -4,160 +4,160 @@ import Testing
44@testable import Data
55import Domain
66
7- @Suite ( " RatingPromptStorage " )
8- struct RatingPromptStorageTests {
9-
7+ @Suite ( " RatingPromptRepository " )
8+ struct RatingPromptRepositoryTests {
9+
1010 @Test ( " getRatingPromptData returns data with default values when no data is stored " )
11- func getRatingPromptDataReturnsDataWithDefaultValuesWhenNoDataIsStored( ) {
11+ func getRatingPromptDataReturnsDataWithDefaultValuesWhenNoDataIsStored( ) async {
1212 let userDefaultsManager = UserDefaultsManagerMock ( )
13- let storage = RatingPromptStorage ( userDefaultsManager: userDefaultsManager)
14-
15- let data = storage . getRatingPromptData ( )
16-
13+ let repository = RatingPromptRepository ( userDefaultsManager: userDefaultsManager)
14+
15+ let data = await repository . getRatingPromptData ( )
16+
1717 #expect( data. appLaunchCount == 0 )
1818 #expect( data. firstLaunchDate == nil )
1919 #expect( data. lastPromptedVersion == nil )
2020 #expect( data. significantEventCount == 0 )
2121 }
22-
22+
2323 @Test ( " getRatingPromptData returns stored values " )
24- func getRatingPromptDataReturnsStoredValues( ) throws {
24+ func getRatingPromptDataReturnsStoredValues( ) async throws {
2525 let userDefaultsManager = UserDefaultsManagerMock ( )
2626 let testDate = Date ( )
2727 let encodedDate = try JSONEncoder ( ) . encode ( testDate)
28-
28+
2929 userDefaultsManager. setStorageValue ( 5 , forKey: UserDefaultsKey . ratingPromptAppLaunchCount. rawValue)
3030 userDefaultsManager. setStorageValue ( encodedDate, forKey: UserDefaultsKey . ratingPromptFirstLaunchDate. rawValue)
3131 userDefaultsManager. setStorageValue ( " 1.2.0 " , forKey: UserDefaultsKey . ratingPromptLastPromptedVersion. rawValue)
3232 userDefaultsManager. setStorageValue ( 3 , forKey: UserDefaultsKey . ratingPromptSignificantEventCount. rawValue)
33-
34- let storage = RatingPromptStorage ( userDefaultsManager: userDefaultsManager)
35- let data = storage . getRatingPromptData ( )
36-
33+
34+ let repository = RatingPromptRepository ( userDefaultsManager: userDefaultsManager)
35+ let data = await repository . getRatingPromptData ( )
36+
3737 #expect( data. appLaunchCount == 5 )
3838 #expect( data. firstLaunchDate? . timeIntervalSince1970 == testDate. timeIntervalSince1970)
3939 #expect( data. lastPromptedVersion == " 1.2.0 " )
4040 #expect( data. significantEventCount == 3 )
4141 }
42-
42+
4343 @Test ( " getRatingPromptData handles invalid date data gracefully " )
44- func getRatingPromptDataHandlesInvalidDateDataGracefully( ) {
44+ func getRatingPromptDataHandlesInvalidDateDataGracefully( ) async {
4545 let userDefaultsManager = UserDefaultsManagerMock ( )
4646 let invalidDateData = Data ( [ 0x00 , 0x01 , 0x02 ] ) // Invalid JSON for Date
47-
47+
4848 userDefaultsManager. setStorageValue ( invalidDateData, forKey: UserDefaultsKey . ratingPromptFirstLaunchDate. rawValue)
49-
50- let storage = RatingPromptStorage ( userDefaultsManager: userDefaultsManager)
51- let data = storage . getRatingPromptData ( )
52-
49+
50+ let repository = RatingPromptRepository ( userDefaultsManager: userDefaultsManager)
51+ let data = await repository . getRatingPromptData ( )
52+
5353 #expect( data. firstLaunchDate == nil )
5454 }
55-
55+
5656 @Test ( " recordAppLaunch increments launch count " )
57- func recordAppLaunchIncrementsLaunchCount( ) {
57+ func recordAppLaunchIncrementsLaunchCount( ) async {
5858 let userDefaultsManager = UserDefaultsManagerMock ( )
5959 userDefaultsManager. setStorageValue ( 5 , forKey: UserDefaultsKey . ratingPromptAppLaunchCount. rawValue)
60-
61- let storage = RatingPromptStorage ( userDefaultsManager: userDefaultsManager)
62- storage . recordAppLaunch ( )
63-
60+
61+ let repository = RatingPromptRepository ( userDefaultsManager: userDefaultsManager)
62+ await repository . recordAppLaunch ( )
63+
6464 let updatedCount = userDefaultsManager. getIntValue ( for: UserDefaultsKey . ratingPromptAppLaunchCount. rawValue)
6565 #expect( updatedCount == 6 )
6666 #expect( userDefaultsManager. didCallSynchronize)
6767 }
68-
68+
6969 @Test ( " recordAppLaunch sets first launch date when not already set " )
70- func recordAppLaunchSetsFirstLaunchDateWhenNotAlreadySet( ) throws {
70+ func recordAppLaunchSetsFirstLaunchDateWhenNotAlreadySet( ) async throws {
7171 let userDefaultsManager = UserDefaultsManagerMock ( )
72- let storage = RatingPromptStorage ( userDefaultsManager: userDefaultsManager)
73-
74- storage . recordAppLaunch ( )
75-
72+ let repository = RatingPromptRepository ( userDefaultsManager: userDefaultsManager)
73+
74+ await repository . recordAppLaunch ( )
75+
7676 let dateData = userDefaultsManager. getDataValue ( for: UserDefaultsKey . ratingPromptFirstLaunchDate. rawValue)
7777 #expect( dateData != nil )
78-
78+
7979 let decodedDate = try JSONDecoder ( ) . decode ( Date . self, from: dateData!)
8080 let now = Date ( )
8181 // Allow for small time difference (within 1 second)
8282 #expect( abs ( decodedDate. timeIntervalSince ( now) ) < 1.0 )
8383 }
84-
84+
8585 @Test ( " recordAppLaunch does not overwrite existing first launch date " )
86- func recordAppLaunchDoesNotOverwriteExistingFirstLaunchDate( ) throws {
86+ func recordAppLaunchDoesNotOverwriteExistingFirstLaunchDate( ) async throws {
8787 let userDefaultsManager = UserDefaultsManagerMock ( )
8888 let existingDate = Date ( ) . addingTimeInterval ( - 1000 )
8989 let encodedExistingDate = try JSONEncoder ( ) . encode ( existingDate)
90-
90+
9191 userDefaultsManager. setStorageValue ( encodedExistingDate, forKey: UserDefaultsKey . ratingPromptFirstLaunchDate. rawValue)
92-
93- let storage = RatingPromptStorage ( userDefaultsManager: userDefaultsManager)
94- storage . recordAppLaunch ( )
95-
92+
93+ let repository = RatingPromptRepository ( userDefaultsManager: userDefaultsManager)
94+ await repository . recordAppLaunch ( )
95+
9696 let dateData = userDefaultsManager. getDataValue ( for: UserDefaultsKey . ratingPromptFirstLaunchDate. rawValue) !
9797 let storedDate = try JSONDecoder ( ) . decode ( Date . self, from: dateData)
98-
98+
9999 #expect( storedDate. timeIntervalSince1970 == existingDate. timeIntervalSince1970)
100100 }
101-
101+
102102 @Test ( " recordSignificantEvent increments significant event count " )
103- func recordSignificantEventIncrementsSignificantEventCount( ) {
103+ func recordSignificantEventIncrementsSignificantEventCount( ) async {
104104 let userDefaultsManager = UserDefaultsManagerMock ( )
105105 userDefaultsManager. setStorageValue ( 3 , forKey: UserDefaultsKey . ratingPromptSignificantEventCount. rawValue)
106-
107- let storage = RatingPromptStorage ( userDefaultsManager: userDefaultsManager)
108- storage . recordSignificantEvent ( )
109-
106+
107+ let repository = RatingPromptRepository ( userDefaultsManager: userDefaultsManager)
108+ await repository . recordSignificantEvent ( )
109+
110110 let updatedCount = userDefaultsManager. getIntValue ( for: UserDefaultsKey . ratingPromptSignificantEventCount. rawValue)
111111 #expect( updatedCount == 4 )
112112 #expect( userDefaultsManager. didCallSynchronize)
113113 }
114-
114+
115115 @Test ( " recordPromptShown stores the app version " )
116- func recordPromptShownStoresTheAppVersion( ) {
116+ func recordPromptShownStoresTheAppVersion( ) async {
117117 let userDefaultsManager = UserDefaultsManagerMock ( )
118- let storage = RatingPromptStorage ( userDefaultsManager: userDefaultsManager)
119-
120- storage . recordPromptShown ( for: " 2.1.0 " )
121-
118+ let repository = RatingPromptRepository ( userDefaultsManager: userDefaultsManager)
119+
120+ await repository . recordPromptShown ( for: " 2.1.0 " )
121+
122122 let storedVersion = userDefaultsManager. getStringValue ( for: UserDefaultsKey . ratingPromptLastPromptedVersion. rawValue)
123123 #expect( storedVersion == " 2.1.0 " )
124124 #expect( userDefaultsManager. didCallSynchronize)
125125 }
126-
126+
127127 @Test ( " resetCounters resets launch and event counters to zero " )
128- func resetCountersResetsLaunchAndEventCountersToZero( ) {
128+ func resetCountersResetsLaunchAndEventCountersToZero( ) async {
129129 let userDefaultsManager = UserDefaultsManagerMock ( )
130130 userDefaultsManager. setStorageValue ( 10 , forKey: UserDefaultsKey . ratingPromptAppLaunchCount. rawValue)
131131 userDefaultsManager. setStorageValue ( 5 , forKey: UserDefaultsKey . ratingPromptSignificantEventCount. rawValue)
132-
133- let storage = RatingPromptStorage ( userDefaultsManager: userDefaultsManager)
134- storage . resetCounters ( )
135-
132+
133+ let repository = RatingPromptRepository ( userDefaultsManager: userDefaultsManager)
134+ await repository . resetCounters ( )
135+
136136 let launchCount = userDefaultsManager. getIntValue ( for: UserDefaultsKey . ratingPromptAppLaunchCount. rawValue)
137137 let eventCount = userDefaultsManager. getIntValue ( for: UserDefaultsKey . ratingPromptSignificantEventCount. rawValue)
138-
138+
139139 #expect( launchCount == 0 )
140140 #expect( eventCount == 0 )
141141 #expect( userDefaultsManager. didCallSynchronize)
142142 }
143-
143+
144144 @Test ( " clearAllData removes all rating prompt related data " )
145- func clearAllDataRemovesAllRatingPromptRelatedData( ) throws {
145+ func clearAllDataRemovesAllRatingPromptRelatedData( ) async throws {
146146 let userDefaultsManager = UserDefaultsManagerMock ( )
147147 let testDate = Date ( )
148148 let encodedDate = try JSONEncoder ( ) . encode ( testDate)
149-
149+
150150 // Set up initial data
151151 userDefaultsManager. setStorageValue ( 10 , forKey: UserDefaultsKey . ratingPromptAppLaunchCount. rawValue)
152152 userDefaultsManager. setStorageValue ( encodedDate, forKey: UserDefaultsKey . ratingPromptFirstLaunchDate. rawValue)
153153 userDefaultsManager. setStorageValue ( " 1.0.0 " , forKey: UserDefaultsKey . ratingPromptLastPromptedVersion. rawValue)
154154 userDefaultsManager. setStorageValue ( 5 , forKey: UserDefaultsKey . ratingPromptSignificantEventCount. rawValue)
155-
156- let storage = RatingPromptStorage ( userDefaultsManager: userDefaultsManager)
157- storage . clearAllData ( )
158-
155+
156+ let repository = RatingPromptRepository ( userDefaultsManager: userDefaultsManager)
157+ await repository . clearAllData ( )
158+
159159 // Verify all data is cleared
160- let data = storage . getRatingPromptData ( )
160+ let data = await repository . getRatingPromptData ( )
161161 #expect( data. appLaunchCount == 0 )
162162 #expect( data. firstLaunchDate == nil )
163163 #expect( data. lastPromptedVersion == nil )
0 commit comments