Cleanup, documentation and ui tests.

This commit is contained in:
David Langley
2021-09-20 08:47:28 +01:00
parent 39409f49b4
commit 205bc35285
46 changed files with 414 additions and 194 deletions
@@ -25,8 +25,10 @@ enum MockTemplateRoomChatScreenState: MockScreenState, CaseIterable {
// A case for each state you want to represent
// with specific, minimal associated data that will allow you
// mock that screen.
case noRooms
case rooms
case initializingRoom
case failedToInitializeRoom
case noMessages
case messages
/// The associated screen
var screenType: Any.Type {
@@ -37,15 +39,22 @@ enum MockTemplateRoomChatScreenState: MockScreenState, CaseIterable {
var screenView: AnyView {
let service: MockTemplateRoomChatService
switch self {
case .noRooms:
case .noMessages:
service = MockTemplateRoomChatService(messages: [])
case .rooms:
service.simulateUpdate(initializationStatus: .initialized)
case .messages:
service = MockTemplateRoomChatService()
service.simulateUpdate(initializationStatus: .initialized)
case .initializingRoom:
service = MockTemplateRoomChatService()
case .failedToInitializeRoom:
service = MockTemplateRoomChatService()
service.simulateUpdate(initializationStatus: .failedToInitialize)
}
let viewModel = TemplateRoomChatViewModel(templateRoomChatService: service)
// can simulate service and viewModel actions here if needs be.
return AnyView(TemplateRoomChat(viewModel: viewModel.context)
.addDependency(MockAvatarService.example))
}
@@ -25,22 +25,27 @@ class MockTemplateRoomChatService: TemplateRoomChatServiceProtocol {
static let amadine = TemplateRoomChatMember(id: "@amadine:matrix.org", avatarUrl: "!aaabaa:matrix.org", displayName: "Amadine")
static let mathew = TemplateRoomChatMember(id: "@mathew:matrix.org", avatarUrl: "!bbabb:matrix.org", displayName: "Mathew")
static let mockMessages = [
TemplateRoomChatMessage(id: "!0:matrix.org", body: "Shall I put it live?", sender: amadine, timestamp: Date(timeIntervalSinceNow: 60 * -3)),
TemplateRoomChatMessage(id: "!1:matrix.org", body: "Yea go for it! ...and then let's head to the pub", sender: mathew, timestamp: Date(timeIntervalSinceNow: 60)),
TemplateRoomChatMessage(id: "!2:matrix.org", body: "Deal.", sender: amadine, timestamp: Date(timeIntervalSinceNow: 60 * -2)),
TemplateRoomChatMessage(id: "!3:matrix.org", body: "Ok, Done. 🍻", sender: amadine, timestamp: Date(timeIntervalSinceNow: 60 * -1)),
TemplateRoomChatMessage(id: "!0:matrix.org", content: .text(TemplateRoomChatMessageTextContent(body: "Shall I put it live?")) , sender: amadine, timestamp: Date(timeIntervalSinceNow: 60 * -3)),
TemplateRoomChatMessage(id: "!1:matrix.org", content: .text(TemplateRoomChatMessageTextContent(body: "Yea go for it! ...and then let's head to the pub")), sender: mathew, timestamp: Date(timeIntervalSinceNow: 60)),
TemplateRoomChatMessage(id: "!2:matrix.org", content: .text(TemplateRoomChatMessageTextContent(body: "Deal.")), sender: amadine, timestamp: Date(timeIntervalSinceNow: 60 * -2)),
TemplateRoomChatMessage(id: "!3:matrix.org", content: .text(TemplateRoomChatMessageTextContent(body: "Ok, Done. 🍻")), sender: amadine, timestamp: Date(timeIntervalSinceNow: 60 * -1)),
]
var roomInitializationStatus: CurrentValueSubject<TemplateRoomChatRoomInitializationStatus, Never>
var chatMessagesSubject: CurrentValueSubject<[TemplateRoomChatMessage], Never>
init(messages: [TemplateRoomChatMessage] = mockMessages) {
chatMessagesSubject = CurrentValueSubject(messages)
self.roomInitializationStatus = CurrentValueSubject(.notInitialized)
self.chatMessagesSubject = CurrentValueSubject(messages)
}
func send(message: String) {
let newMessage = TemplateRoomChatMessage(id: "!\(chatMessagesSubject.value.count):matrix.org", body: message, sender: Self.amadine, timestamp: Date())
func send(textMessage: String) {
let newMessage = TemplateRoomChatMessage(id: "!\(chatMessagesSubject.value.count):matrix.org", content: .text(TemplateRoomChatMessageTextContent(body: textMessage)), sender: Self.amadine, timestamp: Date())
self.chatMessagesSubject.value += [newMessage]
}
func simulateUpdate(initializationStatus: TemplateRoomChatRoomInitializationStatus) {
self.roomInitializationStatus.value = initializationStatus
}
func simulateUpdate(messages: [TemplateRoomChatMessage]) {
self.chatMessagesSubject.send(messages)
}