-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathMessageBusTest.swift
More file actions
114 lines (90 loc) · 3.09 KB
/
Copy pathMessageBusTest.swift
File metadata and controls
114 lines (90 loc) · 3.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
//
// MessageBusTest.swift
// NativeAppTemplate
//
import Foundation
@testable import NativeAppTemplate
import Testing
@MainActor
@Suite
struct MessageBusTest {
@Test
func initialState() {
let bus = MessageBus()
#expect(bus.currentMessage == nil)
#expect(bus.messageVisible == false)
}
@Test
func postMessageSetsCurrentMessage() {
let bus = MessageBus()
bus.post(message: Message(level: .success, message: "Done"))
#expect(bus.currentMessage != nil)
#expect(bus.currentMessage?.message == "Done")
#expect(bus.currentMessage?.level == .success)
#expect(bus.messageVisible == true)
}
@Test
func postErrorMessage() {
let bus = MessageBus()
bus.post(message: Message(level: .error, message: "Failed", autoDismiss: false))
#expect(bus.currentMessage?.level == .error)
#expect(bus.currentMessage?.message == "Failed")
#expect(bus.currentMessage?.autoDismiss == false)
#expect(bus.messageVisible == true)
}
@Test
func dismiss() {
let bus = MessageBus()
bus.post(message: Message(level: .success, message: "Done"))
#expect(bus.messageVisible == true)
bus.dismiss()
#expect(bus.messageVisible == false)
}
@Test
func postReplacesExistingMessage() {
let bus = MessageBus()
bus.post(message: Message(level: .success, message: "First"))
bus.post(message: Message(level: .error, message: "Second"))
#expect(bus.currentMessage?.message == "Second")
#expect(bus.currentMessage?.level == .error)
}
@Test
func snackbarState() {
let message = Message(level: .error, message: "Error occurred")
let snackbarState = message.snackbarState
#expect(snackbarState.status == .error)
#expect(snackbarState.message == "Error occurred")
}
@Test
func messageInitWithCodedError() {
let error = NativeAppTemplateAPIError.noData
let message = Message(error: error)
#expect(message.level == .error)
#expect(message.message == "[NATIVEAPPTEMPLATE-2005] NativeAppTemplateAPIError::NoData")
#expect(message.autoDismiss == false)
}
@Test
func messageInitWithNonCodedError() {
let error = NSError(
domain: "TestDomain",
code: 42,
userInfo: [NSLocalizedDescriptionKey: "Something went wrong"]
)
let message = Message(error: error)
#expect(message.level == .error)
#expect(message.message == "Something went wrong")
#expect(message.autoDismiss == false)
}
@Test
func messageInitWithErrorAutoDismiss() {
let error = NativeAppTemplateAPIError.noData
let message = Message(error: error, autoDismiss: true)
#expect(message.autoDismiss == true)
}
@Test
func messageLevelSnackbarStatus() {
#expect(Message.Level.error.snackbarStatus == .error)
#expect(Message.Level.warning.snackbarStatus == .warning)
#expect(Message.Level.success.snackbarStatus == .success)
}
}