Skip to content

Commit ce5bb25

Browse files
committed
Add address validation tests
1 parent 7f5a021 commit ce5bb25

File tree

4 files changed

+79
-1
lines changed

4 files changed

+79
-1
lines changed

phpunit.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
</filter>
2121
<logging>
2222
<log type="coverage-html" target="tests/logs/report" lowUpperBound="35" highLowerBound="70"/>
23-
<log type="coverage-clover" target="tests/logs/coverage.xml"/>
23+
<!--<log type="coverage-clover" target="tests/logs/coverage.xml"/>-->
2424
<!--<log type="coverage-php" target="tests/logs/coverage.serialized"/>-->
2525
<!--<log type="coverage-text" target="php://stdout" showUncoveredFiles="false"/>-->
2626
<!--<log type="junit" target="tests/logs/logfile.xml" logIncompleteSkipped="false"/>-->

tests/FedEx/Tests/AddressValidationTest.php

+76
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use FedEx\AddressValidationService\Request;
66
use FedEx\AddressValidationService\ComplexType;
7+
use FedEx\RateService\ComplexType\Address;
78
use FedEx\Utility\ComplexTypePopulator;
89

910
class AddressValidationTest extends TestCase
@@ -21,4 +22,79 @@ public function testAddressValidationRequest()
2122
$request = new Request($mockSoapClient);
2223
$this->assertEquals(ComplexType\AddressValidationRequest::class, $request->getAddressValidationReply($addressValidationRequest, true));
2324
}
25+
26+
/**
27+
* Tests unconfirmed address reply
28+
*/
29+
public function testUnconfirmedAddressReply()
30+
{
31+
$addressValidationRequest = new ComplexType\AddressValidationRequest();
32+
$complexTypePopulator = new ComplexTypePopulator();
33+
$complexTypePopulator->populate($addressValidationRequest);
34+
35+
$expectedResponse = $this->mockResponseSerializer->get('address-validation-unconfirmed.ser');
36+
37+
$mockSoapClient = $this->getMockFromWsdl(Request::getWsdlPath());
38+
$mockSoapClient->method('addressValidation')->will($this->returnValue($expectedResponse));
39+
40+
$request = new Request($mockSoapClient);
41+
$addressValidationReply = $request->getAddressValidationReply($addressValidationRequest);
42+
43+
$this->assertInstanceOf(ComplexType\AddressValidationReply::class, $addressValidationReply);
44+
$this->assertCount(1, $addressValidationReply->AddressResults);
45+
$this->assertInstanceOf(ComplexType\AddressValidationResult::class, $addressValidationReply->AddressResults[0]);
46+
$this->assertEquals(0, $addressValidationReply->AddressResults[0]->ProposedAddressDetails[0]->Score);
47+
$this->assertEquals('UNDETERMINED', $addressValidationReply->AddressResults[0]->ProposedAddressDetails[0]->ResidentialStatus);
48+
$this->assertEquals('UNCONFIRMED', $addressValidationReply->AddressResults[0]->ProposedAddressDetails[0]->DeliveryPointValidation);
49+
$this->assertInstanceOf(ComplexType\Address::class, $addressValidationReply->AddressResults[0]->ProposedAddressDetails[0]->Address);
50+
}
51+
52+
/**
53+
* Test multiple valid addresses
54+
*/
55+
public function testMultipleValidAddresses()
56+
{
57+
$addressValidationRequest = new ComplexType\AddressValidationRequest();
58+
$complexTypePopulator = new ComplexTypePopulator();
59+
$complexTypePopulator->populate($addressValidationRequest);
60+
61+
//valid US Address (score 100)
62+
$addressValidationRequest->AddressesToValidate[0] = new ComplexType\AddressToValidate();
63+
$addressValidationRequest->AddressesToValidate[0]->AddressId = 1;
64+
$addressValidationRequest->AddressesToValidate[0]->Address->StreetLines = ['100 Nickerson RD'];
65+
$addressValidationRequest->AddressesToValidate[0]->Address->City = 'Marlborough';
66+
$addressValidationRequest->AddressesToValidate[0]->Address->StateOrProvinceCode = 'MA';
67+
$addressValidationRequest->AddressesToValidate[0]->Address->PostalCode = '01752';
68+
$addressValidationRequest->AddressesToValidate[0]->Address->CountryCode = 'US';
69+
70+
//valid AU address (score 97)
71+
$addressValidationRequest->AddressesToValidate[1] = new ComplexType\AddressToValidate();
72+
$addressValidationRequest->AddressesToValidate[1]->AddressId = 2;
73+
$addressValidationRequest->AddressesToValidate[1]->Address->StreetLines = ['167 PROSPECT HIGHWAY'];
74+
$addressValidationRequest->AddressesToValidate[1]->Address->City = 'New SOUTH WALES';
75+
$addressValidationRequest->AddressesToValidate[1]->Address->PostalCode = '2147';
76+
$addressValidationRequest->AddressesToValidate[1]->Address->CountryCode = 'AU';
77+
78+
//valid GB Address (score 92)
79+
$addressValidationRequest->AddressesToValidate[2] = new ComplexType\AddressToValidate();
80+
$addressValidationRequest->AddressesToValidate[2]->AddressId = 3;
81+
$addressValidationRequest->AddressesToValidate[2]->Address->StreetLines = ['167 PROSPECT HIGHWAY'];
82+
$addressValidationRequest->AddressesToValidate[2]->Address->City = 'New SOUTH WALES';
83+
$addressValidationRequest->AddressesToValidate[2]->Address->PostalCode = '2147';
84+
$addressValidationRequest->AddressesToValidate[2]->Address->CountryCode = 'AU';
85+
86+
$expectedResponse = $this->mockResponseSerializer->get('address-validation-multiple-valid-addresses.ser');
87+
88+
$mockSoapClient = $this->getMockFromWsdl(Request::getWsdlPath());
89+
$mockSoapClient->method('addressValidation')->will($this->returnValue($expectedResponse));
90+
91+
$request = new Request($mockSoapClient);
92+
93+
$addressValidationReply = $request->getAddressValidationReply($addressValidationRequest);
94+
95+
$this->assertEquals(100, $addressValidationReply->AddressResults[0]->ProposedAddressDetails[0]->Score);
96+
$this->assertEquals(97, $addressValidationReply->AddressResults[1]->ProposedAddressDetails[0]->Score);
97+
$this->assertEquals(92, $addressValidationReply->AddressResults[2]->ProposedAddressDetails[0]->Score);
98+
$this->assertEquals(strtoupper($addressValidationRequest->AddressesToValidate[0]->Address->StreetLines[0]), $addressValidationReply->AddressResults[0]->ProposedAddressDetails[0]->Address->StreetLines);
99+
}
24100
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
O:8:"stdClass":5:{s:15:"HighestSeverity";s:7:"SUCCESS";s:13:"Notifications";O:8:"stdClass":2:{s:8:"Severity";s:7:"SUCCESS";s:6:"Source";s:3:"wsi";}s:7:"Version";O:8:"stdClass":4:{s:9:"ServiceId";s:4:"aval";s:5:"Major";i:2;s:12:"Intermediate";i:0;s:5:"Minor";i:0;}s:14:"ReplyTimestamp";s:29:"2017-06-24T09:13:35.235-05:00";s:14:"AddressResults";a:3:{i:0;O:8:"stdClass":2:{s:9:"AddressId";s:1:"1";s:22:"ProposedAddressDetails";O:8:"stdClass":6:{s:5:"Score";i:100;s:7:"Changes";a:2:{i:0;s:25:"APARTMENT_NUMBER_REQUIRED";i:1;s:10:"NO_CHANGES";}s:17:"ResidentialStatus";s:12:"UNDETERMINED";s:23:"DeliveryPointValidation";s:11:"UNCONFIRMED";s:7:"Address";O:8:"stdClass":5:{s:11:"StreetLines";s:16:"100 NICKERSON RD";s:4:"City";s:11:"MARLBOROUGH";s:19:"StateOrProvinceCode";s:2:"MA";s:10:"PostalCode";s:10:"01752-4613";s:11:"CountryCode";s:2:"US";}s:21:"RemovedNonAddressData";s:0:"";}}i:1;O:8:"stdClass":2:{s:9:"AddressId";s:1:"2";s:22:"ProposedAddressDetails";O:8:"stdClass":6:{s:5:"Score";i:97;s:7:"Changes";s:25:"MODIFIED_TO_ACHIEVE_MATCH";s:17:"ResidentialStatus";s:12:"UNDETERMINED";s:23:"DeliveryPointValidation";s:11:"UNAVAILABLE";s:7:"Address";O:8:"stdClass":5:{s:11:"StreetLines";s:16:"167 PROSPECT HWY";s:4:"City";s:11:"SEVEN HILLS";s:19:"StateOrProvinceCode";s:3:"NSW";s:10:"PostalCode";s:4:"2147";s:11:"CountryCode";s:2:"AU";}s:21:"RemovedNonAddressData";s:0:"";}}i:2;O:8:"stdClass":2:{s:9:"AddressId";s:1:"3";s:22:"ProposedAddressDetails";O:8:"stdClass":6:{s:5:"Score";i:92;s:7:"Changes";s:25:"MODIFIED_TO_ACHIEVE_MATCH";s:17:"ResidentialStatus";s:12:"UNDETERMINED";s:23:"DeliveryPointValidation";s:11:"UNAVAILABLE";s:7:"Address";O:8:"stdClass":5:{s:11:"StreetLines";s:32:"3 WATCHMOOR HOUSE WATCHMOOR ROAD";s:4:"City";s:9:"CAMBERLEY";s:19:"StateOrProvinceCode";s:6:"SURREY";s:10:"PostalCode";s:8:"GU15 3AQ";s:11:"CountryCode";s:2:"GB";}s:21:"RemovedNonAddressData";s:0:"";}}}}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
O:8:"stdClass":5:{s:15:"HighestSeverity";s:7:"SUCCESS";s:13:"Notifications";O:8:"stdClass":2:{s:8:"Severity";s:7:"SUCCESS";s:6:"Source";s:3:"wsi";}s:7:"Version";O:8:"stdClass":4:{s:9:"ServiceId";s:4:"aval";s:5:"Major";i:2;s:12:"Intermediate";i:0;s:5:"Minor";i:0;}s:14:"ReplyTimestamp";s:29:"2017-06-24T08:13:34.972-05:00";s:14:"AddressResults";O:8:"stdClass":2:{s:9:"AddressId";s:1:"1";s:22:"ProposedAddressDetails";O:8:"stdClass":6:{s:5:"Score";i:0;s:7:"Changes";a:2:{i:0;s:10:"NORMALIZED";i:1;s:29:"HOUSE_OR_BOX_NUMBER_NOT_FOUND";}s:17:"ResidentialStatus";s:12:"UNDETERMINED";s:23:"DeliveryPointValidation";s:11:"UNCONFIRMED";s:7:"Address";O:8:"stdClass":5:{s:11:"StreetLines";s:13:"12345 MAIN ST";s:4:"City";s:7:"ANYTOWN";s:19:"StateOrProvinceCode";s:2:"NY";s:10:"PostalCode";s:5:"47711";s:11:"CountryCode";s:2:"US";}s:21:"RemovedNonAddressData";s:0:"";}}}

0 commit comments

Comments
 (0)