def test_associations_map(self): """Test AssociationsMap.""" assocs = associations.AssociationsMap('firmware', 'nodes', helpers.node_url_sort_key) # Add 'firmware.elf' assoc = assocs.extendvalues('firmware.elf', ['m3-2', 'm3-1', 'm3-10']) expected = [{u'firmwarename': u'firmware.elf', u'nodes': [u'm3-1', u'm3-2', u'm3-10']}] self._assert_json_equal(assocs, expected) # Add nodes assocs['firmware.elf'] += ['m3-6'] # also works with '+=' expected = [{u'firmwarename': u'firmware.elf', u'nodes': [u'm3-1', u'm3-2', u'm3-6', u'm3-10']}] self._assert_json_equal(assocs, expected) # Add 'a_tutorial.elf' assoc = assocs.setdefault('a_tutorial.elf', []) assoc.extend(['m3-5', 'm3-4']) # Use extend, data needs to be sorted expected = [{u'firmwarename': u'a_tutorial.elf', u'nodes': [u'm3-4', u'm3-5']}, {u'firmwarename': u'firmware.elf', u'nodes': [u'm3-1', u'm3-2', u'm3-6', u'm3-10']}] self._assert_json_equal(assocs, expected) # remove an entry del assocs['firmware.elf'] expected = [{u'firmwarename': u'a_tutorial.elf', u'nodes': [u'm3-4', u'm3-5']}] self._assert_json_equal(assocs, expected)
def test_associationsmap_from_list(self): """Test loading a dict from a list.""" assocs = associations.AssociationsMap('firmware', 'nodes', helpers.node_url_sort_key) assocs.extendvalues('test.elf', ['m3-1', 'm3-2']) assocs.extendvalues('fw.elf', ['m3-20', 'm3-5']) assocs_list = assocs.list() loaded_assocs = associations.AssociationsMap.from_list( assocs_list, 'firmware', 'nodes', helpers.node_url_sort_key) self.assertEqual(assocs_list, loaded_assocs.list()) self.assertEqual(loaded_assocs, assocs) # Check keys self.assertEqual(sorted(assocs.keys()), ['fw.elf', 'test.elf']) # Test loading None ret = associations.AssociationsMap.from_list(None, 'script', 'sites') self.assertTrue(ret is None)