Skip to content

Commit 88e76ee

Browse files
added tests for date utils
1 parent c66791f commit 88e76ee

File tree

2 files changed

+115
-0
lines changed

2 files changed

+115
-0
lines changed

StreamChatSwiftUI.xcodeproj/project.pbxproj

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,7 @@
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 */; };
214214
84C94D5127591DE2007FE2B9 /* ChatMessageIDs_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84C94D5027591DE2007FE2B9 /* ChatMessageIDs_Tests.swift */; };
215+
84C94D54275A1380007FE2B9 /* DateUtils_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84C94D53275A1380007FE2B9 /* DateUtils_Tests.swift */; };
215216
84EDBC37274FE5CD0057218D /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 84EDBC36274FE5CD0057218D /* Localizable.strings */; };
216217
/* End PBXBuildFile section */
217218

@@ -454,6 +455,7 @@
454455
84C94D4C2758FD5C007FE2B9 /* MessageComposerViewModel_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessageComposerViewModel_Tests.swift; sourceTree = "<group>"; };
455456
84C94D4E2758FE59007FE2B9 /* ChatChannelTestHelpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatChannelTestHelpers.swift; sourceTree = "<group>"; };
456457
84C94D5027591DE2007FE2B9 /* ChatMessageIDs_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMessageIDs_Tests.swift; sourceTree = "<group>"; };
458+
84C94D53275A1380007FE2B9 /* DateUtils_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DateUtils_Tests.swift; sourceTree = "<group>"; };
457459
84EDBC36274FE5CD0057218D /* Localizable.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; path = Localizable.strings; sourceTree = "<group>"; };
458460
/* End PBXFileReference section */
459461

@@ -950,6 +952,7 @@
950952
children = (
951953
84C94C7D27567CC2007FE2B9 /* ChatChannelList */,
952954
84C94D472758BDB2007FE2B9 /* ChatChannel */,
955+
84C94D52275A135F007FE2B9 /* Utils */,
953956
);
954957
path = Tests;
955958
sourceTree = "<group>";
@@ -965,6 +968,14 @@
965968
path = ChatChannel;
966969
sourceTree = "<group>";
967970
};
971+
84C94D52275A135F007FE2B9 /* Utils */ = {
972+
isa = PBXGroup;
973+
children = (
974+
84C94D53275A1380007FE2B9 /* DateUtils_Tests.swift */,
975+
);
976+
path = Utils;
977+
sourceTree = "<group>";
978+
};
968979
/* End PBXGroup section */
969980

970981
/* Begin PBXHeadersBuildPhase section */
@@ -1257,6 +1268,7 @@
12571268
buildActionMask = 2147483647;
12581269
files = (
12591270
84C94CE127578B92007FE2B9 /* MessageAttachmentPayload.swift in Sources */,
1271+
84C94D54275A1380007FE2B9 /* DateUtils_Tests.swift in Sources */,
12601272
84C94CE527578B92007FE2B9 /* ChatUserSearchController_Mock.swift in Sources */,
12611273
84C94D1427578BF3007FE2B9 /* TemporaryData.swift in Sources */,
12621274
84C94D4F2758FE59007FE2B9 /* ChatChannelTestHelpers.swift in Sources */,
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
//
2+
// Copyright © 2021 Stream.io Inc. All rights reserved.
3+
//
4+
5+
@testable import StreamChat
6+
@testable import StreamChatSwiftUI
7+
import XCTest
8+
9+
class DateUtils_Tests: XCTestCase {
10+
func test_timeAgoNow() throws {
11+
// Given
12+
let expected = "last seen just one second ago"
13+
14+
// When
15+
let timeAgo = DateUtils.timeAgo(relativeTo: Date())
16+
17+
// Then
18+
XCTAssert(timeAgo == expected)
19+
}
20+
21+
func test_timeAgoFuture() throws {
22+
// Given
23+
let date = Calendar.current.date(byAdding: .second, value: 60, to: Date())!
24+
25+
// When
26+
let timeAgo = DateUtils.timeAgo(relativeTo: date)
27+
28+
// Then
29+
XCTAssert(timeAgo == nil)
30+
}
31+
32+
func test_timeAgo1MinuteAgo() throws {
33+
// Given
34+
let date = Calendar.current.date(byAdding: .second, value: -60, to: Date())!
35+
let expected = "last seen one minute ago"
36+
37+
// When
38+
let timeAgo = DateUtils.timeAgo(relativeTo: date)
39+
40+
// Then
41+
XCTAssert(timeAgo == expected)
42+
}
43+
44+
func test_timeAgo59SecondsAgo() throws {
45+
// Given
46+
let date = Calendar.current.date(byAdding: .second, value: -59, to: Date())!
47+
let expected = "last seen 59 seconds ago"
48+
49+
// When
50+
let timeAgo = DateUtils.timeAgo(relativeTo: date)
51+
52+
// Then
53+
XCTAssert(timeAgo == expected)
54+
}
55+
56+
func test_timeAgo42SecondsAgo() throws {
57+
// Given
58+
let date = Calendar.current.date(byAdding: .second, value: -42, to: Date())!
59+
let expected = "last seen 42 seconds ago"
60+
61+
// When
62+
let timeAgo = DateUtils.timeAgo(relativeTo: date)
63+
64+
// Then
65+
XCTAssert(timeAgo == expected)
66+
}
67+
68+
func test_timeAgo42MinutesAgo() throws {
69+
// Given
70+
let date = Calendar.current.date(byAdding: .minute, value: -42, to: Date())!
71+
let expected = "last seen 42 minutes ago"
72+
73+
// When
74+
let timeAgo = DateUtils.timeAgo(relativeTo: date)
75+
76+
// Then
77+
XCTAssert(timeAgo == expected)
78+
}
79+
80+
func test_timeAgo42DaysAgo() throws {
81+
// Given
82+
let date = Calendar.current.date(byAdding: .day, value: -42, to: Date())!
83+
let expected = "last seen one month ago"
84+
85+
// When
86+
let timeAgo = DateUtils.timeAgo(relativeTo: date)
87+
88+
// Then
89+
XCTAssert(timeAgo == expected)
90+
}
91+
92+
func test_timeAgo42WeeksAgo() throws {
93+
// Given
94+
let date = Calendar.current.date(byAdding: .day, value: -42 * 7, to: Date())!
95+
let expected = "last seen 9 months ago"
96+
97+
// When
98+
let timeAgo = DateUtils.timeAgo(relativeTo: date)
99+
100+
// Then
101+
XCTAssert(timeAgo == expected)
102+
}
103+
}

0 commit comments

Comments
 (0)