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:
@@ -8,11 +8,14 @@
|
||||
|
||||
import Combine
|
||||
@testable import ElementX
|
||||
import XCTest
|
||||
import Foundation
|
||||
import Testing
|
||||
|
||||
@MainActor
|
||||
class PillContextTests: XCTestCase {
|
||||
func testUser() async {
|
||||
@Suite
|
||||
struct PillContextTests {
|
||||
@Test
|
||||
func user() async {
|
||||
let id = "@test:matrix.org"
|
||||
let proxyMock = JoinedRoomProxyMock(.init(name: "Test"))
|
||||
let subject = CurrentValueSubject<[RoomMemberProxyProtocol], Never>([])
|
||||
@@ -30,19 +33,20 @@ class PillContextTests: XCTestCase {
|
||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||
let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .user(userID: id), font: .preferredFont(forTextStyle: .body)))
|
||||
|
||||
XCTAssertFalse(context.viewState.isOwnMention)
|
||||
XCTAssertEqual(context.viewState.displayText, id)
|
||||
#expect(!context.viewState.isOwnMention)
|
||||
#expect(context.viewState.displayText == id)
|
||||
|
||||
let name = "Mr. Test"
|
||||
let avatarURL = URL(string: "https://test.jpg")
|
||||
subject.send([RoomMemberProxyMock(with: .init(userID: id, displayName: name, avatarURL: avatarURL, membership: .join))])
|
||||
await Task.yield()
|
||||
|
||||
XCTAssertFalse(context.viewState.isOwnMention)
|
||||
XCTAssertEqual(context.viewState.displayText, "@\(name)")
|
||||
#expect(!context.viewState.isOwnMention)
|
||||
#expect(context.viewState.displayText == "@\(name)")
|
||||
}
|
||||
|
||||
func testOwnUser() {
|
||||
@Test
|
||||
func ownUser() {
|
||||
let id = "@test:matrix.org"
|
||||
let proxyMock = JoinedRoomProxyMock(.init(name: "Test", ownUserID: id))
|
||||
let subject = CurrentValueSubject<[RoomMemberProxyProtocol], Never>([])
|
||||
@@ -60,10 +64,11 @@ class PillContextTests: XCTestCase {
|
||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||
let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .user(userID: id), font: .preferredFont(forTextStyle: .body)))
|
||||
|
||||
XCTAssertTrue(context.viewState.isOwnMention)
|
||||
#expect(context.viewState.isOwnMention)
|
||||
}
|
||||
|
||||
func testAllUsers() {
|
||||
@Test
|
||||
func allUsers() {
|
||||
let avatarURL = URL(string: "https://matrix.jpg")
|
||||
let id = "test_room"
|
||||
let displayName = "Test"
|
||||
@@ -83,11 +88,12 @@ class PillContextTests: XCTestCase {
|
||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||
let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .allUsers, font: .preferredFont(forTextStyle: .body)))
|
||||
|
||||
XCTAssertTrue(context.viewState.isOwnMention)
|
||||
XCTAssertEqual(context.viewState.displayText, PillUtilities.atRoom)
|
||||
#expect(context.viewState.isOwnMention)
|
||||
#expect(context.viewState.displayText == PillUtilities.atRoom)
|
||||
}
|
||||
|
||||
func testRoomIDMention() {
|
||||
@Test
|
||||
func roomIDMention() {
|
||||
let proxyMock = JoinedRoomProxyMock(.init())
|
||||
let mockController = MockTimelineController()
|
||||
let clientMock = ClientProxyMock(.init())
|
||||
@@ -106,12 +112,13 @@ class PillContextTests: XCTestCase {
|
||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||
let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .roomID("1"), font: .preferredFont(forTextStyle: .body)))
|
||||
|
||||
XCTAssertFalse(context.viewState.isOwnMention)
|
||||
XCTAssertFalse(context.viewState.isUndefined)
|
||||
XCTAssertEqual(context.viewState.displayText, "#Foundation 🔭🪐🌌")
|
||||
#expect(!context.viewState.isOwnMention)
|
||||
#expect(!context.viewState.isUndefined)
|
||||
#expect(context.viewState.displayText == "#Foundation 🔭🪐🌌")
|
||||
}
|
||||
|
||||
func testRoomIDMentionMissingRoom() {
|
||||
@Test
|
||||
func roomIDMentionMissingRoom() {
|
||||
let proxyMock = JoinedRoomProxyMock(.init())
|
||||
let mockController = MockTimelineController()
|
||||
mockController.roomProxy = proxyMock
|
||||
@@ -128,12 +135,13 @@ class PillContextTests: XCTestCase {
|
||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||
let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .roomID("1"), font: .preferredFont(forTextStyle: .body)))
|
||||
|
||||
XCTAssertFalse(context.viewState.isOwnMention)
|
||||
XCTAssertFalse(context.viewState.isUndefined)
|
||||
XCTAssertEqual(context.viewState.displayText, "1")
|
||||
#expect(!context.viewState.isOwnMention)
|
||||
#expect(!context.viewState.isUndefined)
|
||||
#expect(context.viewState.displayText == "1")
|
||||
}
|
||||
|
||||
func testRoomAliasMention() {
|
||||
@Test
|
||||
func roomAliasMention() {
|
||||
let proxyMock = JoinedRoomProxyMock(.init())
|
||||
let mockController = MockTimelineController()
|
||||
mockController.roomProxy = proxyMock
|
||||
@@ -154,12 +162,13 @@ class PillContextTests: XCTestCase {
|
||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||
let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .roomAlias("#foundation-and-empire:matrix.org"), font: .preferredFont(forTextStyle: .body)))
|
||||
|
||||
XCTAssertFalse(context.viewState.isOwnMention)
|
||||
XCTAssertFalse(context.viewState.isUndefined)
|
||||
XCTAssertEqual(context.viewState.displayText, "#Foundation and Empire")
|
||||
#expect(!context.viewState.isOwnMention)
|
||||
#expect(!context.viewState.isUndefined)
|
||||
#expect(context.viewState.displayText == "#Foundation and Empire")
|
||||
}
|
||||
|
||||
func testRoomAliasMentionMissingRoom() {
|
||||
@Test
|
||||
func roomAliasMentionMissingRoom() {
|
||||
let proxyMock = JoinedRoomProxyMock(.init())
|
||||
let mockController = MockTimelineController()
|
||||
mockController.roomProxy = proxyMock
|
||||
@@ -176,12 +185,13 @@ class PillContextTests: XCTestCase {
|
||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||
let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .roomAlias("#foundation-and-empire:matrix.org"), font: .preferredFont(forTextStyle: .body)))
|
||||
|
||||
XCTAssertFalse(context.viewState.isOwnMention)
|
||||
XCTAssertFalse(context.viewState.isUndefined)
|
||||
XCTAssertEqual(context.viewState.displayText, "#foundation-and-empire:matrix.org")
|
||||
#expect(!context.viewState.isOwnMention)
|
||||
#expect(!context.viewState.isUndefined)
|
||||
#expect(context.viewState.displayText == "#foundation-and-empire:matrix.org")
|
||||
}
|
||||
|
||||
func testEventOnRoomIDMention() {
|
||||
@Test
|
||||
func eventOnRoomIDMention() {
|
||||
let proxyMock = JoinedRoomProxyMock(.init())
|
||||
let mockController = MockTimelineController()
|
||||
mockController.roomProxy = proxyMock
|
||||
@@ -200,12 +210,13 @@ class PillContextTests: XCTestCase {
|
||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||
let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .event(room: .roomID("1")), font: .preferredFont(forTextStyle: .body)))
|
||||
|
||||
XCTAssertFalse(context.viewState.isOwnMention)
|
||||
XCTAssertFalse(context.viewState.isUndefined)
|
||||
XCTAssertEqual(context.viewState.displayText, "💬 > #Foundation 🔭🪐🌌")
|
||||
#expect(!context.viewState.isOwnMention)
|
||||
#expect(!context.viewState.isUndefined)
|
||||
#expect(context.viewState.displayText == "💬 > #Foundation 🔭🪐🌌")
|
||||
}
|
||||
|
||||
func testEventOnRoomIDMentionMissingRoom() {
|
||||
@Test
|
||||
func eventOnRoomIDMentionMissingRoom() {
|
||||
let proxyMock = JoinedRoomProxyMock(.init())
|
||||
let mockController = MockTimelineController()
|
||||
mockController.roomProxy = proxyMock
|
||||
@@ -222,12 +233,13 @@ class PillContextTests: XCTestCase {
|
||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||
let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .event(room: .roomID("1")), font: .preferredFont(forTextStyle: .body)))
|
||||
|
||||
XCTAssertFalse(context.viewState.isOwnMention)
|
||||
XCTAssertFalse(context.viewState.isUndefined)
|
||||
XCTAssertEqual(context.viewState.displayText, "💬 > 1")
|
||||
#expect(!context.viewState.isOwnMention)
|
||||
#expect(!context.viewState.isUndefined)
|
||||
#expect(context.viewState.displayText == "💬 > 1")
|
||||
}
|
||||
|
||||
func testEventOnRoomAliasMention() {
|
||||
@Test
|
||||
func eventOnRoomAliasMention() {
|
||||
let proxyMock = JoinedRoomProxyMock(.init())
|
||||
let mockController = MockTimelineController()
|
||||
mockController.roomProxy = proxyMock
|
||||
@@ -248,12 +260,13 @@ class PillContextTests: XCTestCase {
|
||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||
let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .event(room: .roomAlias("#foundation-and-empire:matrix.org")), font: .preferredFont(forTextStyle: .body)))
|
||||
|
||||
XCTAssertFalse(context.viewState.isOwnMention)
|
||||
XCTAssertFalse(context.viewState.isUndefined)
|
||||
XCTAssertEqual(context.viewState.displayText, "💬 > #Foundation and Empire")
|
||||
#expect(!context.viewState.isOwnMention)
|
||||
#expect(!context.viewState.isUndefined)
|
||||
#expect(context.viewState.displayText == "💬 > #Foundation and Empire")
|
||||
}
|
||||
|
||||
func testEventOnRoomAliasMentionMissingRoom() {
|
||||
@Test
|
||||
func eventOnRoomAliasMentionMissingRoom() {
|
||||
let proxyMock = JoinedRoomProxyMock(.init())
|
||||
let mockController = MockTimelineController()
|
||||
mockController.roomProxy = proxyMock
|
||||
@@ -270,8 +283,8 @@ class PillContextTests: XCTestCase {
|
||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||
let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .event(room: .roomAlias("#foundation-and-empire:matrix.org")), font: .preferredFont(forTextStyle: .body)))
|
||||
|
||||
XCTAssertFalse(context.viewState.isOwnMention)
|
||||
XCTAssertFalse(context.viewState.isUndefined)
|
||||
XCTAssertEqual(context.viewState.displayText, "💬 > #foundation-and-empire:matrix.org")
|
||||
#expect(!context.viewState.isOwnMention)
|
||||
#expect(!context.viewState.isUndefined)
|
||||
#expect(context.viewState.displayText == "💬 > #foundation-and-empire:matrix.org")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user