Skip to content

Commit 86bed60

Browse files
committed
Add unit tests for NonAtomicSiteViewModel
1 parent cceccda commit 86bed60

File tree

2 files changed

+119
-0
lines changed

2 files changed

+119
-0
lines changed

WooCommerce/WooCommerce.xcodeproj/project.pbxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1636,6 +1636,7 @@
16361636
DE279BB126EA184A002BA963 /* ShippingLabelPackageListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE279BB026EA184A002BA963 /* ShippingLabelPackageListViewModel.swift */; };
16371637
DE2BF4FD2846192B00FBE68A /* CouponAllowedEmailsViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE2BF4FC2846192B00FBE68A /* CouponAllowedEmailsViewModelTests.swift */; };
16381638
DE3404E828B4B96800CF0D97 /* NonAtomicSiteViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE3404E728B4B96800CF0D97 /* NonAtomicSiteViewModel.swift */; };
1639+
DE3404EA28B4C1D000CF0D97 /* NonAtomicSiteViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE3404E928B4C1D000CF0D97 /* NonAtomicSiteViewModelTests.swift */; };
16391640
DE34771327F174C8009CA300 /* StatusView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE34771227F174C8009CA300 /* StatusView.swift */; };
16401641
DE3877E0283B68CF0075D87E /* DiscountTypeBottomSheetListSelectorCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE3877DF283B68CF0075D87E /* DiscountTypeBottomSheetListSelectorCommand.swift */; };
16411642
DE3877E2283CCBC20075D87E /* BottomSheetListSelector.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE3877E1283CCBC20075D87E /* BottomSheetListSelector.swift */; };
@@ -3488,6 +3489,7 @@
34883489
DE279BB026EA184A002BA963 /* ShippingLabelPackageListViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShippingLabelPackageListViewModel.swift; sourceTree = "<group>"; };
34893490
DE2BF4FC2846192B00FBE68A /* CouponAllowedEmailsViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CouponAllowedEmailsViewModelTests.swift; sourceTree = "<group>"; };
34903491
DE3404E728B4B96800CF0D97 /* NonAtomicSiteViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NonAtomicSiteViewModel.swift; sourceTree = "<group>"; };
3492+
DE3404E928B4C1D000CF0D97 /* NonAtomicSiteViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NonAtomicSiteViewModelTests.swift; sourceTree = "<group>"; };
34913493
DE34771227F174C8009CA300 /* StatusView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusView.swift; sourceTree = "<group>"; };
34923494
DE3877DF283B68CF0075D87E /* DiscountTypeBottomSheetListSelectorCommand.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DiscountTypeBottomSheetListSelectorCommand.swift; sourceTree = "<group>"; };
34933495
DE3877E1283CCBC20075D87E /* BottomSheetListSelector.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BottomSheetListSelector.swift; sourceTree = "<group>"; };
@@ -5844,6 +5846,7 @@
58445846
DE61978C289A5326005E4362 /* WooSetupWebViewModelTests.swift */,
58455847
DE61978E289A5674005E4362 /* NoWooErrorViewModelTests.swift */,
58465848
DE61979428A25842005E4362 /* StorePickerViewModelTests.swift */,
5849+
DE3404E928B4C1D000CF0D97 /* NonAtomicSiteViewModelTests.swift */,
58475850
);
58485851
path = Authentication;
58495852
sourceTree = "<group>";
@@ -10451,6 +10454,7 @@
1045110454
093B265927DF15100026F92D /* BulkUpdatePriceViewControllerTests.swift in Sources */,
1045210455
2614EB1C24EB611200968D4B /* TopBannerViewTests.swift in Sources */,
1045310456
B5DBF3C320E1484400B53AED /* StoresManagerTests.swift in Sources */,
10457+
DE3404EA28B4C1D000CF0D97 /* NonAtomicSiteViewModelTests.swift in Sources */,
1045410458
02E493EF245C1087000AEA9E /* ProductFormBottomSheetListSelectorCommandTests.swift in Sources */,
1045510459
D88D5A3B230B5D63007B6E01 /* MockAnalyticsProvider.swift in Sources */,
1045610460
B9C4AB29280031AB007008B8 /* PaymentReceiptEmailParameterDeterminerTests.swift in Sources */,
Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
import XCTest
2+
import Yosemite
3+
@testable import WooCommerce
4+
5+
final class NonAtomicSiteViewModelTests: XCTestCase {
6+
7+
func test_viewmodel_provides_expected_title() {
8+
// Given
9+
let site = Site.fake().copy(name: "Test")
10+
let viewModel = NonAtomicSiteViewModel(site: site)
11+
12+
// When
13+
let title = viewModel.title
14+
15+
// Then
16+
XCTAssertEqual(title, site.name)
17+
}
18+
19+
func test_viewmodel_provides_expected_image() {
20+
// Given
21+
let viewModel = NonAtomicSiteViewModel(site: Site.fake())
22+
23+
// When
24+
let image = viewModel.image
25+
26+
// Then
27+
XCTAssertEqual(image, Expectations.image)
28+
}
29+
30+
func test_viewmodel_provides_expected_error_message() {
31+
// Given
32+
let site = Site.fake().copy(url: "https://test.com")
33+
let viewModel = NonAtomicSiteViewModel(site: site)
34+
let expectation = Expectations.errorMessage.replacingOccurrences(of: "%@", with: "test.com")
35+
36+
// When
37+
let errorMessage = viewModel.text.string
38+
39+
// Then
40+
XCTAssertEqual(errorMessage, expectation)
41+
}
42+
43+
func test_viewmodel_provides_expected_visibility_for_auxiliary_button() {
44+
// Given
45+
let viewModel = NonAtomicSiteViewModel(site: Site.fake())
46+
47+
// When
48+
let isHidden = viewModel.isAuxiliaryButtonHidden
49+
50+
// Then
51+
XCTAssertTrue(isHidden)
52+
}
53+
54+
func test_viewmodel_provides_expected_title_for_auxiliary_button() {
55+
// Given
56+
let viewModel = NonAtomicSiteViewModel(site: Site.fake())
57+
58+
// When
59+
let auxiliaryButtonTitle = viewModel.auxiliaryButtonTitle
60+
61+
// Then
62+
XCTAssertEqual(auxiliaryButtonTitle, "")
63+
}
64+
65+
func test_viewmodel_provides_expected_visibility_for_primary_button() {
66+
// Given
67+
let viewModel = NonAtomicSiteViewModel(site: Site.fake())
68+
69+
// When
70+
let isHidden = viewModel.isPrimaryButtonHidden
71+
72+
// Then
73+
XCTAssertTrue(isHidden)
74+
}
75+
76+
func test_viewmodel_provides_expected_title_for_primary_button() {
77+
// Given
78+
let viewModel = NonAtomicSiteViewModel(site: Site.fake())
79+
80+
// When
81+
let primaryButtonTitle = viewModel.primaryButtonTitle
82+
83+
// Then
84+
XCTAssertEqual(primaryButtonTitle, "")
85+
}
86+
87+
func test_viewmodel_provides_expected_title_for_secondary_button() {
88+
// Given
89+
let viewModel = NonAtomicSiteViewModel(site: Site.fake())
90+
91+
// When
92+
let secondaryButtonTitle = viewModel.secondaryButtonTitle
93+
94+
// Then
95+
XCTAssertEqual(secondaryButtonTitle, Expectations.secondaryButtonTitle)
96+
}
97+
98+
}
99+
100+
private extension NonAtomicSiteViewModelTests {
101+
enum Expectations {
102+
static let image = UIImage.loginNoWordPressError
103+
104+
static let errorMessage = NSLocalizedString(
105+
"It seems that your site %@ is a simple WordPress.com site that cannot install plugins. Please upgrade your plan to use WooCommerce.",
106+
comment: "An error message displayed when the user tries to log in to the app with a simple WP.com site. " +
107+
"Reads like: It seems that your site google.com is a simple WordPress.com site that cannot install plugins. " +
108+
"Please upgrade your plan to use WooCommerce."
109+
)
110+
111+
static let secondaryButtonTitle = NSLocalizedString("Log In With Another Account",
112+
comment: "Action button that will restart the login flow."
113+
+ "Presented when the user tries to log in to the app with a simple WP.com site.")
114+
}
115+
}

0 commit comments

Comments
 (0)