Skip to content

Commit 3d8ac3f

Browse files
added tests for message type resolving
1 parent 88e76ee commit 3d8ac3f

File tree

6 files changed

+346
-33
lines changed

6 files changed

+346
-33
lines changed

Sources/StreamChatSwiftUI/ChatChannel/MessageList/MessageTypeResolver.swift

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,6 @@ public protocol MessageTypeResolving {
4545

4646
/// Default methods implementation of the `MessageTypeResolving` protocol.
4747
extension MessageTypeResolving {
48-
public var groupImageAndGiphy: Bool {
49-
true
50-
}
51-
5248
public func isDeleted(message: ChatMessage) -> Bool {
5349
message.isDeleted
5450
}

StreamChatSwiftUI.xcodeproj/project.pbxproj

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,8 @@
213213
84C94D4F2758FE59007FE2B9 /* ChatChannelTestHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84C94D4E2758FE59007FE2B9 /* ChatChannelTestHelpers.swift */; };
214214
84C94D5127591DE2007FE2B9 /* ChatMessageIDs_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84C94D5027591DE2007FE2B9 /* ChatMessageIDs_Tests.swift */; };
215215
84C94D54275A1380007FE2B9 /* DateUtils_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84C94D53275A1380007FE2B9 /* DateUtils_Tests.swift */; };
216+
84C94D56275A1AE1007FE2B9 /* StringExtensions_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84C94D55275A1AE1007FE2B9 /* StringExtensions_Tests.swift */; };
217+
84C94D58275A1B89007FE2B9 /* MessageTypeResolver_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84C94D57275A1B89007FE2B9 /* MessageTypeResolver_Tests.swift */; };
216218
84EDBC37274FE5CD0057218D /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 84EDBC36274FE5CD0057218D /* Localizable.strings */; };
217219
/* End PBXBuildFile section */
218220

@@ -456,6 +458,8 @@
456458
84C94D4E2758FE59007FE2B9 /* ChatChannelTestHelpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatChannelTestHelpers.swift; sourceTree = "<group>"; };
457459
84C94D5027591DE2007FE2B9 /* ChatMessageIDs_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMessageIDs_Tests.swift; sourceTree = "<group>"; };
458460
84C94D53275A1380007FE2B9 /* DateUtils_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DateUtils_Tests.swift; sourceTree = "<group>"; };
461+
84C94D55275A1AE1007FE2B9 /* StringExtensions_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StringExtensions_Tests.swift; sourceTree = "<group>"; };
462+
84C94D57275A1B89007FE2B9 /* MessageTypeResolver_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessageTypeResolver_Tests.swift; sourceTree = "<group>"; };
459463
84EDBC36274FE5CD0057218D /* Localizable.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; path = Localizable.strings; sourceTree = "<group>"; };
460464
/* End PBXFileReference section */
461465

@@ -963,6 +967,7 @@
963967
84C94D482758BE1C007FE2B9 /* ChatChannelViewModel_Tests.swift */,
964968
84C94D4C2758FD5C007FE2B9 /* MessageComposerViewModel_Tests.swift */,
965969
84C94D5027591DE2007FE2B9 /* ChatMessageIDs_Tests.swift */,
970+
84C94D57275A1B89007FE2B9 /* MessageTypeResolver_Tests.swift */,
966971
84C94D4E2758FE59007FE2B9 /* ChatChannelTestHelpers.swift */,
967972
);
968973
path = ChatChannel;
@@ -972,6 +977,7 @@
972977
isa = PBXGroup;
973978
children = (
974979
84C94D53275A1380007FE2B9 /* DateUtils_Tests.swift */,
980+
84C94D55275A1AE1007FE2B9 /* StringExtensions_Tests.swift */,
975981
);
976982
path = Utils;
977983
sourceTree = "<group>";
@@ -1270,11 +1276,13 @@
12701276
84C94CE127578B92007FE2B9 /* MessageAttachmentPayload.swift in Sources */,
12711277
84C94D54275A1380007FE2B9 /* DateUtils_Tests.swift in Sources */,
12721278
84C94CE527578B92007FE2B9 /* ChatUserSearchController_Mock.swift in Sources */,
1279+
84C94D56275A1AE1007FE2B9 /* StringExtensions_Tests.swift in Sources */,
12731280
84C94D1427578BF3007FE2B9 /* TemporaryData.swift in Sources */,
12741281
84C94D4F2758FE59007FE2B9 /* ChatChannelTestHelpers.swift in Sources */,
12751282
84C94CCC27578B92007FE2B9 /* ChatClientUpdater_Mock.swift in Sources */,
12761283
84C94D0B27578BF2007FE2B9 /* QueueAwareDelegate.swift in Sources */,
12771284
84C94CE427578B92007FE2B9 /* ChatChannelController_Mock.swift in Sources */,
1285+
84C94D58275A1B89007FE2B9 /* MessageTypeResolver_Tests.swift in Sources */,
12781286
84C94D282757954C007FE2B9 /* VirtualTimer.swift in Sources */,
12791287
84C94D442757C704007FE2B9 /* MoreChannelActionsViewModel_Tests.swift in Sources */,
12801288
84C94D5127591DE2007FE2B9 /* ChatMessageIDs_Tests.swift in Sources */,

