Skip to content

Commit ab840e4

Browse files
committed
Implement clear method for all storage types and add clear calls in tests
1 parent 0163228 commit ab840e4

File tree

4 files changed

+16
-14
lines changed

4 files changed

+16
-14
lines changed

Storage/Classes/Storage.swift

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,12 @@ public final class Storage<T> where T: Codable {
7373
try? fileManager.createDirectory(at: folder, withIntermediateDirectories: false, attributes: nil)
7474
}
7575

76-
private func clearStorage() {
77-
try? FileManager.default.removeItem(at: type.folder)
76+
public func clear() {
77+
switch type {
78+
case .cache, .document:
79+
try? FileManager.default.removeItem(at: type.folder)
80+
case .userDefaults:
81+
UserDefaults.standard.removeObject(forKey: type.userDefaultsKey)
82+
}
7883
}
7984
}

Storage/Classes/StorageType.swift

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,14 @@ public enum StorageType {
77

88
public var searchPathDirectory: FileManager.SearchPathDirectory {
99
switch self {
10-
case .cache: return .cachesDirectory
11-
case .document: return .documentDirectory
12-
case .userDefaults: fatalError("UserDefaults does not have a search path directory")
10+
case .cache: return .cachesDirectory
11+
case .document: return .documentDirectory
12+
case .userDefaults: return .cachesDirectory
1313
}
1414
}
1515

1616
public var folder: URL {
17+
1718
guard let path = NSSearchPathForDirectoriesInDomains(searchPathDirectory, .userDomainMask, true).first else {
1819
fatalError("Cannot find the path directory for storage")
1920
}

Tests/StorageTests.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ class StorageTests: XCTestCase {
1111

1212
let retrievedData = storage.storedValue
1313
XCTAssertEqual(retrievedData, testData, "Stored and retrieved data should be equal")
14+
storage.clear()
1415
}
1516

1617
func testRetrieveNonExistentFile() {
@@ -29,6 +30,7 @@ class StorageTests: XCTestCase {
2930

3031
let retrievedData = storage.storedValue
3132
XCTAssertEqual(retrievedData, newData, "Stored and retrieved data should be equal after overwrite")
33+
storage.clear()
3234
}
3335

3436
func testSaveAndRetrieveUserDefaults() {
@@ -39,12 +41,14 @@ class StorageTests: XCTestCase {
3941

4042
let retrievedData = storage.storedValue
4143
XCTAssertEqual(retrievedData, testData, "Stored and retrieved data should be equal for user defaults")
44+
storage.clear()
4245
}
4346

4447
func testRetrieveNonExistentUserDefaults() {
4548
let storage = Storage<[String]>(storageType: .userDefaults, filename: "nonexistentUserDefaults")
4649
let retrievedData = storage.storedValue
4750
XCTAssertNil(retrievedData, "Retrieving non-existent data from user defaults should return nil")
51+
storage.clear()
4852
}
4953

5054
func testOverwriteUserDefaultsData() {
@@ -57,5 +61,6 @@ class StorageTests: XCTestCase {
5761

5862
let retrievedData = storage.storedValue
5963
XCTAssertEqual(retrievedData, newData, "Stored and retrieved data should be equal after overwrite in user defaults")
64+
storage.clear()
6065
}
6166
}

Tests/StorageTypeTests.swift

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,4 @@ class StorageTypeTests: XCTestCase {
1313
let folder = storageType.folder
1414
XCTAssertTrue(folder.path.contains("Documents"), "Document directory path should contain 'Documents'")
1515
}
16-
17-
func testFolderCreation() {
18-
let storageType = StorageType.document
19-
let folder = storageType.folder
20-
let fileManager = FileManager.default
21-
var isDir: ObjCBool = false
22-
let exists = fileManager.fileExists(atPath: folder.path, isDirectory: &isDir)
23-
XCTAssertTrue(exists && isDir.boolValue, "Folder should be created and be a directory")
24-
}
2516
}

0 commit comments

Comments
 (0)