def test_export_rpm_json(self, mock_isdir, mock_makedirs, mock_open, mock_dump): """ Test that rpm metadata is correctly exported as JSON documents """ # Setup metadata = {'repodata': None, 'key': 'value', '_removed_key': 'removed_value'} rpm1_key = {'name': 'test1', 'version': '1.0', 'release': '1', 'arch': 'noarch'} rpm2_key = {'name': 'test2', 'version': '1.0', 'release': '1', 'arch': 'noarch'} rpm1 = AssociatedUnit(ids.TYPE_ID_RPM, rpm1_key, metadata.copy(), None, None, None, None, None) rpm2 = AssociatedUnit(ids.TYPE_ID_RPM, rpm2_key, metadata.copy(), None, None, None, None, None) rpm_units = [rpm1, rpm2] expected_paths = ['/working/dir/test1-1.0-1.noarch.json', '/working/dir/test2-1.0-1.noarch.json'] # Test export_utils.export_rpm_json('/working/dir', rpm_units) mock_isdir.assert_called_once_with('/working/dir') self.assertEqual(0, mock_makedirs.call_count) self.assertEqual(2, mock_open.call_count) self.assertEqual(2, mock_dump.call_count) self.assertEqual((expected_paths[0], 'w'), mock_open.call_args_list[0][0]) self.assertEqual((expected_paths[1], 'w'), mock_open.call_args_list[1][0]) # Expected result is that repodata and anything with a leading _ is removed from the metadata metadata.pop('_removed_key') metadata.pop('repodata') expected_dict1 = {'unit_key': rpm1_key, 'unit_metadata': metadata} expected_dict2 = {'unit_key': rpm2_key, 'unit_metadata': metadata} self.assertEqual(expected_dict1, mock_dump.call_args_list[0][0][0]) self.assertEqual(expected_dict2, mock_dump.call_args_list[1][0][0])
def test_working_dir_missing(self, mock_isdir, mock_makedirs): """ Test that when the working directory does not currently exist, it is created """ # Setup working_dir = '/some/working/dir' mock_isdir.return_value = False # Test export_utils.export_rpm_json(working_dir, []) mock_isdir.assert_called_once_with(working_dir) mock_makedirs.assert_called_once_with(working_dir)