4
4
5
5
use FedEx \AddressValidationService \Request ;
6
6
use FedEx \AddressValidationService \ComplexType ;
7
+ use FedEx \RateService \ComplexType \Address ;
7
8
use FedEx \Utility \ComplexTypePopulator ;
8
9
9
10
class AddressValidationTest extends TestCase
@@ -21,4 +22,79 @@ public function testAddressValidationRequest()
21
22
$ request = new Request ($ mockSoapClient );
22
23
$ this ->assertEquals (ComplexType \AddressValidationRequest::class, $ request ->getAddressValidationReply ($ addressValidationRequest , true ));
23
24
}
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
+ }
24
100
}
0 commit comments