dbryant4/furtive

View on GitHub
tests/test_manifest.py

Summary

Maintainability
A
0 mins
Test Coverage
""" Test cases for Manifest object """

import os
import unittest

from furtive.manifest import Manifest

class TestManifest(unittest.TestCase):
    """ Test case intending to test the furtive.manifest sub-module """

    def test_manifest_create(self):
        """ Ensure a manifest can be generated from a directory """

        manifest = Manifest('tests/fixtures/test-data', '.test_manifest.yaml')
        manifest.create()

        self.assertEqual(manifest['documents/Important Document 1.odt'], 'd460a36805fb460c038d96723f206b20')
        self.assertEqual(manifest['documents/Important Presentation.odp'], '1911ec839cedcbf00739a7d3447ec3a3')
        self.assertEqual(manifest['pictures/Picture #1.jpg'], '6eec850e32622c0e33bdae08ced29e24')
        self.assertEqual(manifest['documents/exclude_me.txt'], '2e7d8cb32bb82e838506aff5600182d1')
        self.assertEqual(len(manifest.manifest), 4)

    def test_manifest_save(self):
        """ Ensure the manifest can be successfully saved to a sqllite db """

        manifest = Manifest('tests/fixtures/test-data', '.test_manifest.yaml')
        manifest.create()
        manifest.save()

        self.assertTrue(os.path.isfile('.test_manifest.yaml'))
        with open('.test_manifest.yaml', 'r') as manifest_file:
            self.assertTrue('pictures/Picture #1.jpg' in manifest_file.read())

    def test_manifest_load(self):
        """ Ensure the manifest can be loaded from a yaml file """

        self.test_manifest_save()

        manifest = Manifest('tests/fixtures/test-data', '.test_manifest.yaml')
        self.assertTrue(manifest.manifest is None)
        manifest.load()

        self.assertEqual(manifest['documents/Important Document 1.odt'], 'd460a36805fb460c038d96723f206b20')
        self.assertEqual(manifest['documents/Important Presentation.odp'], '1911ec839cedcbf00739a7d3447ec3a3')
        self.assertEqual(manifest['pictures/Picture #1.jpg'], '6eec850e32622c0e33bdae08ced29e24')
        self.assertEqual(manifest['documents/exclude_me.txt'], '2e7d8cb32bb82e838506aff5600182d1')
        self.assertEqual(len(manifest.manifest), 4)

    def tearDown(self):
        """ Common tearDown tasks for all tests in this test case """

        if os.path.exists('.test_manifest.yaml'):
            os.unlink('.test_manifest.yaml')

if __name__ == '__main__':
    unittest.main()