aboutsummaryrefslogtreecommitdiffstats
path: root/test/test_config.py
blob: 8cdb3da96681e3243c8104353f7126b0eb8b7379 (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
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# Copyright 2015-2017 Mike Fährmann
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.

import unittest
import gallery_dl.config as config
import os
import tempfile


class TestConfig(unittest.TestCase):

    def setUp(self):
        fd, self._configfile = tempfile.mkstemp()
        with os.fdopen(fd, "w") as file:
            file.write('{"a": "1", "b": {"a": 2, "c": "text"}}')
        config.load((self._configfile,))

    def tearDown(self):
        config.clear()
        os.remove(self._configfile)

    def test_get(self):
        self.assertEqual(config.get(["a"]), "1")
        self.assertEqual(config.get(["b", "c"]), "text")
        self.assertEqual(config.get(["d"]), None)
        self.assertEqual(config.get(["e", "f", "g"], 123), 123)

    def test_interpolate(self):
        self.assertEqual(config.interpolate(["a"]), "1")
        self.assertEqual(config.interpolate(["b", "a"]), "1")
        self.assertEqual(config.interpolate(["b", "c"], "2"), "text")
        self.assertEqual(config.interpolate(["b", "d"], "2"), "2")
        config.set(["d"], 123)
        self.assertEqual(config.interpolate(["b", "d"], "2"), 123)
        self.assertEqual(config.interpolate(["d", "d"], "2"), 123)

    def test_set(self):
        config.set(["b", "c"], [1, 2, 3])
        config.set(["e", "f", "g"], value=234)
        self.assertEqual(config.get(["b", "c"]), [1, 2, 3])
        self.assertEqual(config.get(["e", "f", "g"]), 234)

    def test_setdefault(self):
        config.setdefault(["b", "c"], [1, 2, 3])
        config.setdefault(["e", "f", "g"], value=234)
        self.assertEqual(config.get(["b", "c"]), "text")
        self.assertEqual(config.get(["e", "f", "g"]), 234)

    def test_unset(self):
        config.unset(["a"])
        config.unset(["b", "c"])
        config.unset(["c", "d"])
        self.assertEqual(config.get(["a"]), None)
        self.assertEqual(config.get(["b", "a"]), 2)
        self.assertEqual(config.get(["b", "c"]), None)

    def test_apply(self):
        options = (
            (["b", "c"], [1, 2, 3]),
            (["e", "f", "g"], 234),
        )

        self.assertEqual(config.get(["b", "c"]), "text")
        self.assertEqual(config.get(["e", "f", "g"]), None)

        with config.apply(options):
            self.assertEqual(config.get(["b", "c"]), [1, 2, 3])
            self.assertEqual(config.get(["e", "f", "g"]), 234)

        self.assertEqual(config.get(["b", "c"]), "text")
        self.assertEqual(config.get(["e", "f", "g"]), None)


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