Skip to content

Commit 0b767b8

Browse files
added tests for the image cdn
1 parent 48a58db commit 0b767b8

File tree

2 files changed

+130
-0
lines changed

2 files changed

+130
-0
lines changed

StreamChatSwiftUI.xcodeproj/project.pbxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,7 @@
217217
84C94D58275A1B89007FE2B9 /* MessageTypeResolver_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84C94D57275A1B89007FE2B9 /* MessageTypeResolver_Tests.swift */; };
218218
84C94D5A275A2E43007FE2B9 /* StreamChat_Utils_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84C94D59275A2E43007FE2B9 /* StreamChat_Utils_Tests.swift */; };
219219
84C94D5C275A2E9F007FE2B9 /* StreamChatUtilsMocks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84C94D5B275A2E9F007FE2B9 /* StreamChatUtilsMocks.swift */; };
220+
84C94D5E275A3AA9007FE2B9 /* ImageCDN_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84C94D5D275A3AA9007FE2B9 /* ImageCDN_Tests.swift */; };
220221
84EDBC37274FE5CD0057218D /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 84EDBC36274FE5CD0057218D /* Localizable.strings */; };
221222
/* End PBXBuildFile section */
222223

@@ -464,6 +465,7 @@
464465
84C94D57275A1B89007FE2B9 /* MessageTypeResolver_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessageTypeResolver_Tests.swift; sourceTree = "<group>"; };
465466
84C94D59275A2E43007FE2B9 /* StreamChat_Utils_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StreamChat_Utils_Tests.swift; sourceTree = "<group>"; };
466467
84C94D5B275A2E9F007FE2B9 /* StreamChatUtilsMocks.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StreamChatUtilsMocks.swift; sourceTree = "<group>"; };
468+
84C94D5D275A3AA9007FE2B9 /* ImageCDN_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageCDN_Tests.swift; sourceTree = "<group>"; };
467469
84EDBC36274FE5CD0057218D /* Localizable.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; path = Localizable.strings; sourceTree = "<group>"; };
468470
/* End PBXFileReference section */
469471

