def test_accessories_no_match(self): title = "Nikon 85mm f/3.5 G VR AF-S DX ED Micro-Nikkor Lens + " \ "UV Filter + Accessory Kit for Nikon D300s, D300, D40, D60, " \ "D5000, D7000, D90, D3000 & D3100 Digital SLR Cameras" product_d3000 = Product.create_from_dict({ "product_name": "Nikon_D3000", "manufacturer": "Nikon", "model": "D3000", "announced-date": "2009-07-29T20:00:00.000-04:00" }) product_d3100 = Product.create_from_dict({ "product_name": "Nikon_D3100", "manufacturer": "Nikon", "model": "D3100", "announced-date": "2010-08-18T20:00:00.000-04:00" }) self.assertFalse(product_d3000.calculate_match_quality(title)) self.assertFalse(product_d3100.calculate_match_quality(title))
def test_name_as_tie_breaker(self): longer_name = Product.create_from_dict({ "product_name": "Canon_EOS_Rebel_T1i", "manufacturer": "Canon", "model": "T1i", "family": "Rebel", "announced-date": "2009-03-24T20:00:00.000-04:00" }) shorter_name = Product.create_from_dict({ "product_name": "Canon_EOS_500D", "manufacturer": "Canon", "model": "500D", "family": "EOS", "announced-date": "2009-03-24T20:00:00.000-04:00" }) listing = { "title": "Canon EOS Rebel T1i 500D 15.1 MP Digital SLR Camera " "with Canon EF-S 18-55mm f/3.5-5.6 IS SLR Lens + Tamron " "75-300 f/4-5.6 LD Lens + .42x Wide Angle Lens with " "Macro + +1, +2, +4, +10 4 Piece Macro Close Up Kit + " "16 GB Memory Card + Multi-Coated UV Filter (2) + " "Multi-Coated Polarizer Filter + Digital Slave Flash + " "50 \" Tripod + Deluxe Padded Camera Bag + 6 Piece " "Accessory Kit + 3 Year Warranty Repair Contract", "manufacturer": "Canon", "currency": "USD", "price": "1294.95" } processor = ListingProcessor() processor.products = {"Canon": [longer_name, shorter_name]} match = processor.process_listing(listing) self.assertTrue(match) self.assertEqual(len(shorter_name._listings), 0) self.assertEqual(len(longer_name._listings), 1) self.assertDictEqual(longer_name._listings[0], listing)
def test_name_as_tie_breaker_including_with(self): longer_name = Product.create_from_dict({ "product_name": "Canon_EOS_Rebel_T1i", "manufacturer": "Canon", "model": "T1i", "family": "Rebel", "announced-date": "2009-03-24T20:00:00.000-04:00" }) shorter_name = Product.create_from_dict({ "product_name": "Canon_EOS_500D", "manufacturer": "Canon", "model": "500D", "family": "EOS", "announced-date": "2009-03-24T20:00:00.000-04:00" }) listing = { "title": "20 Piece All Purpose Kit with Canon EOS Rebel T1i 500D " "15.1 MP Digital SLR Camera (Black Body) + Sigma " "28-300mm f/3.5-6.3 DG IF Macro Aspherical Lens + 8 GB " "Memory Card + Multi-Coated 3 Piece Filter Kit + Premier " "Holster Case + 50\" Tripod + 6 Piece Camera Accessory " "Kit + 3 Year Celltime Warranty Repair Contract", "manufacturer": "Canon", "currency": "USD", "price": "1189.95" } processor = ListingProcessor() processor.products = {"Canon": [shorter_name, longer_name]} match = processor.process_listing(listing) self.assertTrue(match) self.assertEqual(len(shorter_name._listings), 0) self.assertEqual(len(longer_name._listings), 1) self.assertDictEqual(longer_name._listings[0], listing)
def test_single_match(self): processor = ListingProcessor() listing = { "title": "Sony Cyber-shot DSC-W310 - Digital camera - compact - " "12.1 Mpix - optical zoom: 4 x - supported memory: " "MS Duo, SD, MS PRO Duo, MS PRO Duo Mark2, SDHC, " "MS PRO-HG Duo - silver", "manufacturer": "Sony", "currency": "USD", "price": "108.75" } w310 = Product.create_from_dict({ "product_name": "Sony_Cyber-shot_DSC-W310", "manufacturer": "Sony", "model": "DSC-W310", "family": "Cyber-shot", "announced-date": "2010-01-06T19:00:00.000-05:00" }) wx5 = Product.create_from_dict({ "product_name": "Sony_Cyber-shot_DSC-WX5", "manufacturer": "Sony", "model": "DSC-WX5", "family": "Cyber-shot", "announced-date": "2010-07-07T20:00:00.000-04:00" }) processor.products = {"Sony": [w310, wx5]} match = processor.process_listing(listing) self.assertTrue(match) self.assertEqual(len(wx5._listings), 0) self.assertEqual(len(w310._listings), 1) self.assertDictEqual(w310._listings[0], listing)
def test_better_match_with_longer_model(self): longer_model = Product.create_from_dict({ "product_name": "Pentax-WG-1-GPS", "manufacturer": "Pentax", "model": "WG-1 GPS", "family": "Optio", "announced-date": "2011-02-06T19:00:00.000-05:00" }) shorter_model = Product.create_from_dict({ "product_name": "Pentax-WG-1", "manufacturer": "Pentax", "model": "WG-1", "family": "Optio", "announced-date": "2011-02-06T19:00:00.000-05:00" }) listing = { "title": "PENTAX Optio WG-1 GPS - gris", "manufacturer": "Pentax", "currency": "EUR", "price": "421.99" } processor = ListingProcessor() processor.products = {"Pentax": [longer_model, shorter_model]} match = processor.process_listing(listing) self.assertTrue(match) self.assertEqual(len(shorter_model._listings), 0) self.assertEqual(len(longer_model._listings), 1) self.assertDictEqual(longer_model._listings[0], listing)
def test_better_match_with_family_and_model(self): without_family = Product.create_from_dict({ "product_name": "Leica_Digilux", "manufacturer": "Leica", "model": "Digilux", "announced-date": "1998-09-15T20:00:00.000-04:00" }) with_family = Product.create_from_dict({ "product_name": "Leica_Digilux_4.3", "manufacturer": "Leica", "model": "4.3", "family": "Digilux", "announced-date": "2000-08-31T20:00:00.000-04:00" }) listing = { "title": "Leica Digilux 4.3 2.4MP Digital Camera w/ 3x Optical " "Zoom", "manufacturer": "Leica", "currency": "USD", "price": "225.00" } processor = ListingProcessor() processor.products = {"Leica": [without_family, with_family]} match = processor.process_listing(listing) self.assertTrue(match) self.assertEqual(len(without_family._listings), 0) self.assertEqual(len(with_family._listings), 1) self.assertDictEqual(with_family._listings[0], listing)
def test_product_create_from_dictionary_no_family_family_is_none(self): product = Product.create_from_dict({ "product_name": "Samsung_TL205", "manufacturer": "Samsung", "model": "TL205", "announced-date": "2010-01-05T19:00:00.000-05:00" }) self.assertIsNone(product._family, "Family should be None")
def test_duplicate_products_listing_to_first_reversed(self): product_1 = Product.create_from_dict({ "product_name": "Samsung-SL202", "manufacturer": "Samsung", "model": "SL202", "announced-date": "2009-02-16T19:00:00.000-05:00" }) product_2 = Product.create_from_dict({ "product_name": "Samsung_SL202", "manufacturer": "Samsung", "model": "SL202", "announced-date": "2009-02-16T19:00:00.000-05:00" }) listing = { "title": "Samsung SL202 10MP Digital Camera with 3x Optical " "Zoom and 2.7 inch LCD (Black)", "manufacturer": "Samsung", "currency": "USD", "price": "79.99" } reversed_processor = ListingProcessor() reversed_processor.products = {"Samsung": [product_2, product_1]} match = reversed_processor.process_listing(listing) self.assertTrue(match) self.assertEqual(len(product_1._listings), 0) self.assertEqual(len(product_2._listings), 1) self.assertDictEqual(product_2._listings[0], listing)
def test_product_create_from_dictionary_values_set(self): product = Product.create_from_dict({ "product_name": "Panasonic_Lumix_DMC-ZS1", "manufacturer": "Panasonic", "model": "DMC-ZS1", "family": "Lumix", "announced-date": "2009-01-26T19:00:00.000-05:00" }) self.assertEqual(product._name, "Panasonic_Lumix_DMC-ZS1") self.assertEqual(product._manufacturer, "Panasonic") self.assertEqual(product._model, "DMC-ZS1") self.assertEqual(product._family, "Lumix")