From 123bf966095a578f351b6404303bcff1070ae198 Mon Sep 17 00:00:00 2001 From: Ben Guo Date: Fri, 21 Oct 2016 13:53:37 -0400 Subject: [PATCH] add STPAddressViewModelTest --- Stripe.xcodeproj/project.pbxproj | 4 + Tests/Tests/STPAddressViewModelTest.m | 142 ++++++++++++++++++++++++++ 2 files changed, 146 insertions(+) create mode 100644 Tests/Tests/STPAddressViewModelTest.m diff --git a/Stripe.xcodeproj/project.pbxproj b/Stripe.xcodeproj/project.pbxproj index 744a9c1a7a..71fb66c53b 100644 --- a/Stripe.xcodeproj/project.pbxproj +++ b/Stripe.xcodeproj/project.pbxproj @@ -418,6 +418,7 @@ C124A1851CCAB750007D42EE /* STPAnalyticsClientTest.m in Sources */ = {isa = PBXBuildFile; fileRef = C124A1841CCAB750007D42EE /* STPAnalyticsClientTest.m */; }; C12655391CAA238E006F7265 /* STPAddCardViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 04F416241CA3639500486FB5 /* STPAddCardViewController.h */; settings = {ATTRIBUTES = (Public, ); }; }; C126553A1CAA2392006F7265 /* STPAddCardViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 04F416251CA3639500486FB5 /* STPAddCardViewController.m */; }; + C127110A1DBA7E490087840D /* STPAddressViewModelTest.m in Sources */ = {isa = PBXBuildFile; fileRef = C12711091DBA7E490087840D /* STPAddressViewModelTest.m */; }; C13538081D2C2186003F6157 /* STPAddCardViewControllerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = C13538071D2C2186003F6157 /* STPAddCardViewControllerTest.m */; }; C135380B1D2C22E5003F6157 /* MockSTPAPIClient.h in Headers */ = {isa = PBXBuildFile; fileRef = C13538091D2C22E5003F6157 /* MockSTPAPIClient.h */; }; C135380C1D2C22E5003F6157 /* MockSTPAPIClient.m in Sources */ = {isa = PBXBuildFile; fileRef = C135380A1D2C22E5003F6157 /* MockSTPAPIClient.m */; }; @@ -914,6 +915,7 @@ C124A17B1CCAA0C2007D42EE /* NSMutableURLRequest+Stripe.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSMutableURLRequest+Stripe.m"; sourceTree = ""; }; C124A1801CCAA1BF007D42EE /* NSMutableURLRequest+StripeTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSMutableURLRequest+StripeTest.m"; sourceTree = ""; }; C124A1841CCAB750007D42EE /* STPAnalyticsClientTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = STPAnalyticsClientTest.m; sourceTree = ""; }; + C12711091DBA7E490087840D /* STPAddressViewModelTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = STPAddressViewModelTest.m; sourceTree = ""; }; C13538071D2C2186003F6157 /* STPAddCardViewControllerTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = STPAddCardViewControllerTest.m; sourceTree = ""; }; C13538091D2C22E5003F6157 /* MockSTPAPIClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MockSTPAPIClient.h; sourceTree = ""; }; C135380A1D2C22E5003F6157 /* MockSTPAPIClient.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MockSTPAPIClient.m; sourceTree = ""; }; @@ -1394,6 +1396,7 @@ 04A488351CA34DC600506E53 /* STPEmailAddressValidatorTest.m */, C1FEE5981CBFF24000A7632B /* STPPostalCodeValidatorTest.m */, C1080F4B1CBED48A007B2D89 /* STPAddressTests.m */, + C12711091DBA7E490087840D /* STPAddressViewModelTest.m */, C11810981CC6D46D0022FB55 /* NSDecimalNumber+StripeTest.m */, C13538071D2C2186003F6157 /* STPAddCardViewControllerTest.m */, F156753F1DB544D3004468E3 /* STPAddCardViewControllerLocalizationTests.m */, @@ -2099,6 +2102,7 @@ 04A4C3921C4F263300B3B290 /* STPNSArrayStripeBoundSafeTests.m in Sources */, F148ABFB1D5E88C70014FD92 /* STPTestUtils.m in Sources */, 045A62AB1B8E7259000165CE /* STPPaymentCardTextFieldTest.m in Sources */, + C127110A1DBA7E490087840D /* STPAddressViewModelTest.m in Sources */, F12C8DC41D63DE9F00ADA0D7 /* STPPaymentContextAmountModel.m in Sources */, F14C872F1D4FCDBA00C7CC6A /* STPPaymentContextTest.m in Sources */, F14C873C1D4FE5BD00C7CC6A /* TestSTPBackendAPIAdapter.m in Sources */, diff --git a/Tests/Tests/STPAddressViewModelTest.m b/Tests/Tests/STPAddressViewModelTest.m new file mode 100644 index 0000000000..e6e339daeb --- /dev/null +++ b/Tests/Tests/STPAddressViewModelTest.m @@ -0,0 +1,142 @@ +// +// STPAddressViewModelTest.m +// Stripe +// +// Created by Ben Guo on 10/21/16. +// Copyright © 2016 Stripe, Inc. All rights reserved. +// + +#import +#import "STPAddressViewModel.h" + +@interface STPAddressViewModelTest : XCTestCase + +@end + +@implementation STPAddressViewModelTest + +- (void)testInitWithRequiredBillingFields { + STPAddressViewModel *sut = [[STPAddressViewModel alloc] initWithRequiredBillingFields:STPBillingAddressFieldsNone]; + XCTAssertTrue([sut.addressCells count] == 0); + + sut = [[STPAddressViewModel alloc] initWithRequiredBillingFields:STPBillingAddressFieldsZip]; + XCTAssertTrue([sut.addressCells count] == 1); + STPAddressFieldTableViewCell *cell1 = sut.addressCells[0]; + XCTAssertEqual(cell1.type, STPAddressFieldTypeZip); + + sut = [[STPAddressViewModel alloc] initWithRequiredBillingFields:STPBillingAddressFieldsFull]; + XCTAssertTrue([sut.addressCells count] == 7); + NSArray *types = @[ + @(STPAddressFieldTypeName), + @(STPAddressFieldTypeLine1), + @(STPAddressFieldTypeLine2), + @(STPAddressFieldTypeCity), + @(STPAddressFieldTypeState), + @(STPAddressFieldTypeZip), + @(STPAddressFieldTypeCountry), + ]; + for (NSUInteger i=0; i<[sut.addressCells count]; i++) { + XCTAssertEqual(sut.addressCells[i].type, [types[i] integerValue]); + } +} + +- (void)testInitWithRequiredShippingFields { + STPAddressViewModel *sut = [[STPAddressViewModel alloc] initWithRequiredShippingFields:PKAddressFieldNone]; + XCTAssertTrue([sut.addressCells count] == 0); + + sut = [[STPAddressViewModel alloc] initWithRequiredShippingFields:PKAddressFieldName]; + XCTAssertTrue([sut.addressCells count] == 1); + STPAddressFieldTableViewCell *cell1 = sut.addressCells[0]; + XCTAssertEqual(cell1.type, STPAddressFieldTypeName); + + sut = [[STPAddressViewModel alloc] initWithRequiredShippingFields:PKAddressFieldName|PKAddressFieldEmail]; + XCTAssertTrue([sut.addressCells count] == 2); + NSArray *types = @[ + @(STPAddressFieldTypeName), + @(STPAddressFieldTypeEmail), + ]; + for (NSUInteger i=0; i<[sut.addressCells count]; i++) { + XCTAssertEqual(sut.addressCells[i].type, [types[i] integerValue]); + } + + sut = [[STPAddressViewModel alloc] initWithRequiredShippingFields:PKAddressFieldPostalAddress|PKAddressFieldEmail|PKAddressFieldPhone]; + XCTAssertTrue([sut.addressCells count] == 9); + types = @[ + @(STPAddressFieldTypeEmail), + @(STPAddressFieldTypeName), + @(STPAddressFieldTypeLine1), + @(STPAddressFieldTypeLine2), + @(STPAddressFieldTypeCity), + @(STPAddressFieldTypeState), + @(STPAddressFieldTypeZip), + @(STPAddressFieldTypeCountry), + @(STPAddressFieldTypePhone), + ]; + for (NSUInteger i=0; i<[sut.addressCells count]; i++) { + XCTAssertEqual(sut.addressCells[i].type, [types[i] integerValue]); + } +} + +- (void)testGetAddress { + STPAddressViewModel *sut = [[STPAddressViewModel alloc] initWithRequiredShippingFields:PKAddressFieldPostalAddress|PKAddressFieldEmail|PKAddressFieldPhone]; + sut.addressCells[0].contents = @"foo@example.com"; + sut.addressCells[1].contents = @"John Smith"; + sut.addressCells[2].contents = @"55 John St"; + sut.addressCells[3].contents = @"#3B"; + sut.addressCells[4].contents = @"New York"; + sut.addressCells[5].contents = @"NY"; + sut.addressCells[6].contents = @"10002"; + sut.addressCells[7].contents = @"US"; + sut.addressCells[8].contents = @"555-555-5555"; + + XCTAssertEqualObjects(sut.address.email, @"foo@example.com"); + XCTAssertEqualObjects(sut.address.name, @"John Smith"); + XCTAssertEqualObjects(sut.address.line1, @"55 John St"); + XCTAssertEqualObjects(sut.address.line2, @"#3B"); + XCTAssertEqualObjects(sut.address.city, @"New York"); + XCTAssertEqualObjects(sut.address.state, @"NY"); + XCTAssertEqualObjects(sut.address.postalCode, @"10002"); + XCTAssertEqualObjects(sut.address.country, @"US"); + XCTAssertEqualObjects(sut.address.phone, @"555-555-5555"); +} + +- (void)testSetAddress { + STPAddress *address = [STPAddress new]; + address.email = @"foo@example.com"; + address.name = @"John Smith"; + address.line1 = @"55 John St"; + address.line2 = @"#3B"; + address.city = @"New York"; + address.state = @"NY"; + address.postalCode = @"10002"; + address.country = @"US"; + address.phone = @"555-555-5555"; + + STPAddressViewModel *sut = [[STPAddressViewModel alloc] initWithRequiredShippingFields:PKAddressFieldPostalAddress|PKAddressFieldEmail|PKAddressFieldPhone]; + sut.address = address; + XCTAssertEqualObjects(sut.addressCells[0].contents, @"foo@example.com"); + XCTAssertEqualObjects(sut.addressCells[1].contents, @"John Smith"); + XCTAssertEqualObjects(sut.addressCells[2].contents, @"55 John St"); + XCTAssertEqualObjects(sut.addressCells[3].contents, @"#3B"); + XCTAssertEqualObjects(sut.addressCells[4].contents, @"New York"); + XCTAssertEqualObjects(sut.addressCells[5].contents, @"NY"); + XCTAssertEqualObjects(sut.addressCells[6].contents, @"10002"); + XCTAssertEqualObjects(sut.addressCells[7].contents, @"US"); + XCTAssertEqualObjects(sut.addressCells[8].contents, @"555-555-5555"); +} + +- (void)testIsValid { + STPAddressViewModel *sut = [[STPAddressViewModel alloc] initWithRequiredBillingFields:STPBillingAddressFieldsFull]; + XCTAssertFalse(sut.isValid); + sut.addressCells[0].contents = @"John Smith"; + sut.addressCells[1].contents = @"55 John St"; + sut.addressCells[2].contents = @"#3B"; + XCTAssertFalse(sut.isValid); + sut.addressCells[3].contents = @"New York"; + sut.addressCells[4].contents = @"NY"; + sut.addressCells[5].contents = @"10002"; + sut.addressCells[6].contents = @"US"; + XCTAssertTrue(sut.isValid); +} + +@end