UITests and Mock Screens

Adds the test targets for Unit and UI tests
Adds mock screen data and utilities to render each mock screen for previews/ui tests.
Changes Published property in the service to CurrentValueSubject. we don't need the synthesized aspect of Published and property wrappers cannot be included in protocols.
This commit is contained in:
David Langley
2021-09-09 16:23:00 +01:00
parent c7524fd16e
commit 2d212ddd8e
14 changed files with 306 additions and 37 deletions

View File

@@ -27,8 +27,6 @@ class TemplateUserProfileService: TemplateUserProfileServiceProtocol {
private let session: MXSession
private var listenerReference: Any?
@Published private var presence: TemplateUserProfilePresence = .offline
// MARK: Public
var userId: String {
@@ -43,14 +41,13 @@ class TemplateUserProfileService: TemplateUserProfileServiceProtocol {
session.myUser.avatarUrl
}
var presencePublisher: AnyPublisher<TemplateUserProfilePresence, Never> {
$presence.eraseToAnyPublisher()
}
private(set) var presenceSubject: CurrentValueSubject<TemplateUserProfilePresence, Never>
// MARK: - Setup
init(session: MXSession) {
self.session = session
self.presenceSubject = CurrentValueSubject(TemplateUserProfilePresence(mxPresence: session.myUser.presence))
self.listenerReference = setupPresenceListener()
}
@@ -65,7 +62,7 @@ class TemplateUserProfileService: TemplateUserProfileServiceProtocol {
let event = event,
case .presence = MXEventType(identifier: event.eventId)
else { return }
self.presence = TemplateUserProfilePresence(mxPresence: self.session.myUser.presence)
self.presenceSubject.send(TemplateUserProfilePresence(mxPresence: self.session.myUser.presence))
}
// TODO: Add log back when abstract logger added to RiotSwiftUI
// if reference == nil {