mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-12-13 20:54:16 +00:00
Big restructuring
This commit is contained in:
45
tests/unit/test_merge_mapping.py
Normal file
45
tests/unit/test_merge_mapping.py
Normal file
@@ -0,0 +1,45 @@
|
||||
import unittest
|
||||
from filter_plugins.merge_mapping import merge_mapping
|
||||
from ansible.errors import AnsibleFilterError
|
||||
|
||||
class TestMergeMappingFilter(unittest.TestCase):
|
||||
def test_basic_merge_overwrites_and_adds(self):
|
||||
list1 = [
|
||||
{'source': 'a', 'target': 1},
|
||||
{'source': 'b', 'target': 2},
|
||||
]
|
||||
list2 = [
|
||||
{'source': 'b', 'target': 3},
|
||||
{'source': 'c', 'target': 4},
|
||||
]
|
||||
result = merge_mapping(list1, list2, 'source')
|
||||
result_dict = {item['source']: item['target'] for item in result}
|
||||
self.assertEqual(result_dict, {'a': 1, 'b': 3, 'c': 4})
|
||||
|
||||
def test_merge_preserves_and_overwrites_fields(self):
|
||||
list1 = [{'source': 'x', 'value': 100, 'flag': True}]
|
||||
list2 = [{'source': 'x', 'value': 200, 'note': 'updated'}]
|
||||
result = merge_mapping(list1, list2, 'source')
|
||||
self.assertEqual(len(result), 1)
|
||||
merged = result[0]
|
||||
self.assertEqual(merged['value'], 200)
|
||||
self.assertTrue(merged['flag'])
|
||||
self.assertEqual(merged['note'], 'updated')
|
||||
|
||||
def test_empty_lists_return_empty(self):
|
||||
self.assertEqual(merge_mapping([], [], 'source'), [])
|
||||
|
||||
def test_missing_key_raises_error(self):
|
||||
list1 = [{'target': 'no_source'}]
|
||||
list2 = []
|
||||
with self.assertRaises(AnsibleFilterError):
|
||||
merge_mapping(list1, list2, 'source')
|
||||
|
||||
def test_non_list_inputs_raise_error(self):
|
||||
with self.assertRaises(AnsibleFilterError):
|
||||
merge_mapping("not a list", [], 'source')
|
||||
with self.assertRaises(AnsibleFilterError):
|
||||
merge_mapping([], "not a list", 'source')
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user