def test_bad_metadata(self):
        # Set up a distribution unit is no metadata
        distribution_unit = [AssociatedUnit(ids.TYPE_ID_DISTRO, None, {}, None, None, None, None, None)]

        # Without the metadata, the unit should not be exported
        summary, details = export_utils.export_distribution('/working/dir', distribution_unit)
        self.assertEqual(0, summary['num_distribution_units_exported'])
    def test_failed_copy(self, mock_copy):
        # Set up a distribution unit
        metadata = {'files': [{'relativepath': 'unit'}]}
        distribution_unit = [AssociatedUnit(ids.TYPE_ID_DISTRO, None, metadata, '/fake/path', None,
                                            None, None, None)]

        # Test that when create_copy fails, units are not exported
        summary, details = export_utils.export_distribution('/working/dir', distribution_unit)
        mock_copy.assert_called_once_with('/fake/path/unit', '/working/dir/unit')
        self.assertEqual(0, summary['num_distribution_units_exported'])
    def test_successful_export(self, mock_copy):
        # Setup a distribution unit
        metadata = {'files': [{'relativepath': 'unit'}]}
        distribution_units = [AssociatedUnit(ids.TYPE_ID_DISTRO, None, metadata, '/fake/path', None,
                                             None, None, None)]

        # Test that the unit is successfully exported
        summary, details = export_utils.export_distribution('/working/dir', distribution_units)
        self.assertEqual(('/fake/path/unit', '/working/dir/unit'), mock_copy.call_args[0])
        self.assertEqual(1, summary['num_distribution_units_exported'])