def test_invalid_chars_optimizer_does_nothing_when_title_and_description_do_not_exist( self): original_data = requests_bodies.build_request_body( properties_to_be_removed=['title', 'description']) optimizer = invalid_chars_optimizer.InvalidCharsOptimizer() _, optimization_result = optimizer.process(original_data) self.assertEqual(0, optimization_result.num_of_products_optimized)
def test_invalid_chars_optimizer_does_nothing_when_all_chars_valid(self): title_with_no_invalid_chars = 'Brand 150g Product Desc' original_data = requests_bodies.build_request_body( properties_to_be_updated={'title': title_with_no_invalid_chars}) optimizer = invalid_chars_optimizer.InvalidCharsOptimizer() optimized_data, optimization_result = optimizer.process(original_data) product = optimized_data['entries'][0]['product'] self.assertEqual(title_with_no_invalid_chars, product['title']) self.assertEqual(0, optimization_result.num_of_products_optimized)
def test_invalid_chars_optimizer_removes_last_char_in_unicode_private_area( self): title_with_last_char_in_unicode_private_area = ( f'Brand 150g{chr(0xF8FF)} ' f'Product Desc') original_data = requests_bodies.build_request_body( properties_to_be_updated={ 'title': title_with_last_char_in_unicode_private_area }) optimizer = invalid_chars_optimizer.InvalidCharsOptimizer() optimized_data, optimization_result = optimizer.process(original_data) product = optimized_data['entries'][0]['product'] self.assertEqual('Brand 150g Product Desc', product['title']) self.assertEqual(1, optimization_result.num_of_products_optimized)
def test_invalid_chars_optimizer_sets_product_tracking_field_to_sanitized_when_invalid_char_removed( self): # Char in pos 10 is invalid title_with_single_invalid_char = 'Brand 150g Product Desc' original_data = requests_bodies.build_request_body( properties_to_be_updated={'title': title_with_single_invalid_char}) optimizer = invalid_chars_optimizer.InvalidCharsOptimizer() tracking_field = 'customLabel4' with mock.patch.dict('os.environ', {'PRODUCT_TRACKING_FIELD': tracking_field}): optimized_data, _ = optimizer.process(original_data) product = optimized_data['entries'][0]['product'] self.assertEqual(enums.TrackingTag.SANITIZED.value, product[tracking_field])
def test_invalid_chars_optimizer_removes_multiple_invalid_chars(self): # Chars in pos 10 & pos 11 are invalid title_with_multiple_invalid_chars = 'Brand 150g Product Title' desc_with_multiple_invalid_chars = 'Brand 150g Product Desc' original_data = requests_bodies.build_request_body( properties_to_be_updated={ 'title': title_with_multiple_invalid_chars, 'description': desc_with_multiple_invalid_chars }) optimizer = invalid_chars_optimizer.InvalidCharsOptimizer() optimized_data, optimization_result = optimizer.process(original_data) product = optimized_data['entries'][0]['product'] self.assertEqual('Brand 150g Product Title', product['title']) self.assertEqual('Brand 150g Product Desc', product['description']) self.assertEqual(1, optimization_result.num_of_products_optimized)