aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gsxws/objectify.py7
-rw-r--r--gsxws/products.py4
-rw-r--r--tests/fixtures/escalation_details_lookup.xml29
-rw-r--r--tests/test_gsxws.py21
4 files changed, 57 insertions, 4 deletions
diff --git a/gsxws/objectify.py b/gsxws/objectify.py
index 3480b70..b37379c 100644
--- a/gsxws/objectify.py
+++ b/gsxws/objectify.py
@@ -84,7 +84,8 @@ def gsx_datetime(value):
def gsx_timestamp(value):
- return datetime.strptime(value, "%d-%b-%y %H:%M:%S")
+ # 03/06/14 09:01 PM
+ return datetime.strptime(value, "%m/%d/%y %H:%M %p")
class GsxElement(objectify.ObjectifiedElement):
@@ -126,6 +127,8 @@ class GsxElement(objectify.ObjectifiedElement):
return gsx_price(result)
if name.endswith('Date'):
return gsx_date(result)
+ if name.endswith('Timestamp'):
+ return gsx_timestamp(result)
if re.search(r'^[YN]$', result):
return gsx_boolean(result)
@@ -153,8 +156,10 @@ def parse(root, response):
return root.find('*//%s' % response)
+
if __name__ == '__main__':
import doctest
import logging
logging.basicConfig(level=logging.DEBUG)
doctest.testmod()
+
diff --git a/gsxws/products.py b/gsxws/products.py
index a9073d6..5b58a23 100644
--- a/gsxws/products.py
+++ b/gsxws/products.py
@@ -81,7 +81,7 @@ class Product(object):
if date_received:
self._gsx.unitReceivedDate = date_received
-
+
self._gsx._submit("unitDetail", "WarrantyStatus", "warrantyDetailInfo")
self.warrantyDetails = self._gsx._req.objects
self.imageURL = self.warrantyDetails.imageURL
@@ -186,7 +186,7 @@ class Product(object):
@property
def is_valid(self):
- return self.is_iphone or self.is_ipad or self.is_mac
+ return self.is_ios or self.is_mac
@property
def has_warranty(self):
diff --git a/tests/fixtures/escalation_details_lookup.xml b/tests/fixtures/escalation_details_lookup.xml
new file mode 100644
index 0000000..6aa9335
--- /dev/null
+++ b/tests/fixtures/escalation_details_lookup.xml
@@ -0,0 +1,29 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
+ <S:Body>
+ <ns3:GeneralEscalationDetailsLookupResponse xmlns:ns2="http://asp.core.endpoint.ws.gsx.ist.apple.com/" xmlns:ns3="http://gsxws.apple.com/elements/core/asp" xmlns:ns4="http://gsxws.apple.com/elements/global" xmlns:ns5="http://gsxws.apple.com/elements/core/asp/emea" xmlns:ns6="http://gsxws.apple.com/elements/core">
+ <GeneralEscalationDetailsLookupResponse>
+ <operationId>4ClHBDHhOL0NWdQMp4XBB</operationId>
+ <lookupResponseData>
+ <escalationId>2392767</escalationId>
+ <escalationType>GSX Help</escalationType>
+ <escalationStatus>O</escalationStatus>
+ <issueType>GSX Usage Question</issueType>
+ <escalationTo>Apple</escalationTo>
+ <createdBy>filipp Lepalaan</createdBy>
+ <createTimestamp>03/06/14 09:01 PM</createTimestamp>
+ <lastViewedBy>filipp Lepalaan</lastViewedBy>
+ <lastViewedTimestamp>03/06/14 09:06 PM</lastViewedTimestamp>
+ <lastModifiedBy>filipp Lepalaan</lastModifiedBy>
+ <lastModifiedTimestamp>03/06/14 09:02 PM</lastModifiedTimestamp>
+ <escalationAge>4 minutes </escalationAge>
+ <escalationNotes>
+ <note>blaa</note>
+ <note>test
+</note>
+ </escalationNotes>
+ </lookupResponseData>
+ </GeneralEscalationDetailsLookupResponse>
+ </ns3:GeneralEscalationDetailsLookupResponse>
+ </S:Body>
+</S:Envelope> \ No newline at end of file
diff --git a/tests/test_gsxws.py b/tests/test_gsxws.py
index 3cb1e06..5571c22 100644
--- a/tests/test_gsxws.py
+++ b/tests/test_gsxws.py
@@ -1,8 +1,8 @@
# -*- coding: utf-8 -*-
import logging
-from datetime import date
from os import environ as env
+from datetime import date, datetime
from unittest import main, skip, TestCase
@@ -29,6 +29,24 @@ class TestCoreFunctions(TestCase):
self.assertRegexpMatches(rep.dumps(), '<GsxObject><blaa>ääöö</blaa><orderLines>')
+class TestTypes(TestCase):
+ def setUp(self):
+ xml = open('tests/fixtures/escalation_details_lookup.xml', 'r').read()
+ self.data = parse(xml, 'lookupResponseData')
+
+ def test_unicode(self):
+ self.assertIsInstance(self.data.lastModifiedBy, unicode)
+
+ def test_timestamp(self):
+ self.assertIsInstance(self.data.createTimestamp, datetime)
+
+ def test_ts_comp(self):
+ self.assertGreater(datetime.now(), self.data.createTimestamp)
+
+ def test_list(self):
+ self.assertIsInstance(self.data.escalationNotes, list)
+
+
class TestErrorFunctions(TestCase):
def setUp(self):
xml = open('tests/fixtures/multierror.xml', 'r').read()
@@ -251,6 +269,7 @@ class TestRepairUpdate(RemoteTestCase):
result = self.repair.set_techid('XXXXX')
self.assertEqual(result.confirmationNumber, self.dispatchId)
+
class TestCarryinRepairDetail(TestCase):
def setUp(self):
self.data = parse('tests/fixtures/repair_details_ca.xml',