Skip to content

Commit 60f2584

Browse files
authored
Add unit tests for optimizedURL method (#19578)
1 parent 11f10ad commit 60f2584

File tree

3 files changed

+82
-23
lines changed

3 files changed

+82
-23
lines changed

WordPress/Classes/Extensions/UIImageView+SiteIcon.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ extension UIImageView {
145145

146146
// MARK: - Private Methods
147147
//
148-
private extension UIImageView {
148+
extension UIImageView {
149149
/// Returns the Size Optimized URL for a given Path.
150150
///
151151
func optimizedURL(for path: String) -> URL? {

WordPress/WordPress.xcodeproj/project.pbxproj

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3365,6 +3365,7 @@
33653365
F4D9AF4F288AD2E300803D40 /* SuggestionViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4D9AF4E288AD2E300803D40 /* SuggestionViewModelTests.swift */; };
33663366
F4D9AF51288AE23500803D40 /* SuggestionTableViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4D9AF50288AE23500803D40 /* SuggestionTableViewTests.swift */; };
33673367
F4D9AF53288AE2BA00803D40 /* SuggestionsTableViewDelegateMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4D9AF52288AE2BA00803D40 /* SuggestionsTableViewDelegateMock.swift */; };
3368+
F4EF4BAB291D3D4700147B61 /* SiteIconTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4EF4BAA291D3D4700147B61 /* SiteIconTests.swift */; };
33683369
F4F9D5EA2909622E00502576 /* MigrationWelcomeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4F9D5E92909622E00502576 /* MigrationWelcomeViewController.swift */; };
33693370
F4F9D5EC29096CF500502576 /* MigrationHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4F9D5EB29096CF500502576 /* MigrationHeaderView.swift */; };
33703371
F4F9D5F2290993D400502576 /* MigrationWelcomeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4F9D5F1290993D400502576 /* MigrationWelcomeViewModel.swift */; };
@@ -8474,6 +8475,7 @@
84748475
F4D9AF4E288AD2E300803D40 /* SuggestionViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SuggestionViewModelTests.swift; sourceTree = "<group>"; };
84758476
F4D9AF50288AE23500803D40 /* SuggestionTableViewTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SuggestionTableViewTests.swift; sourceTree = "<group>"; };
84768477
F4D9AF52288AE2BA00803D40 /* SuggestionsTableViewDelegateMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SuggestionsTableViewDelegateMock.swift; sourceTree = "<group>"; };
8478+
F4EF4BAA291D3D4700147B61 /* SiteIconTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SiteIconTests.swift; sourceTree = "<group>"; };
84778479
F4F9D5E92909622E00502576 /* MigrationWelcomeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MigrationWelcomeViewController.swift; sourceTree = "<group>"; };
84788480
F4F9D5EB29096CF500502576 /* MigrationHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MigrationHeaderView.swift; sourceTree = "<group>"; };
84798481
F4F9D5F1290993D400502576 /* MigrationWelcomeViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MigrationWelcomeViewModel.swift; sourceTree = "<group>"; };
@@ -12475,37 +12477,38 @@
1247512477
852416D01A12ED2D0030700C /* Utility */ = {
1247612478
isa = PBXGroup;
1247712479
children = (
12478-
DC06DFF727BD52A100969974 /* BackgroundTasks */,
12479-
F15D1FB8265C40EA00854EE5 /* Blogging Reminders */,
12480-
FE32E7EF284496F500744D80 /* Blogging Prompts */,
12481-
174C116D2624601000346EC6 /* Deep Linking */,
12482-
F93735F422D53C1800A3C312 /* Logging */,
12483-
93B853211B44165B0064FE72 /* Analytics */,
12484-
F198533B21ADAD0700DCDAE7 /* Editor */,
12485-
08F8CD2B1EBD243A0049D0C0 /* Media */,
12486-
3F751D442491A8B20008A2B1 /* Zendesk */,
12487-
82301B8E1E787420009C9C4E /* AppRatingUtilityTests.swift */,
1248812480
17AF92241C46634000A99CFB /* BlogSiteVisibilityHelperTest.m */,
12489-
E180BD4B1FB462FF00D0D781 /* CookieJarTests.swift */,
12490-
F565190223CF6D1D003FACAF /* WKCookieJarTests.swift */,
12491-
E1AB5A391E0C464700574B4E /* DelayTests.swift */,
12492-
E1EBC3721C118ED200F638E0 /* ImmuTableTest.swift */,
1249312481
93A379EB19FFBF7900415023 /* KeychainTest.m */,
12494-
8384C64328AAC85F00EABE26 /* KeychainUtilsTests.swift */,
12495-
1759F1711FE017F20003EC81 /* QueueTests.swift */,
1249612482
5948AD101AB73D19006E8882 /* WPAppAnalyticsTests.m */,
1249712483
E1E4CE0C177439D100430844 /* WPAvatarSourceTest.m */,
1249812484
5981FE041AB8A89A0009E080 /* WPUserAgentTests.m */,
12499-
1ABA150722AE5F870039311A /* WordPressUIBundleTests.swift */,
12500-
173D82E6238EE2A7008432DA /* FeatureFlagTests.swift */,
12501-
24B1AE3024FEC79900B9F334 /* RemoteFeatureFlagTests.swift */,
12485+
82301B8E1E787420009C9C4E /* AppRatingUtilityTests.swift */,
1250212486
F551E7F623FC9A5C00751212 /* Collection+RotateTests.swift */,
12503-
FAE8EE9B273AD0A800A65307 /* QuickStartSettingsTests.swift */,
12504-
179501CC27A01D4100882787 /* PublicizeAuthorizationURLComponentsTests.swift */,
12505-
80EF92922810FA5A0064A971 /* QuickStartFactoryTests.swift */,
12487+
E180BD4B1FB462FF00D0D781 /* CookieJarTests.swift */,
1250612488
4A266B90282B13A70089CF3D /* CoreDataTestCase.swift */,
12489+
E1AB5A391E0C464700574B4E /* DelayTests.swift */,
12490+
173D82E6238EE2A7008432DA /* FeatureFlagTests.swift */,
12491+
E1EBC3721C118ED200F638E0 /* ImmuTableTest.swift */,
1250712492
4A266B8E282B05210089CF3D /* JSONObjectTests.swift */,
12493+
8384C64328AAC85F00EABE26 /* KeychainUtilsTests.swift */,
12494+
179501CC27A01D4100882787 /* PublicizeAuthorizationURLComponentsTests.swift */,
12495+
1759F1711FE017F20003EC81 /* QueueTests.swift */,
12496+
80EF92922810FA5A0064A971 /* QuickStartFactoryTests.swift */,
12497+
FAE8EE9B273AD0A800A65307 /* QuickStartSettingsTests.swift */,
1250812498
803DE81828FFB7B5007D4E9C /* RemoteConfigParameterTests.swift */,
12499+
24B1AE3024FEC79900B9F334 /* RemoteFeatureFlagTests.swift */,
12500+
F4EF4BAA291D3D4700147B61 /* SiteIconTests.swift */,
12501+
F565190223CF6D1D003FACAF /* WKCookieJarTests.swift */,
12502+
1ABA150722AE5F870039311A /* WordPressUIBundleTests.swift */,
12503+
93B853211B44165B0064FE72 /* Analytics */,
12504+
DC06DFF727BD52A100969974 /* BackgroundTasks */,
12505+
FE32E7EF284496F500744D80 /* Blogging Prompts */,
12506+
F15D1FB8265C40EA00854EE5 /* Blogging Reminders */,
12507+
174C116D2624601000346EC6 /* Deep Linking */,
12508+
F198533B21ADAD0700DCDAE7 /* Editor */,
12509+
F93735F422D53C1800A3C312 /* Logging */,
12510+
08F8CD2B1EBD243A0049D0C0 /* Media */,
12511+
3F751D442491A8B20008A2B1 /* Zendesk */,
1250912512
);
1251012513
name = Utility;
1251112514
sourceTree = "<group>";
@@ -22029,6 +22032,7 @@
2202922032
175CC17527205BFB00622FB4 /* DomainExpiryDateFormatterTests.swift in Sources */,
2203022033
B5416CFE1C1756B900006DD8 /* PushNotificationsManagerTests.m in Sources */,
2203122034
321955C124BE4EBF00E3F316 /* ReaderSelectInterestsCoordinatorTests.swift in Sources */,
22035+
F4EF4BAB291D3D4700147B61 /* SiteIconTests.swift in Sources */,
2203222036
59B48B621B99E132008EBB84 /* JSONObject.swift in Sources */,
2203322037
3F82310F24564A870086E9B8 /* ReaderTabViewTests.swift in Sources */,
2203422038
C3E42AB027F4D30E00546706 /* MenuItemsViewControllerTests.swift in Sources */,
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import UIKit
2+
import XCTest
3+
4+
@testable import WordPress
5+
6+
final class SiteIconTests: XCTestCase {
7+
8+
/// Instance to access the extension methods declared in `UIImageView+SiteIcon.swift`.
9+
/// Perhaps those methods should be static.
10+
let imageView = UIImageView()
11+
12+
// MARK: - Test `optimizedURL(for:)`
13+
14+
/// Tests that a dotcom image URL is valid.
15+
func testDotcomURL() {
16+
// Given
17+
let path = "https://fake.files.wordpress.com/fake.png"
18+
19+
// When
20+
let optimizedURL = imageView.optimizedURL(for: path)
21+
22+
// Then
23+
let size = 40 * Int(UIScreen.main.scale)
24+
let expectedURL = URL(string: "\(path)?w=\(size)&h=\(size)")
25+
XCTAssertEqual(optimizedURL, expectedURL)
26+
}
27+
28+
/// Tests that a gravatar image URL is valid.
29+
func testBlavatarURL() {
30+
// Given
31+
let path = "https://secure.gravatar.com/blavatar/123"
32+
33+
// When
34+
let optimizedURL = imageView.optimizedURL(for: path)
35+
36+
// Then
37+
let size = 40 * Int(UIScreen.main.scale)
38+
let expectedURL = URL(string: "\(path)?d=404&s=\(size)")
39+
XCTAssertEqual(optimizedURL, expectedURL)
40+
}
41+
42+
/// Tests that a photon image URL is valid.
43+
func testPhotonURL() {
44+
// Given
45+
let path = "https://fake.wp.com/fake.png"
46+
47+
// When
48+
let optimizedURL = imageView.optimizedURL(for: path)
49+
50+
// Then
51+
let size = 40 * Int(UIScreen.main.scale)
52+
let expectedURL = URL(string: "\(path)?w=\(size)&h=\(size)")
53+
XCTAssertEqual(optimizedURL, expectedURL)
54+
}
55+
}

0 commit comments

Comments
 (0)