from django.core.management.base import CommandError
from django.test import TestCase

from ..management.commands.document_importer import Command

from documents.settings import EXPORTER_FILE_NAME


class TestImporter(TestCase):

    def __init__(self, *args, **kwargs):
        TestCase.__init__(self, *args, **kwargs)

    def test_check_manifest_exists(self):
        cmd = Command()
        self.assertRaises(
            CommandError, cmd._check_manifest_exists, "/tmp/manifest.json")

    def test_check_manifest(self):

        cmd = Command()
        cmd.source = "/tmp"

        cmd.manifest = [{"model": "documents.document"}]
        with self.assertRaises(CommandError) as cm:
            cmd._check_manifest()
        self.assertTrue(
            'The manifest file contains a record' in str(cm.exception))

        cmd.manifest = [{
            "model": "documents.document",
            EXPORTER_FILE_NAME: "noexist.pdf"
        }]
        # self.assertRaises(CommandError, cmd._check_manifest)
        with self.assertRaises(CommandError) as cm:
            cmd._check_manifest()
        self.assertTrue(
            'The manifest file refers to "noexist.pdf"' in str(cm.exception))