@@ -984,6 +986,7 @@
984986
84C94D53275A1380007FE2B9 /* DateUtils_Tests.swift */,
985987
84C94D55275A1AE1007FE2B9 /* StringExtensions_Tests.swift */,
986988
84C94D59275A2E43007FE2B9 /* StreamChat_Utils_Tests.swift */,
989+
84C94D5D275A3AA9007FE2B9 /* ImageCDN_Tests.swift */,
987990
);
988991
path = Utils;
989992
sourceTree = "<group>";
@@ -1335,6 +1338,7 @@
13351338
84C94CD127578B92007FE2B9 /* CurrentChatUser_Mock.swift in Sources */,
13361339
84C94D0E27578BF2007FE2B9 /* AssertAsync.swift in Sources */,
13371340
84C94D1327578BF2007FE2B9 /* XCTestCase+MockJSON.swift in Sources */,
1341+
84C94D5E275A3AA9007FE2B9 /* ImageCDN_Tests.swift in Sources */,
13381342
84C94CDF27578B92007FE2B9 /* MessagePayload.swift in Sources */,
13391343
84C94CD527578B92007FE2B9 /* ChatMessageImageAttachment_Mock.swift in Sources */,
13401344
84C94C8027567D3F007FE2B9 /* ChatChannelListViewModel_Tests.swift in Sources */,
Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
//
2+
// Copyright © 2021 Stream.io Inc. All rights reserved.
3+
//
4+
5+
import Foundation
6+
import StreamChat
7+
@testable import StreamChatSwiftUI
8+
import XCTest
9+
10+
class ImageCDN_Tests: XCTestCase {
11+
func test_cache_validStreamURL_filtered() {
12+
// Given
13+
let provider = StreamImageCDN()
14+
let url = URL(string: "https://wwww.stream-io-cdn.com/image.jpg?name=Luke&father=Anakin")!
15+
let filteredUrl = "https://wwww.stream-io-cdn.com/image.jpg"
16+
17+
// When
18+
let key = provider.cachingKey(forImage: url)
19+
20+
// Then
21+
XCTAssertEqual(key, filteredUrl)
22+
}
23+
24+
func test_cache_validStreamUrl_withSizeParameters() {
25+
// Given
26+
let provider = StreamImageCDN()
27+
let url = URL(string: "https://wwww.stream-io-cdn.com/image.jpg?name=Luke&w=128&h=128&crop=center&resize=fill&ro=0")!
28+
let filteredUrl = "https://wwww.stream-io-cdn.com/image.jpg?w=128&h=128"
29+
30+
// When
31+
let key = provider.cachingKey(forImage: url)
32+
33+
// Then
34+
XCTAssertEqual(key, filteredUrl)
35+
}
36+
37+
func test_cache_validStreamURL_unchanged() {
38+
// Given
39+
let provider = StreamImageCDN()
40+
let url = URL(string: "https://wwww.stream-io-cdn.com/image.jpg")!
41+
42+
// When
43+
let key = provider.cachingKey(forImage: url)
44+
45+
// Then
46+
XCTAssertEqual(key, url.absoluteString)
47+
}
48+
49+
func test_cache_validURL_unchanged() {
50+
// Given
51+
let provider = StreamImageCDN()
52+
let url = URL(string: "https://wwww.stream.io")!
53+
54+
// When
55+
let key = provider.cachingKey(forImage: url)
56+
57+
// Then
58+
XCTAssertEqual(key, url.absoluteString)
59+
}
60+
61+
func test_cache_invalidURL_unchanged() {
62+
// Given
63+
let provider = StreamImageCDN()
64+
65+
// When
66+
let url1 = URL(string: "https://abc")!
67+
let key1 = provider.cachingKey(forImage: url1)
68+
69+
let url2 = URL(string: "abc.def")!
70+
let key2 = provider.cachingKey(forImage: url2)
71+
72+
// Then
73+
XCTAssertEqual(key1, url1.absoluteString)
74+
XCTAssertEqual(key2, url2.absoluteString)
75+
}
76+
77+
func test_thumbnail_validStreamUrl_withoutParameters() {
78+
// Given
79+
let provider = StreamImageCDN()
80+
let url = URL(string: "https://wwww.stream-io-cdn.com/image.jpg")!
81+
let size = Int(40 * UIScreen.main.scale)
82+
let thumbnailUrl = URL(string: "https://wwww.stream-io-cdn.com/image.jpg?w=\(size)&h=\(size)&crop=center&resize=fill&ro=0")!
83+
84+
// When
85+
let processedURL = provider.thumbnailURL(
86+
originalURL: url,
87+
preferredSize: CGSize(width: 40, height: 40)
88+
)
89+
90+
// Then
91+
XCTAssertEqual(processedURL, thumbnailUrl)
92+
}
93+
94+
func test_thumbnail_validStreamUrl_withParameters() {
95+
// Given
96+
let provider = StreamImageCDN()
97+
let url = URL(string: "https://wwww.stream-io-cdn.com/image.jpg?name=Luke")!
98+
let size = Int(40 * UIScreen.main.scale)
99+
let thumbnailUrl =
100+
URL(string: "https://wwww.stream-io-cdn.com/image.jpg?name=Luke&w=\(size)&h=\(size)&crop=center&resize=fill&ro=0")!
101+
102+
// When
103+
let processedURL = provider.thumbnailURL(
104+
originalURL: url,
105+
preferredSize: CGSize(width: 40, height: 40)
106+
)
107+
108+
// Then
109+
XCTAssertEqual(processedURL, thumbnailUrl)
110+
}
111+
112+
func test_thumbnail_validURL_unchanged() {
113+
// Given
114+
let provider = StreamImageCDN()
115+
let url = URL(string: "https://wwww.stream.io")!
116+
117+
// When
118+
let processedURL = provider.thumbnailURL(
119+
originalURL: url,
120+
preferredSize: CGSize(width: 40, height: 40)
121+
)
122+
123+
// Then
124+
XCTAssertEqual(processedURL, url)
125+
}
126+
}

0 commit comments

Comments
 (0)