def test_color_length_optimizer_does_nothing_when_color_does_not_exist(self): original_data = requests_bodies.build_request_body( properties_to_be_removed=['color']) optimizer = color_length_optimizer.ColorLengthOptimizer() _, optimization_result = optimizer.process(original_data) self.assertEqual(0, optimization_result.num_of_products_optimized)
def test_color_optimizer_does_not_remove_color_with_exactly_forty_chars(self): color_with_exactly_forty_chars = 'BlackBlackBlackBlackBlackBlackBlackBlack' original_data = requests_bodies.build_request_body( properties_to_be_updated={'color': color_with_exactly_forty_chars}) optimizer = color_length_optimizer.ColorLengthOptimizer() optimized_data, optimization_result = optimizer.process(original_data) product = optimized_data['entries'][0]['product'] self.assertEqual(color_with_exactly_forty_chars, product['color']) self.assertEqual(0, optimization_result.num_of_products_optimized)
def test_color_length_optimizer_does_nothing_when_color_valid_multiple_values( self): original_color = 'Blue/White/Red' original_data = requests_bodies.build_request_body( properties_to_be_updated={'color': original_color}) optimizer = color_length_optimizer.ColorLengthOptimizer() optimized_data, optimization_result = optimizer.process(original_data) product = optimized_data['entries'][0]['product'] self.assertEqual(original_color, product['color']) self.assertEqual(0, optimization_result.num_of_products_optimized)
def test_color_length_optimizer_removes_colors_until_only_three_colors_remain( self): color_with_five_values = 'Blue/White/Red/Black/Orange' original_data = requests_bodies.build_request_body( properties_to_be_updated={'color': color_with_five_values}) optimizer = color_length_optimizer.ColorLengthOptimizer() optimized_data, optimization_result = optimizer.process(original_data) product = optimized_data['entries'][0]['product'] self.assertEqual('Blue/White/Red', product['color']) self.assertEqual(1, optimization_result.num_of_products_optimized)
def test_color_length_optimizer_removes_colors_longer_than_forty_chars(self): color_with_value_longer_than_forty_chars = 'BlackBlackBlackBlackBlackBlackBlackBlackBlack/Blue' original_data = requests_bodies.build_request_body( properties_to_be_updated={ 'color': color_with_value_longer_than_forty_chars }) optimizer = color_length_optimizer.ColorLengthOptimizer() optimized_data, optimization_result = optimizer.process(original_data) product = optimized_data['entries'][0]['product'] self.assertEqual('Blue', product['color']) self.assertEqual(1, optimization_result.num_of_products_optimized)
def test_color_length_optimizer_removes_colors_until_length_is_less_than_100( self): color_with_three_len_thirty_five_colors = ( 'BlackBlackBlackBlackBlackBlackBlack' '/WhiteWhiteWhiteWhiteWhiteWhiteWhite' '/GreenGreenGreenGreenGreenGreenGreen') original_data = requests_bodies.build_request_body( properties_to_be_updated={ 'color': color_with_three_len_thirty_five_colors }) optimizer = color_length_optimizer.ColorLengthOptimizer() optimized_data, optimization_result = optimizer.process(original_data) product = optimized_data['entries'][0]['product'] self.assertEqual( 'BlackBlackBlackBlackBlackBlackBlack' '/WhiteWhiteWhiteWhiteWhiteWhiteWhite', product['color']) self.assertEqual(1, optimization_result.num_of_products_optimized)