Skip to content

Commit b6bd737

Browse files
added tests for message id calculations
1 parent 396ca68 commit b6bd737

File tree

4 files changed

+129
-4
lines changed

4 files changed

+129
-4
lines changed

Sources/StreamChatSwiftUI/ChatChannel/ChatChannelViewModel.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -241,8 +241,7 @@ extension ChatMessage: Identifiable {
241241

242242
let strings = states.map { "\($0)" }
243243
let combined = strings.joined(separator: "-")
244-
let statesId = "\(id)-\(combined)"
245-
return statesId
244+
return combined
246245
}
247246

248247
var reactionScoresId: String {

StreamChatSwiftUI.xcodeproj/project.pbxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,7 @@
211211
84C94D492758BE1C007FE2B9 /* ChatChannelViewModel_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84C94D482758BE1C007FE2B9 /* ChatChannelViewModel_Tests.swift */; };
212212
84C94D4D2758FD5C007FE2B9 /* MessageComposerViewModel_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84C94D4C2758FD5C007FE2B9 /* MessageComposerViewModel_Tests.swift */; };
213213
84C94D4F2758FE59007FE2B9 /* ChatChannelTestHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84C94D4E2758FE59007FE2B9 /* ChatChannelTestHelpers.swift */; };
214+
84C94D5127591DE2007FE2B9 /* ChatMessageIDs_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84C94D5027591DE2007FE2B9 /* ChatMessageIDs_Tests.swift */; };
214215
84EDBC37274FE5CD0057218D /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 84EDBC36274FE5CD0057218D /* Localizable.strings */; };
215216
/* End PBXBuildFile section */
216217

@@ -452,6 +453,7 @@
452453
84C94D482758BE1C007FE2B9 /* ChatChannelViewModel_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatChannelViewModel_Tests.swift; sourceTree = "<group>"; };
453454
84C94D4C2758FD5C007FE2B9 /* MessageComposerViewModel_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessageComposerViewModel_Tests.swift; sourceTree = "<group>"; };
454455
84C94D4E2758FE59007FE2B9 /* ChatChannelTestHelpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatChannelTestHelpers.swift; sourceTree = "<group>"; };
456+
84C94D5027591DE2007FE2B9 /* ChatMessageIDs_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMessageIDs_Tests.swift; sourceTree = "<group>"; };
455457
84EDBC36274FE5CD0057218D /* Localizable.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; path = Localizable.strings; sourceTree = "<group>"; };
456458
/* End PBXFileReference section */
457459

@@ -957,6 +959,7 @@
957959
children = (
958960
84C94D482758BE1C007FE2B9 /* ChatChannelViewModel_Tests.swift */,
959961
84C94D4C2758FD5C007FE2B9 /* MessageComposerViewModel_Tests.swift */,
962+
84C94D5027591DE2007FE2B9 /* ChatMessageIDs_Tests.swift */,
960963
84C94D4E2758FE59007FE2B9 /* ChatChannelTestHelpers.swift */,
961964
);
962965
path = ChatChannel;
@@ -1262,6 +1265,7 @@
12621265
84C94CE427578B92007FE2B9 /* ChatChannelController_Mock.swift in Sources */,
12631266
84C94D282757954C007FE2B9 /* VirtualTimer.swift in Sources */,
12641267
84C94D442757C704007FE2B9 /* MoreChannelActionsViewModel_Tests.swift in Sources */,
1268+
84C94D5127591DE2007FE2B9 /* ChatMessageIDs_Tests.swift in Sources */,
12651269
84C94CD727578B92007FE2B9 /* ChatMessageLinkAttachment_Mock.swift in Sources */,
12661270
84C94D0527578BF2007FE2B9 /* TestRunnerEnvironment.swift in Sources */,
12671271
84C94D1A27579273007FE2B9 /* TestRequest.swift in Sources */,
Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
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+
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+
]
34+
35+
return imageAttachments
36+
}()
37+
38+
func test_chatMessage_reactionScoresId() {
39+
// Given
40+
let id: String = .unique
41+
let reaction = "like"
42+
let expectedId = id + "\(reaction)\(3)"
43+
let message = ChatMessage.mock(
44+
id: id,
45+
cid: .unique,
46+
text: "test",
47+
author: .mock(id: .unique),
48+
reactionScores: [
49+
MessageReactionType(rawValue: reaction): 3
50+
]
51+
)
52+
53+
// When
54+
let messageId = message.messageId
55+
56+
// Then
57+
XCTAssert(messageId == expectedId)
58+
}
59+
60+
func test_chatMessage_DeletedId() {
61+
// Given
62+
let id: String = .unique
63+
let expectedId = "\(id)-deleted"
64+
let message = ChatMessage.mock(
65+
id: id,
66+
cid: .unique,
67+
text: "test",
68+
author: .mock(id: .unique),
69+
deletedAt: Date()
70+
)
71+
72+
// When
73+
let messageId = message.messageId
74+
75+
// Then
76+
XCTAssert(messageId == expectedId)
77+
}
78+
79+
func test_chatMessage_uploadingStatesId() {
80+
// Given
81+
let id: String = .unique
82+
let state = "pendingUpload"
83+
let expectedId = "\(id)\(state)"
84+
let message = ChatMessage.mock(
85+
id: id,
86+
cid: .unique,
87+
text: "test",
88+
author: .mock(id: .unique),
89+
attachments: imageAttachments
90+
)
91+
92+
// When
93+
let uploadingStatesId = message.uploadingStatesId
94+
let messageId = message.messageId
95+
96+
// Then
97+
XCTAssert(messageId == expectedId)
98+
XCTAssert(uploadingStatesId == state)
99+
}
100+
101+
func test_chatMessage_messageIdComplete() {
102+
// Given
103+
let id: String = .unique
104+
let reaction = "like"
105+
let expectedId = "\(id)pendingUploadlike3"
106+
let message = ChatMessage.mock(
107+
id: id,
108+
cid: .unique,
109+
text: "test",
110+
author: .mock(id: .unique),
111+
reactionScores: [
112+
MessageReactionType(rawValue: reaction): 3
113+
],
114+
attachments: imageAttachments
115+
)
116+
117+
// When
118+
let messageId = message.messageId
119+
120+
// Then
121+
XCTAssert(messageId == expectedId)
122+
}
123+
124+
}

StreamChatSwiftUITests/Tests/ChatChannel/MessageComposerViewModel_Tests.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ import XCTest
66
@testable import StreamChatSwiftUI
77
@testable import StreamChat
88

9-
import XCTest
10-
119
class MessageComposerViewModel_Tests: XCTestCase {
1210

1311
private let testImage = UIImage(systemName: "checkmark")!

0 commit comments

Comments
 (0)