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
@@ -9,34 +9,37 @@
import Combine
@testable import ElementX
import Foundation
import XCTest
import Testing
@MainActor
class MediaPlayerProviderTests: XCTestCase {
private var mediaPlayerProvider: MediaPlayerProvider!
@Suite
struct MediaPlayerProviderTests {
private var mediaPlayerProvider: MediaPlayerProvider
private let oggMimeType = "audio/ogg"
private let someURL = URL.mockMXCAudio
private let someOtherURL = URL.mockMXCFile
override func setUp() async throws {
init() async {
mediaPlayerProvider = MediaPlayerProvider()
}
func testPlayerStates() {
@Test
func playerStates() {
let audioPlayerStateId = AudioPlayerStateIdentifier.timelineItemIdentifier(.randomEvent)
// By default, there should be no player state
XCTAssertNil(mediaPlayerProvider.playerState(for: audioPlayerStateId))
#expect(mediaPlayerProvider.playerState(for: audioPlayerStateId) == nil)
let audioPlayerState = AudioPlayerState(id: audioPlayerStateId, title: "", duration: 10.0)
mediaPlayerProvider.register(audioPlayerState: audioPlayerState)
XCTAssertEqual(audioPlayerState, mediaPlayerProvider.playerState(for: audioPlayerStateId))
#expect(audioPlayerState == mediaPlayerProvider.playerState(for: audioPlayerStateId))
mediaPlayerProvider.unregister(audioPlayerState: audioPlayerState)
XCTAssertNil(mediaPlayerProvider.playerState(for: audioPlayerStateId))
#expect(mediaPlayerProvider.playerState(for: audioPlayerStateId) == nil)
}
func testDetachAllStates() {
@Test
func detachAllStates() {
let audioPlayer = AudioPlayerMock()
audioPlayer.actions = PassthroughSubject<AudioPlayerAction, Never>().eraseToAnyPublisher()
@@ -45,17 +48,18 @@ class MediaPlayerProviderTests: XCTestCase {
mediaPlayerProvider.register(audioPlayerState: audioPlayerState)
audioPlayerState.attachAudioPlayer(audioPlayer)
let isAttached = audioPlayerState.isAttached
XCTAssertTrue(isAttached)
#expect(isAttached)
}
mediaPlayerProvider.detachAllStates(except: nil)
for audioPlayerState in audioPlayerStates {
let isAttached = audioPlayerState.isAttached
XCTAssertFalse(isAttached)
#expect(!isAttached)
}
}
func testDetachAllStatesWithException() {
@Test
func detachAllStatesWithException() {
let audioPlayer = AudioPlayerMock()
audioPlayer.actions = PassthroughSubject<AudioPlayerAction, Never>().eraseToAnyPublisher()
@@ -64,7 +68,7 @@ class MediaPlayerProviderTests: XCTestCase {
mediaPlayerProvider.register(audioPlayerState: audioPlayerState)
audioPlayerState.attachAudioPlayer(audioPlayer)
let isAttached = audioPlayerState.isAttached
XCTAssertTrue(isAttached)
#expect(isAttached)
}
let exception = audioPlayerStates[1]
@@ -72,9 +76,9 @@ class MediaPlayerProviderTests: XCTestCase {
for audioPlayerState in audioPlayerStates {
let isAttached = audioPlayerState.isAttached
if audioPlayerState == exception {
XCTAssertTrue(isAttached)
#expect(isAttached)
} else {
XCTAssertFalse(isAttached)
#expect(!isAttached)
}
}
}