From 3f2fc53c57606a110162eccc2409f5bcc1172af0 Mon Sep 17 00:00:00 2001 From: Filipp Lepalaan Date: Fri, 6 Sep 2013 18:30:54 +0300 Subject: Added more coverage details to Product --- gsxws/products.py | 26 ++++++++++++++++++++++++ tests/fixtures/onsite_coverage.xml | 38 ++++++++++++++++++++++++++++++++++++ tests/fixtures/repair_details_ca.xml | 5 +++-- tests/test_gsxws.py | 21 +++++++++++++++++++- 4 files changed, 87 insertions(+), 3 deletions(-) create mode 100644 tests/fixtures/onsite_coverage.xml diff --git a/gsxws/products.py b/gsxws/products.py index 654bef3..36aff3a 100644 --- a/gsxws/products.py +++ b/gsxws/products.py @@ -144,9 +144,35 @@ class Product(GsxObject): import re return ad.unlocked or (re.search("Unlock", ad.nextTetherPolicyDetails) is not None) + @property + def is_vintage(self): + title = self.warrantyDetails.productDescription + return title.startswith('~VIN,') + + @property def is_locked(self): return not self.is_unlocked() + @property + def parts_covered(self): + return self.warrantyDetails.partCovered is True + + @property + def labor_covered(self): + return self.warrantyDetails.laborCovered is True + + @property + def parts_and_labor_covered(self): + return self.parts_covered and self.labor_covered + + @property + def has_onsite(self): + from datetime import date + try: + return date.today() < self.warrantyDetails.onsiteEndDate + except Exception: + return False + if __name__ == '__main__': import sys diff --git a/tests/fixtures/onsite_coverage.xml b/tests/fixtures/onsite_coverage.xml new file mode 100644 index 0000000..1fbb0ea --- /dev/null +++ b/tests/fixtures/onsite_coverage.xml @@ -0,0 +1,38 @@ + + + + + + oWynXen8awwVyLGnvh8L8Je + + XXXXXXXXXXXXXXXXXX + Custom Bid Contracts + 10/13/13 + 10/14/10 + 38 + 10/14/10 + 10/14/10 + 10/13/13 + US + 10/14/10 + http://service.info.apple.com/parts/service_parts/products/mbp13_mid10.jpg + http://service.info.apple.com/parts/service_parts/ev/mbp13_mid10.ev.pdf + http://download.info.apple.com/Apple_Support_Area/Misc/Service/servicemanuals/mbp13_mid09.pdf + MacBook Pro (13-inch, Mid 2010) + MBP 13.3/2.4/2X2GB/250/SD/GLSY + ONSITE ORANGE (2ND BUS DAY) + Y + 10/13/13 + 10/14/10 + CC + Y + Y + XXXXXXXXXX + + + + + + + + diff --git a/tests/fixtures/repair_details_ca.xml b/tests/fixtures/repair_details_ca.xml index 53c3b28..c3a6a57 100644 --- a/tests/fixtures/repair_details_ca.xml +++ b/tests/fixtures/repair_details_ca.xml @@ -1,3 +1,4 @@ + @@ -29,8 +30,8 @@ Madera 005 CUPERTINO - Ääkköset - Tässäkin + ??kk?set + T?ss?kin 999999999 diff --git a/tests/test_gsxws.py b/tests/test_gsxws.py index ee1d943..467a573 100644 --- a/tests/test_gsxws.py +++ b/tests/test_gsxws.py @@ -6,6 +6,7 @@ from datetime import date from unittest import main, skip, TestCase from gsxws.objectify import parse +from gsxws.products import Product from gsxws import repairs, escalations @@ -95,6 +96,25 @@ class TestWarrantyFunctions(TestCase): self.assertTrue(self.data.partCovered) +class TestOnsiteCoverage(TestCase): + def setUp(self): + from gsxws.core import connect + logging.basicConfig(level=logging.DEBUG) + env = os.environ + connect(env['GSX_USER'], env['GSX_PASSWORD'], env['GSX_SOLDTO'], env['GSX_ENV']) + self.product = Product('XXXXXXXXXXX') + self.product.warranty() + + def test_has_onsite(self): + self.assertTrue(self.product.has_onsite) + + def test_coverage(self): + self.assertTrue(self.product.parts_and_labor_covered) + + def test_is_vintage(self): + self.assertFalse(self.product.is_vintage) + + class TestActivation(TestCase): def setUp(self): self.data = parse('tests/fixtures/ios_activation.xml', @@ -107,7 +127,6 @@ class TestActivation(TestCase): self.assertIs(type(self.data.unlocked), bool) self.assertTrue(self.data.unlocked) - from gsxws.products import Product p = Product() self.assertTrue(p.is_unlocked(self.data)) -- cgit v1.2.3