Skip to content

Commit 6f60800

Browse files
authored
Merge pull request #78 from python-fedex-devs/pickup_service_test
Add pickup service test
2 parents 49dffd0 + 7d0abe8 commit 6f60800

File tree

2 files changed

+83
-4
lines changed

2 files changed

+83
-4
lines changed

fedex/services/pickup_service.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ def __init__(self, config_obj, *args, **kwargs):
2020
self.Remarks = None
2121
self.CommodityDescription = None
2222
self.CountryRelationship = None
23+
self.PickupServiceCategory = None
2324
super(FedexCreatePickupRequest, self).__init__(self._config_obj, 'PickupService_v11.wsdl', *args, **kwargs)
2425

2526
def _prepare_wsdl_objects(self):
@@ -28,9 +29,8 @@ def _prepare_wsdl_objects(self):
2829
self.OriginDetail.PickupLocation = self.client.factory.create('ContactAndAddress')
2930
self.OriginDetail.PickupLocation.Contact = self.client.factory.create('Contact')
3031
self.OriginDetail.PickupLocation.Address = self.client.factory.create('Address')
31-
32-
self.OriginDetail.PackageLocation = self.client.factory.create('PickupBuildingLocationType')
33-
self.OriginDetail.BuildingPart = self.client.factory.create('BuildingPartCode')
32+
self.OriginDetail.PackageLocation = None
33+
self.OriginDetail.BuildingPart = None
3434

3535
self.TotalWeight = self.client.factory.create('Weight')
3636

@@ -55,11 +55,13 @@ def _assemble_and_send_request(self):
5555
TransactionDetail=self.TransactionDetail,
5656
Version=self.VersionId,
5757
OriginDetail=self.OriginDetail,
58+
PickupServiceCategory=self.PickupServiceCategory,
5859
PackageCount=self.PackageCount,
5960
TotalWeight=self.TotalWeight,
6061
CarrierCode=self.CarrierCode,
6162
OversizePackageCount=self.OversizePackageCount,
6263
Remarks=self.Remarks,
6364
CommodityDescription=self.CommodityDescription,
6465
CountryRelationship=self.CountryRelationship
65-
)
66+
)
67+

tests/test_pickup_service.py

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
"""
2+
Test module for the Fedex Pickup Service WSDL.
3+
"""
4+
5+
import unittest
6+
import logging
7+
import sys
8+
import datetime
9+
10+
sys.path.insert(0, '..')
11+
from fedex.services.pickup_service import FedexCreatePickupRequest
12+
13+
# Common global config object for testing.
14+
from tests.common import get_fedex_config
15+
16+
CONFIG_OBJ = get_fedex_config()
17+
18+
logging.getLogger('suds').setLevel(logging.ERROR)
19+
logging.getLogger('fedex').setLevel(logging.INFO)
20+
21+
22+
@unittest.skipIf(not CONFIG_OBJ.account_number, "No credentials provided.")
23+
class FedexCreatePickupRequestTests(unittest.TestCase):
24+
"""
25+
These tests verify that the rate service WSDL is in good shape.
26+
"""
27+
28+
def test_rate(self):
29+
pickup_service = FedexCreatePickupRequest(CONFIG_OBJ)
30+
31+
pickup_service.OriginDetail.PickupLocation.Contact.PersonName = 'Sender Name'
32+
pickup_service.OriginDetail.PickupLocation.Contact.EMailAddress = '[email protected]'
33+
pickup_service.OriginDetail.PickupLocation.Contact.CompanyName = 'Acme Inc.'
34+
pickup_service.OriginDetail.PickupLocation.Contact.PhoneNumber = '9012638716'
35+
pickup_service.OriginDetail.PickupLocation.Address.StateOrProvinceCode = 'SC'
36+
pickup_service.OriginDetail.PickupLocation.Address.PostalCode = '29631'
37+
pickup_service.OriginDetail.PickupLocation.Address.CountryCode = 'US'
38+
pickup_service.OriginDetail.PickupLocation.Address.StreetLines = ['155 Old Greenville Hwy', 'Suite 103']
39+
pickup_service.OriginDetail.PickupLocation.Address.City = 'Clemson'
40+
# pickup_service.OriginDetail.PickupLocation.Address.UrbanizationCode = '' # For Puerto Rico only
41+
pickup_service.OriginDetail.PickupLocation.Address.Residential = False
42+
43+
# FRONT, NONE, REAR, SIDE
44+
# pickup_service.OriginDetail.PackageLocation = 'NONE'
45+
46+
# APARTMENT, BUILDING, DEPARTMENT, FLOOR, ROOM, SUITE
47+
# pickup_service.OriginDetail.BuildingPart = 'SUITE'
48+
49+
# Identifies the date and time the package will be ready for pickup by FedEx.
50+
pickup_service.OriginDetail.ReadyTimestamp = datetime.datetime.now().replace(microsecond=0).isoformat()
51+
52+
# Identifies the latest time at which the driver can gain access to pick up the package(s)
53+
pickup_service.OriginDetail.CompanyCloseTime = '23:00:00'
54+
55+
pickup_service.CarrierCode = 'FDXE'
56+
57+
pickup_service.TotalWeight.Units = 'LB'
58+
pickup_service.TotalWeight.Value = '1'
59+
pickup_service.PackageCount = '1'
60+
# pickup_service.OversizePackageCount = '1'
61+
62+
# pickup_service.CommodityDescription = ''
63+
64+
# DOMESTIC or INTERNATIONAL
65+
# pickup_service.CountryRelationship = 'DOMESTIC'
66+
67+
# See PickupServiceCategoryType
68+
# pickup_service.PickupServiceCategory = 'FEDEX_DISTANCE_DEFERRED'
69+
70+
pickup_service.send_request()
71+
72+
assert pickup_service.response.HighestSeverity == 'SUCCESS', pickup_service.response.Notifications[0].Message
73+
74+
75+
if __name__ == "__main__":
76+
logging.basicConfig(stream=sys.stdout, level=logging.INFO)
77+
unittest.main()

0 commit comments

Comments
 (0)