def test_apply_multiple_with_previous_values(self): # given: converter = _create_mock_string_converter() cell_conversion = ListElementCellConversion('staff.developers.name', converter) # and: metadata = MetadataEntity() metadata.define_content('developers', [{'age': 32}, {'age': 23}]) # when: cell_conversion.apply(metadata, 'John||Paul||George||Ringo') # then: developers = metadata.get_content('developers') self.assertEqual(4, len(developers)) # and: expected_names = [ 'John - converted', 'Paul - converted', 'George - converted', 'Ringo - converted' ] expected_ages = [32, 23, None, None] for index, developer in enumerate(developers): self.assertEqual(expected_names[index], developer.get('name')) self.assertEqual(expected_ages[index], developer.get('age'))
def test_define_content(self): # given: metadata = MetadataEntity() # when: metadata.define_content('user.name', 'Juan dela Cruz') metadata.define_content('user.age', 47) # then: user = metadata.get_content('user') self.assertIsNotNone(user) self.assertEqual('Juan dela Cruz', user.get('name')) self.assertEqual(47, user.get('age'))
def test_apply(self): # given: int_converter = MagicMock('int_converter') int_converter.convert = lambda __: 27 # and: cell_conversion = DirectCellConversion('profile.user.age', int_converter) # when: metadata = MetadataEntity() cell_conversion.apply(metadata, '27') # then: self.assertEqual(27, metadata.get_content('user.age'))
def test_apply_none_data(self): # given: converter = _create_mock_string_converter() cell_conversion = ListElementCellConversion('user.name', converter) # and: metadata = MetadataEntity(content={'user': [{'id': '65fd8'}]}) # when: cell_conversion.apply(metadata, None) # then: list_element = metadata.get_content('user')[0] self.assertTrue('name' not in list_element.keys(), '[name] should not be added to element.')
def test_apply_skips_none_data(self): # given: string_converter = StringConverter() cell_conversion = DirectCellConversion('product.id', string_converter) # when: metadata = MetadataEntity( content={'product': { 'name': 'product name' }}) cell_conversion.apply(metadata, None) # then: product = metadata.get_content('product') self.assertIsNotNone(product) self.assertTrue('id' not in product, '[id] not expected to be in product field')
def test_apply(self): # given: converter = _create_mock_string_converter() cell_conversion = IdentityCellConversion('product.product_id', converter) # and: metadata = MetadataEntity() # when: cell_conversion.apply(metadata, 'product_no_144') # then: expected_id = 'product_no_144 - converted' self.assertEqual(expected_id, metadata.object_id) # and: identity value should be in content self.assertEqual(expected_id, metadata.get_content('product_id'))
def test_apply(self): # given: converter = _create_mock_string_converter() cell_conversion = FieldOfSingleElementListCellConversion('library.books.title', converter) # when: metadata = MetadataEntity() cell_conversion.apply(metadata, 'Harry Potter') # then: books = metadata.get_content('books') self.assertIsNotNone(books) self.assertEqual(1, len(books)) # and: thing = books[0] self.assertEqual('Harry Potter - converted', thing.get('title'))
def test_apply(self): # given: converter = _create_mock_string_converter() cell_conversion = ListElementCellConversion('stuff.list_of_things.name', converter) # when: metadata = MetadataEntity() cell_conversion.apply(metadata, 'sample') # then: list_of_things = metadata.get_content('list_of_things') self.assertIsNotNone(list_of_things) self.assertEqual(1, len(list_of_things)) # and: thing = list_of_things[0] self.assertEqual('sample - converted', thing.get('name'))
def test_apply_multiple(self): # given: converter = _create_mock_string_converter() cell_conversion = ListElementCellConversion('group.members.name', converter) # when: metadata = MetadataEntity() cell_conversion.apply(metadata, 'Juan||Pedro||Jane') # then: members = metadata.get_content('members') self.assertEqual(3, len(members)) # and: expected_names = ['Juan - converted', 'Pedro - converted', 'Jane - converted'] for member in members: member_name = member.get('name') self.assertIn(member_name, expected_names)
def test_apply_previously_processed_field(self): # given: converter = _create_mock_string_converter() cell_conversion = ListElementCellConversion('shop.user.basket.product_name', converter) # and: metadata = MetadataEntity() metadata.define_content('user.basket', [{'quantity': 3}]) # when: cell_conversion.apply(metadata, 'apple') # then: basket = metadata.get_content('user.basket') self.assertEqual(1, len(basket)) # and: current_element = basket[0] self.assertEqual(3, current_element.get('quantity')) self.assertEqual('apple - converted', current_element.get('product_name'))
def test_apply_multiple_value_field(self): # given: converter = ListConverter(base_converter=_create_mock_string_converter()) cell_conversion = FieldOfSingleElementListCellConversion('library.books.authors', converter) # and: metadata = MetadataEntity(content={ 'books': [ {'title': 'Once Upon a Time'} ] }) # when: cell_conversion.apply(metadata, 'J dela Cruz||P Smith') # then: books = metadata.get_content('books') self.assertEqual(1, len(books)) # and: book = books[0] self.assertEqual(['J dela Cruz - converted', 'P Smith - converted'], book.get('authors'))