StreamChatSwiftUITests/Tests/ChatChannel/ChatChannelTestHelpers.swift

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,134 @@ class ChatChannelTestHelpers {
3535
return channelController
3636
}
3737

38+
static let testURL = URL(string: "https://example.com")!
39+
40+
static var imageAttachments: [AnyChatMessageAttachment] = {
41+
let attachmentFile = AttachmentFile(type: .png, size: 0, mimeType: "image/png")
42+
let uploadingState = AttachmentUploadingState(
43+
localFileURL: testURL,
44+
state: .pendingUpload,
45+
file: attachmentFile
46+
)
47+
let imageAttachments: [AnyChatMessageAttachment] = [
48+
ChatMessageImageAttachment(
49+
id: .unique,
50+
type: .image,
51+
payload: ImageAttachmentPayload(
52+
title: "test",
53+
imageRemoteURL: testURL,
54+
imagePreviewRemoteURL: testURL,
55+
extraData: [:]
56+
),
57+
uploadingState: uploadingState
58+
)
59+
.asAnyAttachment
60+
]
61+
62+
return imageAttachments
63+
}()
64+
65+
static var giphyAttachments: [AnyChatMessageAttachment] = {
66+
let attachmentFile = AttachmentFile(type: .gif, size: 0, mimeType: "image/gif")
67+
let uploadingState = AttachmentUploadingState(
68+
localFileURL: testURL,
69+
state: .pendingUpload,
70+
file: attachmentFile
71+
)
72+
let giphyAttachments: [AnyChatMessageAttachment] = [
73+
ChatMessageGiphyAttachment(
74+
id: .unique,
75+
type: .giphy,
76+
payload: GiphyAttachmentPayload(
77+
title: "test",
78+
previewURL: testURL,
79+
actions: []
80+
),
81+
uploadingState: uploadingState
82+
)
83+
.asAnyAttachment
84+
]
85+
86+
return giphyAttachments
87+
}()
88+
89+
static var videoAttachments: [AnyChatMessageAttachment] = {
90+
let attachmentFile = AttachmentFile(type: .mp4, size: 0, mimeType: "video/mp4")
91+
let uploadingState = AttachmentUploadingState(
92+
localFileURL: testURL,
93+
state: .pendingUpload,
94+
file: attachmentFile
95+
)
96+
let giphyAttachments: [AnyChatMessageAttachment] = [
97+
ChatMessageVideoAttachment(
98+
id: .unique,
99+
type: .video,
100+
payload: VideoAttachmentPayload(
101+
title: "test",
102+
videoRemoteURL: testURL,
103+
file: attachmentFile,
104+
extraData: nil
105+
),
106+
uploadingState: uploadingState
107+
)
108+
.asAnyAttachment
109+
]
110+
111+
return giphyAttachments
112+
}()
113+
114+
static var linkAttachments: [AnyChatMessageAttachment] = {
115+
let attachmentFile = AttachmentFile(type: .generic, size: 0, mimeType: "video/mp4")
116+
let uploadingState = AttachmentUploadingState(
117+
localFileURL: testURL,
118+
state: .pendingUpload,
119+
file: attachmentFile
120+
)
121+
let linkAttachments: [AnyChatMessageAttachment] = [
122+
ChatMessageLinkAttachment(
123+
id: .unique,
124+
type: .linkPreview,
125+
payload: LinkAttachmentPayload(
126+
originalURL: testURL,
127+
title: "test",
128+
text: "test",
129+
author: "test",
130+
titleLink: testURL,
131+
assetURL: testURL,
132+
previewURL: testURL
133+
),
134+
uploadingState: uploadingState
135+
)
136+
.asAnyAttachment
137+
]
138+
139+
return linkAttachments
140+
}()
141+
142+
static var fileAttachments: [AnyChatMessageAttachment] = {
143+
let attachmentFile = AttachmentFile(type: .generic, size: 0, mimeType: "video/mp4")
144+
let uploadingState = AttachmentUploadingState(
145+
localFileURL: testURL,
146+
state: .pendingUpload,
147+
file: attachmentFile
148+
)
149+
let fileAttachments: [AnyChatMessageAttachment] = [
150+
ChatMessageFileAttachment(
151+
id: .unique,
152+
type: .file,
153+
payload:
154+
FileAttachmentPayload(
155+
title: "test",
156+
assetRemoteURL: testURL,
157+
file: attachmentFile,
158+
extraData: nil
159+
),
160+
uploadingState: uploadingState
161+
)
162+
.asAnyAttachment
163+
]
164+
165+
return fileAttachments
166+
}()
167+
38168
}

