def test_nested_mapping_with_lists(self): mapping = { 'a_field': S('a', 'b'), 'a': [{ 'nested': { 'field': S('f1', 'f2'), }, }], } source = { 'a': { 'b': 'ok' }, 'f1': { 'f2': 'hi' }, } expected = { 'a_field': 'ok', 'a': [{ 'nested': { 'field': 'hi' } }], } self.assertDictEqual(bend(mapping, source), expected)
def test_flat_mapping(self): mapping = { 'a_field': S('a', 'b'), 'another_field': K('wow'), } source = {'a': {'b': 'ok'}} expected = { 'a_field': 'ok', 'another_field': 'wow', } self.assertDictEqual(bend(mapping, source), expected)
def test_nested_mapping_with_lists(self): mapping = { 'a_field': S('a', 'b'), 'a': [{ 'nested': { 'field': S('f1', 'f2'), }, }], } source = { 'a': {'b': 'ok'}, 'f1': {'f2': 'hi'}, } expected = { 'a_field': 'ok', 'a': [{'nested': {'field': 'hi'}}], } self.assertDictEqual(bend(mapping, source), expected)
def raw_execute(self, source): transport = Transport.from_source(source) context = self._context or transport.context # ListOp.execute assumes the func is saved on self._func self._func = lambda v: bend(self._mapping, v, context) return Transport(self.execute(transport.value), transport.context)
def test_context_deep(self): mapping = {'a': [{'a': Context() >> S('b')}]} res = bend(mapping, {}, context={'b': 23}) self.assertDictEqual(res, {'a': [{'a': 23}]})
def test_context_shallow(self): mapping = {'a': Context() >> S('b')} res = bend(mapping, {}, context={'b': 23}) self.assertDictEqual(res, {'a': 23})
def test_constants_without_K(self): mapping = {'a': 'a const value', 'b': 123} self.assertDictEqual(bend(mapping, {}), { 'a': 'a const value', 'b': 123 })
def test_empty_mapping(self): self.assertDictEqual(bend({}, {'a': 1}), {})
def test_op_with_context(self): mapping = {'res': (Context() >> S('b')) - S('a')} in_ = {'a': 23} context = {'b': 27} res = bend(mapping, in_, context=context) self.assertEqual(res, {'res': 4})
def test_list_with_non_dict_elements(self): mapping = {'k': ['foo1', S('bar1')]} source = {'bar1': 'val 1'} expected = {'k': ['foo1', 'val 1']} self.assertDictEqual(bend(mapping, source), expected)
def test_constants_without_K(self): mapping = {'a': 'a const value', 'b': 123} self.assertDictEqual(bend(mapping, {}), {'a': 'a const value', 'b': 123})