Swift Testing for Unit Tests PART 1 (#5119)

* migrated a lot of unit tests to Swift Testing and added a new implementation for deferred fulfillment

more tests migration

Cleaned the code manually to establish some good patterns

more code improvements

some more code improvements

removed empty tests

update project

* more pr suggestions and cleanups

* removed the TestSetup pattern

* fixing claude not reusing tests

* pr suggestion + added indent rule to swiftformat so that we can prevent AIs to change that
This commit is contained in:
Mauro
2026-02-19 16:20:47 +01:00
committed by GitHub
parent fc03e05697
commit 7982aef855
118 changed files with 4630 additions and 4129 deletions
+44 -34
View File
@@ -8,15 +8,17 @@
@testable import ElementX
import Foundation
import XCTest
import Testing
final class UserPreferenceTests: XCTestCase {
override func setUpWithError() throws {
@Suite
struct UserPreferenceTests {
init() {
UserDefaults.testDefaults.removeVolatileDomain(forName: .userDefaultsSuiteName)
UserDefaults.testDefaults.removePersistentDomain(forName: .userDefaultsSuiteName)
}
func testStorePlistValue() {
@Test
func storePlistValue() {
let setPreference = {
let value = TestPreferences()
value.plist = "Hello"
@@ -26,12 +28,13 @@ final class UserPreferenceTests: XCTestCase {
let value = TestPreferences()
XCTAssertEqual(value.plist, "Hello")
XCTAssertNotNil(UserDefaults.testDefaults.string(forKey: .key2), "Hello")
XCTAssertNil(UserDefaults.testDefaults.data(forKey: .key2), "Hello")
#expect(value.plist == "Hello")
#expect(UserDefaults.testDefaults.string(forKey: .key2) != nil)
#expect(UserDefaults.testDefaults.data(forKey: .key2) == nil)
}
func testStoreCodableValue() {
@Test
func storeCodableValue() {
let storedType = CodableTestType(a: "some", b: [1, 2, 3])
let setPreference = {
@@ -43,11 +46,12 @@ final class UserPreferenceTests: XCTestCase {
let value = TestPreferences()
XCTAssertEqual(value.codable, storedType)
XCTAssertNotNil(UserDefaults.testDefaults.data(forKey: .key3))
#expect(value.codable == storedType)
#expect(UserDefaults.testDefaults.data(forKey: .key3) != nil)
}
func testStorePlistValueOnVolatileStorage() {
@Test
func storePlistValueOnVolatileStorage() {
let setPreference = {
let value = TestPreferences()
value.volatileVar = "Hello"
@@ -57,10 +61,11 @@ final class UserPreferenceTests: XCTestCase {
let value = TestPreferences()
XCTAssertNil(value.volatileVar)
#expect(value.volatileVar == nil)
}
func testStoreCodableValueOnVolatileStorage() {
@Test
func storeCodableValueOnVolatileStorage() {
let storedType = CodableTestType(a: "some", b: [1, 2, 3])
let setPreference = {
@@ -72,11 +77,12 @@ final class UserPreferenceTests: XCTestCase {
let value = TestPreferences()
XCTAssertNil(value.volatileCodable)
XCTAssertNil(UserDefaults.testDefaults.data(forKey: .key4))
#expect(value.volatileCodable == nil)
#expect(UserDefaults.testDefaults.data(forKey: .key4) == nil)
}
func testStorePlistArray() {
@Test
func storePlistArray() {
let setPreference = {
let value = TestPreferences()
value.plistArray = [1, 2, 3]
@@ -86,12 +92,13 @@ final class UserPreferenceTests: XCTestCase {
let value = TestPreferences()
XCTAssertEqual(value.plistArray, [1, 2, 3])
XCTAssertEqual(UserDefaults.testDefaults.array(forKey: .key5) as? [Int], [1, 2, 3])
XCTAssertNil(UserDefaults.testDefaults.data(forKey: .key5), "Hello")
#expect(value.plistArray == [1, 2, 3])
#expect(UserDefaults.testDefaults.array(forKey: .key5) as? [Int] == [1, 2, 3])
#expect(UserDefaults.testDefaults.data(forKey: .key5) == nil)
}
func testAssignNilToPlistType() {
@Test
func assignNilToPlistType() {
let setPreference = {
let value = TestPreferences()
value.plist = "Hello"
@@ -102,11 +109,12 @@ final class UserPreferenceTests: XCTestCase {
let value = TestPreferences()
value.plist = nil
XCTAssertNil(value.plist)
XCTAssertNil(UserDefaults.testDefaults.string(forKey: .key2))
#expect(value.plist == nil)
#expect(UserDefaults.testDefaults.string(forKey: .key2) == nil)
}
func testAssignNilToCodableType() {
@Test
func assignNilToCodableType() {
let storedType = CodableTestType(a: "some", b: [1, 2, 3])
let setPreference = {
@@ -119,31 +127,33 @@ final class UserPreferenceTests: XCTestCase {
let value = TestPreferences()
value.codable = nil
XCTAssertNil(value.codable)
XCTAssertNil(UserDefaults.testDefaults.data(forKey: .key3))
#expect(value.codable == nil)
#expect(UserDefaults.testDefaults.data(forKey: .key3) == nil)
}
func testLocalOverRemoteValue() {
@Test
func localOverRemoteValue() {
@UserPreference(key: "testKey", defaultValue: "", storageType: .userDefaults(.testDefaults)) var preference
XCTAssertEqual(preference, "")
#expect(preference == "")
_preference.remoteValue = "remote"
XCTAssertEqual(preference, "remote")
#expect(preference == "remote")
preference = "local"
XCTAssertEqual(preference, "local")
#expect(preference == "local")
}
func testRemoteOverLocalValue() {
@Test
func remoteOverLocalValue() {
@UserPreference(key: "testKey", defaultValue: "", storageType: .userDefaults(.testDefaults), mode: .remoteOverLocal) var preference
XCTAssertEqual(preference, "")
#expect(preference == "")
_preference.remoteValue = "remote"
XCTAssertEqual(preference, "remote")
#expect(preference == "remote")
preference = "local"
XCTAssertEqual(preference, "remote")
XCTAssertTrue(_preference.isLockedToRemote)
#expect(preference == "remote")
#expect(_preference.isLockedToRemote)
}
}