# -*- coding: utf-8; -*-

import os
import shutil
import tempfile
from unittest import TestCase
from unittest.mock import patch

from wuttjamaican.conf import WuttaConfig
from wuttjamaican.cmd import Command, make_appdir


# nb. do this just for coverage
from wuttjamaican.commands.make_appdir import MakeAppDir as legacy


class TestMakeAppDir(TestCase):

    def setUp(self):
        self.config = WuttaConfig(appname='wuttatest')
        self.command = Command(self.config, subcommands={
            'make-appdir': make_appdir.MakeAppDir,
        })

    def test_run(self):

        # appdir is created, and 3 subfolders added by default
        tempdir = tempfile.mkdtemp()
        appdir = os.path.join(tempdir, 'app')
        self.assertFalse(os.path.exists(appdir))
        self.command.run('make-appdir', '--path', appdir)
        self.assertTrue(os.path.exists(appdir))
        self.assertEqual(len(os.listdir(appdir)), 3)
        shutil.rmtree(tempdir)

        # subfolders still added if appdir already exists
        tempdir = tempfile.mkdtemp()
        self.assertTrue(os.path.exists(tempdir))
        self.assertEqual(len(os.listdir(tempdir)), 0)
        self.command.run('make-appdir', '--path', tempdir)
        self.assertEqual(len(os.listdir(tempdir)), 3)
        shutil.rmtree(tempdir)

        # mock out sys.prefix to get coverage
        with patch('wuttjamaican.cmd.make_appdir.sys') as sys:
            tempdir = tempfile.mkdtemp()
            appdir = os.path.join(tempdir, 'app')
            sys.prefix = tempdir
            self.assertFalse(os.path.exists(appdir))
            self.command.run('make-appdir')
            self.assertTrue(os.path.exists(appdir))
            self.assertEqual(len(os.listdir(appdir)), 3)
            shutil.rmtree(tempdir)