예제 #1
0
    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)
예제 #2
0
    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)