@@ -14,6 +14,7 @@ class SentryFileManagerTests: XCTestCase {
1414 let eventIds : [ SentryId ]
1515
1616 let currentDateProvider : TestCurrentDateProvider !
17+ let dispatchQueueWrapper : TestSentryDispatchQueueWrapper !
1718
1819 let options : Options
1920
@@ -33,6 +34,8 @@ class SentryFileManagerTests: XCTestCase {
3334
3435 init ( ) {
3536 currentDateProvider = TestCurrentDateProvider ( )
37+ dispatchQueueWrapper = TestSentryDispatchQueueWrapper ( )
38+ dispatchQueueWrapper. dispatchAfterExecutesBlock = true
3639
3740 eventIds = ( 0 ... ( maxCacheItems + 10 ) ) . map { _ in SentryId ( ) }
3841
@@ -60,14 +63,14 @@ class SentryFileManagerTests: XCTestCase {
6063 }
6164
6265 func getSut( ) throws -> SentryFileManager {
63- let sut = try SentryFileManager ( options: options, andCurrentDateProvider: currentDateProvider)
66+ let sut = try SentryFileManager ( options: options, andCurrentDateProvider: currentDateProvider, dispatchQueueWrapper : dispatchQueueWrapper )
6467 sut. setDelegate ( delegate)
6568 return sut
6669 }
6770
6871 func getSut( maxCacheItems: UInt ) throws -> SentryFileManager {
6972 options. maxCacheItems = maxCacheItems
70- let sut = try SentryFileManager ( options: options, andCurrentDateProvider: currentDateProvider)
73+ let sut = try SentryFileManager ( options: options, andCurrentDateProvider: currentDateProvider, dispatchQueueWrapper : dispatchQueueWrapper )
7174 sut. setDelegate ( delegate)
7275 return sut
7376 }
@@ -107,8 +110,8 @@ class SentryFileManagerTests: XCTestCase {
107110 sut. storeCurrentSession ( SentrySession ( releaseName: " 1.0.0 " ) )
108111 sut. storeTimestampLast ( inForeground: Date ( ) )
109112
110- _ = try SentryFileManager ( options: fixture. options, andCurrentDateProvider: TestCurrentDateProvider ( ) )
111- let fileManager = try SentryFileManager ( options: fixture. options, andCurrentDateProvider: TestCurrentDateProvider ( ) )
113+ _ = try SentryFileManager ( options: fixture. options, andCurrentDateProvider: TestCurrentDateProvider ( ) , dispatchQueueWrapper : TestSentryDispatchQueueWrapper ( ) )
114+ let fileManager = try SentryFileManager ( options: fixture. options, andCurrentDateProvider: TestCurrentDateProvider ( ) , dispatchQueueWrapper : TestSentryDispatchQueueWrapper ( ) )
112115
113116 XCTAssertEqual ( 1 , fileManager. getAllEnvelopes ( ) . count)
114117 XCTAssertNotNil ( fileManager. readCurrentSession ( ) )
@@ -118,15 +121,15 @@ class SentryFileManagerTests: XCTestCase {
118121 func testInitDeletesEventsFolder( ) throws {
119122 storeEvent ( )
120123
121- _ = try SentryFileManager ( options: fixture. options, andCurrentDateProvider: TestCurrentDateProvider ( ) )
124+ _ = try SentryFileManager ( options: fixture. options, andCurrentDateProvider: TestCurrentDateProvider ( ) , dispatchQueueWrapper : TestSentryDispatchQueueWrapper ( ) )
122125
123126 assertEventFolderDoesntExist ( )
124127 }
125128
126129 func testInitDoesntCreateEventsFolder( ) {
127130 assertEventFolderDoesntExist ( )
128131 }
129-
132+
130133 func testStoreEnvelope( ) throws {
131134 let envelope = TestConstants . envelope
132135 sut. store ( envelope)
@@ -139,7 +142,52 @@ class SentryFileManagerTests: XCTestCase {
139142 let actualData = envelopes [ 0 ] . contents
140143 XCTAssertEqual ( expectedData, actualData as Data )
141144 }
142-
145+
146+ func testDeleteOldEnvelopes( ) throws {
147+ let envelope = TestConstants . envelope
148+ let path = sut. store ( envelope)
149+
150+ let timeIntervalSince1970 = fixture. currentDateProvider. date ( ) . timeIntervalSince1970 - ( 90 * 24 * 60 * 60 )
151+ let date = Date ( timeIntervalSince1970: timeIntervalSince1970 - 1 )
152+ try FileManager . default. setAttributes ( [ FileAttributeKey . creationDate: date] , ofItemAtPath: path)
153+
154+ XCTAssertEqual ( sut. getAllEnvelopes ( ) . count, 1 )
155+
156+ sut = try fixture. getSut ( )
157+
158+ XCTAssertEqual ( sut. getAllEnvelopes ( ) . count, 0 )
159+ }
160+
161+ func testDontDeleteYoungEnvelopes( ) throws {
162+ let envelope = TestConstants . envelope
163+ let path = sut. store ( envelope)
164+
165+ let timeIntervalSince1970 = fixture. currentDateProvider. date ( ) . timeIntervalSince1970 - ( 90 * 24 * 60 * 60 )
166+ let date = Date ( timeIntervalSince1970: timeIntervalSince1970)
167+ try FileManager . default. setAttributes ( [ FileAttributeKey . creationDate: date] , ofItemAtPath: path)
168+
169+ XCTAssertEqual ( sut. getAllEnvelopes ( ) . count, 1 )
170+
171+ sut = try fixture. getSut ( )
172+
173+ XCTAssertEqual ( sut. getAllEnvelopes ( ) . count, 1 )
174+ }
175+
176+ func testDontDeleteYoungEnvelopesFromOldEnvelopesFolder( ) throws {
177+ let envelope = TestConstants . envelope
178+ sut. store ( envelope)
179+
180+ let timeIntervalSince1970 = fixture. currentDateProvider. date ( ) . timeIntervalSince1970 - ( 90 * 24 * 60 * 60 )
181+ let date = Date ( timeIntervalSince1970: timeIntervalSince1970)
182+ try FileManager . default. setAttributes ( [ FileAttributeKey . creationDate: date] , ofItemAtPath: sut. envelopesPath)
183+
184+ XCTAssertEqual ( sut. getAllEnvelopes ( ) . count, 1 )
185+
186+ sut = try fixture. getSut ( )
187+
188+ XCTAssertEqual ( sut. getAllEnvelopes ( ) . count, 1 )
189+ }
190+
143191 func testCreateDirDoesNotThrow( ) throws {
144192 try SentryFileManager . createDirectory ( atPath: " a " )
145193 }
0 commit comments