summaryrefslogtreecommitdiffstats
path: root/tests/test_command_init.py
blob: 96fa78ef205180f7d8b46c384086bcaf5ed9bfca (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
from unittest import mock

import pytest

from nikola.plugins.command.init import (
    SAMPLE_CONF,
    CommandInit,
    format_default_translations_config,
)

from .helper import cd


def test_command_init_with_defaults(
    init_command,
    ask_questions,
    copy_sample_site,
    create_configuration,
    create_empty_site,
):
    init_command.execute()

    assert ask_questions.called
    assert create_configuration.called
    assert not copy_sample_site.called
    assert create_empty_site.called


def test_command_init_with_arguments(
    init_command,
    ask_questions,
    copy_sample_site,
    create_configuration,
    create_empty_site,
):
    arguments = dict(options={"demo": True, "quiet": True}, args=["destination"])
    init_command.execute(**arguments)

    assert not ask_questions.called
    assert create_configuration.called
    assert copy_sample_site.called
    assert not create_empty_site.called


def test_init_called_without_target_quiet(
    init_command,
    ask_questions,
    copy_sample_site,
    create_configuration,
    create_empty_site,
):
    init_command.execute(**{"options": {"quiet": True}})

    assert not ask_questions.called
    assert not create_configuration.called
    assert not copy_sample_site.called
    assert not create_empty_site.called


def test_command_init_with_empty_dir(
    init_command,
    ask_questions,
    copy_sample_site,
    create_configuration,
    create_empty_site,
):
    init_command.execute(args=["destination"])

    assert ask_questions.called
    assert create_configuration.called
    assert not copy_sample_site.called
    assert create_empty_site.called


def test_configure_translations_without_additional_languages():
    """
    Testing the configuration of the translation when no additional language has been found.
    """
    translations_cfg = format_default_translations_config(set())
    assert SAMPLE_CONF["TRANSLATIONS"] == translations_cfg


def test_configure_translations_with_2_additional_languages():
    """
    Testing the configuration of the translation when two additional languages are given.
    """
    translations_cfg = format_default_translations_config(set(["es", "en"]))
    assert translations_cfg == """{
    DEFAULT_LANG: "",
    "en": "./en",
    "es": "./es",
}"""


@pytest.fixture
def init_command(
    tmpdir, ask_questions, copy_sample_site, create_configuration, create_empty_site
):
    with mock.patch(
        "nikola.plugins.command.init.CommandInit.ask_questions", ask_questions
    ):
        with mock.patch(
            "nikola.plugins.command.init.CommandInit.copy_sample_site", copy_sample_site
        ):
            with mock.patch(
                "nikola.plugins.command.init.CommandInit.create_configuration",
                create_configuration,
            ):
                with mock.patch(
                    "nikola.plugins.command.init.CommandInit.create_empty_site",
                    create_empty_site,
                ):
                    with cd(str(tmpdir)):
                        yield CommandInit()


@pytest.fixture
def ask_questions():
    return mock.MagicMock()


@pytest.fixture
def copy_sample_site():
    return mock.MagicMock()


@pytest.fixture
def create_configuration():
    return mock.MagicMock()


@pytest.fixture
def create_empty_site():
    return mock.MagicMock()