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:
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user