Skip to content

Commit 5975ef6

Browse files
committed
Add test coverage to previews
1 parent ff442ca commit 5975ef6

File tree

8 files changed

+71
-3
lines changed

8 files changed

+71
-3
lines changed

Sources/StreamChatSwiftUI/ChatChannelList/ChatChannelListItem.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ public struct ChatChannelListItem<Factory: ViewFactory>: View {
107107
}
108108
}
109109
if utils.messageListConfig.draftMessagesEnabled, let draftText = channel.draftMessageText {
110-
HStack {
110+
HStack(spacing: 2) {
111111
Text("\(L10n.Message.Preview.draft):")
112112
.font(fonts.caption1).bold()
113113
.foregroundColor(Color(colors.highlightedAccentBackground))

Sources/StreamChatSwiftUI/ChatThreadList/ChatThreadListItem.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ struct ChatThreadListItemContentView: View {
186186
.font(fonts.subheadlineBold)
187187
HStack {
188188
if let draftText {
189-
HStack {
189+
HStack(spacing: 2) {
190190
draftPrefixView
191191
SubtitleText(text: draftText)
192192
}

StreamChatSwiftUITests/Tests/ChatChannelList/ChatChannelListItemView_Tests.swift

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,9 @@ final class ChatChannelListItemView_Tests: StreamChatTestCase {
1818
streamChat?.utils.channelHeaderLoader.placeholder2 = circleImage
1919
streamChat?.utils.channelHeaderLoader.placeholder3 = circleImage
2020
streamChat?.utils.channelHeaderLoader.placeholder4 = circleImage
21+
streamChat?.utils.messageListConfig = .init(draftMessagesEnabled: true)
2122
}
22-
23+
2324
func test_channelListItem_audioMessage() throws {
2425
// Given
2526
let message = try mockAudioMessage(text: "Audio", isSentByCurrentUser: true)
@@ -202,6 +203,46 @@ final class ChatChannelListItemView_Tests: StreamChatTestCase {
202203
assertSnapshot(matching: view, as: .image(perceptualPrecision: precision))
203204
}
204205

206+
func test_channelListItem_draftMessage() throws {
207+
// Given
208+
let message = DraftMessage.mock(text: "Draft message")
209+
let channel = ChatChannel.mock(cid: .unique, previewMessage: .mock(), draftMessage: message)
210+
211+
// When
212+
let view = ChatChannelListItem(
213+
channel: channel,
214+
channelName: "Test",
215+
avatar: .circleImage,
216+
onlineIndicatorShown: true,
217+
onItemTap: { _ in }
218+
)
219+
.frame(width: defaultScreenSize.width)
220+
221+
// Then
222+
assertSnapshot(matching: view, as: .image(perceptualPrecision: precision))
223+
}
224+
225+
func test_channelListItem_draftMessageWithAttachment() throws {
226+
// Given
227+
let message = DraftMessage.mock(text: "Draft message", attachments: [.dummy(payload: try JSONEncoder().encode(
228+
ImageAttachmentPayload(title: "Test", imageRemoteURL: .localYodaImage, file: .init(url: .localYodaImage))
229+
))])
230+
let channel = ChatChannel.mock(cid: .unique, previewMessage: .mock(), draftMessage: message)
231+
232+
// When
233+
let view = ChatChannelListItem(
234+
channel: channel,
235+
channelName: "Test",
236+
avatar: .circleImage,
237+
onlineIndicatorShown: true,
238+
onItemTap: { _ in }
239+
)
240+
.frame(width: defaultScreenSize.width)
241+
242+
// Then
243+
assertSnapshot(matching: view, as: .image(perceptualPrecision: precision))
244+
}
245+
205246
// MARK: - private
206247

207248
private func mockAudioMessage(text: String, isSentByCurrentUser: Bool) throws -> ChatMessage {
18.3 KB
Loading
Loading

StreamChatSwiftUITests/Tests/ChatThreadList/ChatThreadListItemView_Tests.swift

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ final class ChatThreadListItemView_Tests: StreamChatTestCase {
2323
streamChat?.utils.channelHeaderLoader.placeholder2 = circleImage
2424
streamChat?.utils.channelHeaderLoader.placeholder3 = circleImage
2525
streamChat?.utils.channelHeaderLoader.placeholder4 = circleImage
26+
streamChat?.utils.messageListConfig = .init(draftMessagesEnabled: true)
2627

2728
currentUser = ChatUser.mock(id: StreamChatTestCase.currentUserId, name: "Vader", imageURL: nil)
2829

@@ -130,6 +131,32 @@ final class ChatThreadListItemView_Tests: StreamChatTestCase {
130131

131132
assertSnapshot(matching: view, as: .image(perceptualPrecision: precision))
132133
}
134+
135+
func test_threadListItem_whenDraftMessage() {
136+
let thread = mockThread
137+
.with(parentMessage: .mock(text: "Parent", draftReply: .mock(text: "Draft message")))
138+
139+
let view = ChatThreadListItem(thread: thread)
140+
.frame(width: defaultScreenSize.width)
141+
142+
assertSnapshot(matching: view, as: .image(perceptualPrecision: precision))
143+
}
144+
145+
func test_threadListItem_whenDraftMessageHasAttachment() throws {
146+
let message = DraftMessage.mock(text: "Draft message", attachments: [.dummy(payload: try JSONEncoder().encode(
147+
ImageAttachmentPayload(title: "Test", imageRemoteURL: .localYodaImage, file: .init(url: .localYodaImage))
148+
))])
149+
let thread = mockThread
150+
.with(parentMessage: .mock(
151+
text: "Parent",
152+
draftReply: message
153+
))
154+
155+
let view = ChatThreadListItem(thread: thread)
156+
.frame(width: defaultScreenSize.width)
157+
158+
assertSnapshot(matching: view, as: .image(perceptualPrecision: precision))
159+
}
133160
}
134161

135162
extension ChatThreadListItem {
38.9 KB
Loading
Loading

0 commit comments

Comments
 (0)