Auto-Mocking with Sourcery (#597)

* work in progress, was able to generate a mock for the RoomProxyProtocol, I'll try if I can swap the mock we have with this one

* removing swiftformat from generated

* added the disable of swiftlint directly into the .stencil

* testing if danger still complains

* improved the stencil

* session verification controller proxy using auto mockable

* BugReport mocks and tests added

* changelog

* fixing a typo

Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>

* fix typo in the test

Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>

* removing the Protocol word from the type if present

* using extension in place of a subclass

* removed unused imports

* improved the yielding code

* moved Sourcery files

* stencil master

---------

Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>
This commit is contained in:
Mauro
2023-03-08 17:04:31 +01:00
committed by GitHub
parent 7d35876753
commit c67c4e362e
20 changed files with 554 additions and 148 deletions
@@ -23,22 +23,22 @@ import XCTest
class SessionVerificationViewModelTests: XCTestCase {
var viewModel: SessionVerificationViewModelProtocol!
var context: SessionVerificationViewModelType.Context!
var sessionVerificationController: SessionVerificationControllerProxyProtocol!
var sessionVerificationController: SessionVerificationControllerProxyMock!
@MainActor
override func setUpWithError() throws {
sessionVerificationController = MockSessionVerificationControllerProxy()
sessionVerificationController = SessionVerificationControllerProxyMock.configureMock()
viewModel = SessionVerificationViewModel(sessionVerificationControllerProxy: sessionVerificationController)
context = viewModel.context
}
func testRequestVerification() async {
func testRequestVerification() async throws {
XCTAssertEqual(context.viewState.verificationState, .initial)
context.send(viewAction: .requestVerification)
await Task.yield()
try await Task.sleep(for: .milliseconds(100))
XCTAssert(sessionVerificationController.requestVerificationCallsCount == 1)
XCTAssertEqual(context.viewState.verificationState, .requestingVerification)
}
@@ -53,7 +53,7 @@ class SessionVerificationViewModelTests: XCTestCase {
XCTAssertEqual(context.viewState.verificationState, .cancelling)
try await Task.sleep(nanoseconds: 100_000_000)
try await Task.sleep(for: .milliseconds(100))
XCTAssertEqual(context.viewState.verificationState, .cancelled)
@@ -62,6 +62,9 @@ class SessionVerificationViewModelTests: XCTestCase {
await Task.yield()
XCTAssertEqual(context.viewState.verificationState, .initial)
XCTAssert(sessionVerificationController.requestVerificationCallsCount == 1)
XCTAssert(sessionVerificationController.cancelVerificationCallsCount == 1)
}
func testReceiveChallenge() {
@@ -93,6 +96,7 @@ class SessionVerificationViewModelTests: XCTestCase {
wait(for: [waitForAcceptance], timeout: 10.0)
XCTAssertEqual(context.viewState.verificationState, .verified)
XCTAssert(sessionVerificationController.approveVerificationCallsCount == 1)
}
func testDeclineChallenge() {
@@ -120,6 +124,7 @@ class SessionVerificationViewModelTests: XCTestCase {
wait(for: [expectation], timeout: 10.0)
XCTAssertEqual(context.viewState.verificationState, .cancelled)
XCTAssert(sessionVerificationController.declineVerificationCallsCount == 1)
}
// MARK: - Private
@@ -157,6 +162,9 @@ class SessionVerificationViewModelTests: XCTestCase {
XCTAssertEqual(context.viewState.verificationState, .sasVerificationStarted)
wait(for: [verificationDataReceivalExpectation], timeout: 10.0)
XCTAssertEqual(context.viewState.verificationState, .showingChallenge(emojis: MockSessionVerificationControllerProxy.emojis))
XCTAssertEqual(context.viewState.verificationState, .showingChallenge(emojis: SessionVerificationControllerProxyMock.emojis))
XCTAssert(sessionVerificationController.requestVerificationCallsCount == 1)
XCTAssert(sessionVerificationController.startSasVerificationCallsCount == 1)
}
}