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 c92e847ed7
commit 173b39a07f
118 changed files with 4630 additions and 4129 deletions

View File

@@ -7,105 +7,108 @@
//
@testable import ElementX
import XCTest
import Testing
@MainActor
class SessionVerificationStateMachineTests: XCTestCase {
private var stateMachine: SessionVerificationScreenStateMachine!
@Suite
struct SessionVerificationStateMachineTests {
private var stateMachine: SessionVerificationScreenStateMachine
@MainActor
override func setUpWithError() throws {
init() {
stateMachine = SessionVerificationScreenStateMachine(state: .initial)
}
func testAcceptChallenge() {
XCTAssertEqual(stateMachine.state, .initial)
@Test
func acceptChallenge() {
#expect(stateMachine.state == .initial)
stateMachine.processEvent(.requestVerification)
XCTAssertEqual(stateMachine.state, .requestingVerification)
#expect(stateMachine.state == .requestingVerification)
stateMachine.processEvent(.didAcceptVerificationRequest)
XCTAssertEqual(stateMachine.state, .verificationRequestAccepted)
#expect(stateMachine.state == .verificationRequestAccepted)
stateMachine.processEvent(.didStartSasVerification)
XCTAssertEqual(stateMachine.state, .sasVerificationStarted)
#expect(stateMachine.state == .sasVerificationStarted)
stateMachine.processEvent(.didReceiveChallenge(emojis: SessionVerificationControllerProxyMock.emojis))
XCTAssertEqual(stateMachine.state, .showingChallenge(emojis: SessionVerificationControllerProxyMock.emojis))
#expect(stateMachine.state == .showingChallenge(emojis: SessionVerificationControllerProxyMock.emojis))
stateMachine.processEvent(.acceptChallenge)
XCTAssertEqual(stateMachine.state, .acceptingChallenge(emojis: SessionVerificationControllerProxyMock.emojis))
#expect(stateMachine.state == .acceptingChallenge(emojis: SessionVerificationControllerProxyMock.emojis))
stateMachine.processEvent(.didAcceptChallenge)
XCTAssertEqual(stateMachine.state, .verified)
#expect(stateMachine.state == .verified)
}
func testDeclineChallenge() {
XCTAssertEqual(stateMachine.state, .initial)
@Test
func declineChallenge() {
#expect(stateMachine.state == .initial)
stateMachine.processEvent(.requestVerification)
XCTAssertEqual(stateMachine.state, .requestingVerification)
#expect(stateMachine.state == .requestingVerification)
stateMachine.processEvent(.didAcceptVerificationRequest)
XCTAssertEqual(stateMachine.state, .verificationRequestAccepted)
#expect(stateMachine.state == .verificationRequestAccepted)
stateMachine.processEvent(.didStartSasVerification)
XCTAssertEqual(stateMachine.state, .sasVerificationStarted)
#expect(stateMachine.state == .sasVerificationStarted)
stateMachine.processEvent(.didReceiveChallenge(emojis: SessionVerificationControllerProxyMock.emojis))
XCTAssertEqual(stateMachine.state, .showingChallenge(emojis: SessionVerificationControllerProxyMock.emojis))
#expect(stateMachine.state == .showingChallenge(emojis: SessionVerificationControllerProxyMock.emojis))
stateMachine.processEvent(.declineChallenge)
XCTAssertEqual(stateMachine.state, .decliningChallenge(emojis: SessionVerificationControllerProxyMock.emojis))
#expect(stateMachine.state == .decliningChallenge(emojis: SessionVerificationControllerProxyMock.emojis))
stateMachine.processEvent(.didCancel)
XCTAssertEqual(stateMachine.state, .cancelled)
#expect(stateMachine.state == .cancelled)
stateMachine.processEvent(.restart)
XCTAssertEqual(stateMachine.state, .initial)
#expect(stateMachine.state == .initial)
}
func testCancellation() {
XCTAssertEqual(stateMachine.state, .initial)
@Test
func cancellation() {
#expect(stateMachine.state == .initial)
stateMachine.processEvent(.requestVerification)
XCTAssertEqual(stateMachine.state, .requestingVerification)
#expect(stateMachine.state == .requestingVerification)
stateMachine.processEvent(.cancel)
XCTAssertEqual(stateMachine.state, .cancelling)
#expect(stateMachine.state == .cancelling)
stateMachine.processEvent(.didCancel)
XCTAssertEqual(stateMachine.state, .cancelled)
#expect(stateMachine.state == .cancelled)
// This duplication is intentional
stateMachine.processEvent(.didCancel)
XCTAssertEqual(stateMachine.state, .cancelled)
#expect(stateMachine.state == .cancelled)
stateMachine.processEvent(.restart)
XCTAssertEqual(stateMachine.state, .initial)
#expect(stateMachine.state == .initial)
stateMachine.processEvent(.requestVerification)
XCTAssertEqual(stateMachine.state, .requestingVerification)
#expect(stateMachine.state == .requestingVerification)
stateMachine.processEvent(.didAcceptVerificationRequest)
XCTAssertEqual(stateMachine.state, .verificationRequestAccepted)
#expect(stateMachine.state == .verificationRequestAccepted)
stateMachine.processEvent(.didStartSasVerification)
XCTAssertEqual(stateMachine.state, .sasVerificationStarted)
#expect(stateMachine.state == .sasVerificationStarted)
stateMachine.processEvent(.didReceiveChallenge(emojis: SessionVerificationControllerProxyMock.emojis))
XCTAssertEqual(stateMachine.state, .showingChallenge(emojis: SessionVerificationControllerProxyMock.emojis))
#expect(stateMachine.state == .showingChallenge(emojis: SessionVerificationControllerProxyMock.emojis))
stateMachine.processEvent(.cancel)
XCTAssertEqual(stateMachine.state, .cancelling)
#expect(stateMachine.state == .cancelling)
stateMachine.processEvent(.didCancel)
XCTAssertEqual(stateMachine.state, .cancelled)
#expect(stateMachine.state == .cancelled)
stateMachine.processEvent(.restart)
XCTAssertEqual(stateMachine.state, .initial)
#expect(stateMachine.state == .initial)
stateMachine.processEvent(.restart)
XCTAssertEqual(stateMachine.state, .initial)
#expect(stateMachine.state == .initial)
}
}