summaryrefslogtreecommitdiff
path: root/tests/settings/utils_test.py
blob: 869054ce94a00c6de60c184ab6ddec8a0b9e1e33 (plain)
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
# Copyright (C) 2017  Lucas Hoffmann
# This file is released under the GNU GPL, version 3 or a later revision.
# For further details see the COPYING file

"""Tests for the alot.setting.utils module."""

import unittest

import mock

from alot.settings import utils


class TestResolveAtt(unittest.TestCase):

    __patchers = []
    fallback = mock.Mock()
    fallback.foreground = 'some fallback foreground value'
    fallback.background = 'some fallback background value'

    @classmethod
    def setUpClass(cls):
        cls.__patchers.append(mock.patch(
            'alot.settings.utils.AttrSpec',
            mock.Mock(side_effect=lambda *args: args)))
        for p in cls.__patchers:
            p.start()

    @classmethod
    def tearDownClass(cls):
        for p in cls.__patchers:
            p.stop()

    @staticmethod
    def _mock(foreground, background):
        """Create a mock object that is needed very often."""
        m = mock.Mock()
        m.foreground = foreground
        m.background = background
        return m

    def test_passing_none_returns_fallback(self):
        actual = utils.resolve_att(None, self.fallback)
        self.assertEqual(actual, self.fallback)

    def test_empty_string_in_background_picks_up_background_from_fallback(self):
        attr = self._mock('valid foreground', '')
        expected = (attr.foreground, self.fallback.background)
        actual = utils.resolve_att(attr, self.fallback)
        self.assertTupleEqual(actual, expected)

    def test_default_in_background_picks_up_background_from_fallback(self):
        attr = self._mock('valid foreground', 'default')
        expected = attr.foreground, self.fallback.background
        actual = utils.resolve_att(attr, self.fallback)
        self.assertTupleEqual(actual, expected)

    def test_empty_string_in_foreground_picks_up_foreground_from_fallback(self):
        attr = self._mock('', 'valid background')
        expected = self.fallback.foreground, attr.background
        actual = utils.resolve_att(attr, self.fallback)
        self.assertTupleEqual(actual, expected)

    def test_default_in_foreground_picks_up_foreground_from_fallback(self):
        attr = self._mock('default', 'valid background')
        expected = self.fallback.foreground, attr.background
        actual = utils.resolve_att(attr, self.fallback)
        self.assertTupleEqual(actual, expected)

    def test_other_values_are_used(self):
        attr = self._mock('valid foreground', 'valid background')
        expected = attr.foreground, attr.background
        actual = utils.resolve_att(attr, self.fallback)
        self.assertTupleEqual(actual, expected)