StreamChatSwiftUITests/Tests/ChatChannel/ChatMessageIDs_Tests.swift

Lines changed: 2 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -7,34 +7,7 @@ import XCTest
77
@testable import StreamChat
88

99
class ChatMessageIDs_Tests: XCTestCase {
10-
11-
private static let testURL = URL(string: "https://example.com")!
12-
13-
private var imageAttachments: [AnyChatMessageAttachment] = {
14-
let attachmentFile = AttachmentFile(type: .png, size: 0, mimeType: "image/png")
15-
let uploadingState = AttachmentUploadingState(
16-
localFileURL: testURL,
17-
state: .pendingUpload,
18-
file: attachmentFile
19-
)
20-
let imageAttachments: [AnyChatMessageAttachment] = [
21-
ChatMessageImageAttachment(
22-
id: .unique,
23-
type: .image,
24-
payload: ImageAttachmentPayload(
25-
title: "test",
26-
imageRemoteURL: testURL,
27-
imagePreviewRemoteURL: testURL,
28-
extraData: [:]
29-
),
30-
uploadingState: uploadingState
31-
)
32-
.asAnyAttachment
33-
]
3410

35-
return imageAttachments
36-
}()
37-
3811
func test_chatMessage_reactionScoresId() {
3912
// Given
4013
let id: String = .unique
@@ -86,7 +59,7 @@ class ChatMessageIDs_Tests: XCTestCase {
8659
cid: .unique,
8760
text: "test",
8861
author: .mock(id: .unique),
89-
attachments: imageAttachments
62+
attachments: ChatChannelTestHelpers.imageAttachments
9063
)
9164

9265
// When
@@ -111,7 +84,7 @@ class ChatMessageIDs_Tests: XCTestCase {
11184
reactionScores: [
11285
MessageReactionType(rawValue: reaction): 3
11386
],
114-
attachments: imageAttachments
87+
attachments: ChatChannelTestHelpers.imageAttachments
11588
)
11689

11790
// When
Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
//
2+
// Copyright © 2021 Stream.io Inc. All rights reserved.
3+
//
4+
5+
import XCTest
6+
@testable import StreamChatSwiftUI
7+
@testable import StreamChat
8+
9+
import XCTest
10+
11+
class MessageTypeResolver_Tests: XCTestCase {
12+
13+
private let standardMessage = ChatMessage.mock(
14+
id: .unique,
15+
cid: .unique,
16+
text: "Standard",
17+
author: .mock(id: .unique)
18+
)
19+
20+
func test_messageTypeResolver_standardMessage() {
21+
// Given
22+
let message = standardMessage
23+
let messageTypeResolver = MessageTypeResolver()
24+
25+
// When
26+
let isDeleted = messageTypeResolver.isDeleted(message: message)
27+
let hasImageAttachments = messageTypeResolver.hasImageAttachment(message: message)
28+
let hasGiphyAttachment = messageTypeResolver.hasGiphyAttachment(message: message)
29+
let hasVideoAttachment = messageTypeResolver.hasVideoAttachment(message: message)
30+
let hasLinkAttachment = messageTypeResolver.hasLinkAttachment(message: message)
31+
let hasFileAttachment = messageTypeResolver.hasFileAttachment(message: message)
32+
let hasCustomAttachment = messageTypeResolver.hasCustomAttachment(message: message)
33+
34+
// Then
35+
XCTAssert(isDeleted == false)
36+
XCTAssert(hasImageAttachments == false)
37+
XCTAssert(hasGiphyAttachment == false)
38+
XCTAssert(hasVideoAttachment == false)
39+
XCTAssert(hasLinkAttachment == false)
40+
XCTAssert(hasFileAttachment == false)
41+
XCTAssert(hasCustomAttachment == false)
42+
}
43+
44+
func test_messageTypeResolver_isDeleted() {
45+
// Given
46+
let message = ChatMessage.mock(
47+
id: .unique,
48+
cid: .unique,
49+
text: "Deleted",
50+
author: .mock(id: .unique),
51+
deletedAt: Date()
52+
)
53+
let messageTypeResolver = MessageTypeResolver()
54+
55+
// When
56+
let isDeleted = messageTypeResolver.isDeleted(message: message)
57+
58+
// Then
59+
XCTAssert(isDeleted == true)
60+
}
61+
62+
func test_messageTypeResolver_hasImageAttachment() {
63+
// Given
64+
let message = ChatMessage.mock(
65+
id: .unique,
66+
cid: .unique,
67+
text: "Image attachment",
68+
author: .mock(id: .unique),
69+
attachments: ChatChannelTestHelpers.imageAttachments
70+
)
71+
let messageTypeResolver = MessageTypeResolver()
72+
73+
// When
74+
let hasImageAttachments = messageTypeResolver.hasImageAttachment(message: message)
75+
76+
// Then
77+
XCTAssert(hasImageAttachments == true)
78+
}
79+
80+
func test_messageTypeResolver_hasGiphyAttachment() {
81+
// Given
82+
let message = ChatMessage.mock(
83+
id: .unique,
84+
cid: .unique,
85+
text: "Giphy attachment",
86+
author: .mock(id: .unique),
87+
attachments: ChatChannelTestHelpers.giphyAttachments
88+
)
89+
let messageTypeResolver = MessageTypeResolver()
90+
91+
// When
92+
let hasGiphyAttachments = messageTypeResolver.hasGiphyAttachment(message: message)
93+
94+
// Then
95+
XCTAssert(hasGiphyAttachments == true)
96+
}
97+
98+
func test_messageTypeResolver_hasVideoAttachment() {
99+
// Given
100+
let message = ChatMessage.mock(
101+
id: .unique,
102+
cid: .unique,
103+
text: "Video attachment",
104+
author: .mock(id: .unique),
105+
attachments: ChatChannelTestHelpers.videoAttachments
106+
)
107+
let messageTypeResolver = MessageTypeResolver()
108+
109+
// When
110+
let hasVideoAttachments = messageTypeResolver.hasVideoAttachment(message: message)
111+
112+
// Then
113+
XCTAssert(hasVideoAttachments == true)
114+
}
115+
116+
func test_messageTypeResolver_hasLinkAttachment() {
117+
// Given
118+
let message = ChatMessage.mock(
119+
id: .unique,
120+
cid: .unique,
121+
text: "Link attachment",
122+
author: .mock(id: .unique),
123+
attachments: ChatChannelTestHelpers.linkAttachments
124+
)
125+
let messageTypeResolver = MessageTypeResolver()
126+
127+
// When
128+
let hasLinkAttachments = messageTypeResolver.hasLinkAttachment(message: message)
129+
130+
// Then
131+
XCTAssert(hasLinkAttachments == true)
132+
}
133+
134+
func test_messageTypeResolver_hasFileAttachment() {
135+
// Given
136+
let message = ChatMessage.mock(
137+
id: .unique,
138+
cid: .unique,
139+
text: "File attachment",
140+
author: .mock(id: .unique),
141+
attachments: ChatChannelTestHelpers.fileAttachments
142+
)
143+
let messageTypeResolver = MessageTypeResolver()
144+
145+
// When
146+
let hasFileAttachments = messageTypeResolver.hasFileAttachment(message: message)
147+
148+
// Then
149+
XCTAssert(hasFileAttachments == true)
150+
}
151+
152+
}

0 commit comments

Comments
 (0)