From 269216c477a8506c529fa83665ec3405fcbaeda7 Mon Sep 17 00:00:00 2001 From: Filipp Lepalaan Date: Tue, 13 May 2014 22:02:05 +0300 Subject: Fix iOS diagnostics through Product.diagnostics() --- gsxws/objectify.py | 8 ++++++++ gsxws/products.py | 6 +++++- tests/test_gsxws.py | 17 +++++++++++++++-- 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/gsxws/objectify.py b/gsxws/objectify.py index e73adb3..19f6b12 100644 --- a/gsxws/objectify.py +++ b/gsxws/objectify.py @@ -9,6 +9,7 @@ from lxml import objectify from datetime import datetime DATETIME_TYPES = ('dispatchSentDate',) +DIAGS_TIMESTAMP_TYPES = ('startTimeStamp', 'endTimeStamp',) STRING_TYPES = ('alternateDeviceId', 'imeiNumber',) BASE64_TYPES = ('packingList', 'proformaFileData', 'returnLabelFileData',) FLOAT_TYPES = ('totalFromOrder', 'exchangePrice', 'stockPrice', 'netPrice',) @@ -88,6 +89,11 @@ def gsx_timestamp(value): return datetime.strptime(value, "%m/%d/%y %I:%M %p") +def gsx_diags_timestamp(value): + # It is always in GMT and in format DD-MMM-YY HH24:MM:SS + return datetime.strptime(value, "%d-%b-%y %I:%M:%S") + + class GsxElement(objectify.ObjectifiedElement): """ Each element in the GSX response tree should be a GsxElement @@ -121,6 +127,8 @@ class GsxElement(objectify.ObjectifiedElement): if name in DATETIME_TYPES: return gsx_datetime(result) + if name in DIAGS_TIMESTAMP_TYPES: + return gsx_diags_timestamp(result) if name in BASE64_TYPES: return gsx_attachment(result) if name in FLOAT_TYPES: diff --git a/gsxws/products.py b/gsxws/products.py index 5b58a23..6be6ace 100644 --- a/gsxws/products.py +++ b/gsxws/products.py @@ -113,7 +113,11 @@ class Product(object): """ >>> Product('DGKFL06JDHJP').diagnostics() """ - diags = Diagnostics(serialNumber=self.serialNumber) + diags = Diagnostics(serialNumber=self.sn) + + if hasattr(self, "alternateDeviceId"): + diags = Diagnostics(alternateDeviceId=self.alternateDeviceId) + return diags.fetch() def fetch_image(self, url=None): diff --git a/tests/test_gsxws.py b/tests/test_gsxws.py index 5012a1b..8ce6328 100644 --- a/tests/test_gsxws.py +++ b/tests/test_gsxws.py @@ -6,9 +6,10 @@ from datetime import date, datetime from unittest import main, skip, TestCase -from gsxws.objectify import parse +from gsxws.objectify import parse, gsx_diags_timestamp from gsxws.products import Product -from gsxws import repairs, escalations, lookups, GsxError, ServicePart +from gsxws import (repairs, escalations, lookups, + GsxError, ServicePart, diagnostics) class RemoteTestCase(TestCase): @@ -211,6 +212,18 @@ class TestWarrantyFunctions(TestCase): self.assertTrue(self.data.partCovered) +class TestDiagnostics(RemoteTestCase): + def setUp(self): + super(TestDiagnostics, self).setUp() + self.results = diagnostics.Diagnostics(serialNumber=env['GSX_SN']).fetch() + + def test_diag_result(self): + self.assertEqual(self.results.eventHeader.serialNumber, env['GSX_SN']) + + def test_result_timestamp(self): + ts = gsx_diags_timestamp(self.results.eventHeader.startTimeStamp) + self.assertIsInstance(ts, datetime) + class TestOnsiteCoverage(RemoteTestCase): def setUp(self): super(TestOnsiteCoverage, self).setUp() -- cgit v1.2.3