Exemplo n.º 1
0
class TestConfig(TestCase):
    def setUp(self):
        super().setUp()
        self.environ_dict = {'TRAM_ROOT': 'mock_value'}
        self.config_dict = {'mock_key': 'mock_value'}
        self.josn_load_mock = patch('utils.config.json.load',
                                    return_value=self.config_dict).start()
        self.os_environ_mock = patch.dict('utils.config.os.environ',
                                          self.environ_dict).start()
        self.m = mock_open()
        with patch('utils.config.open', self.m, create=True):
            self.config = Config()

    def tearDown(self):
        super().tearDown()
        patch.stopall()

        Config._instance = None

    def test_constructor_path_provided(self):
        Config._instance = None
        mock_path = '/mock/path/to/config'
        m = mock_open()
        with patch('utils.config.open', m, create=True):
            config = Config(mock_path)

        m.assert_called_once_with(mock_path, 'r')
        self.assertEqual(config.cfg, self.config_dict)
        self.assertEqual(config.path, mock_path)
        self.assertTrue(self.josn_load_mock.called)

    def test_constructor_default_path(self):
        self.m.assert_called_once_with('mock_value/conf/config.json', 'r')
        self.assertEqual(self.config.cfg, self.config_dict)
        self.assertEqual(self.config.path, 'mock_value/conf/config.json')
        self.assertTrue(self.josn_load_mock.called)

    def test_get_item_no_default(self):
        ret = self.config.get('mock_key')
        self.assertEqual(self.config_dict['mock_key'], ret)

    def test_get_item_with_default_key_exist(self):
        ret = self.config.get('mock_key', default='another mock value')
        self.assertEqual(self.config_dict['mock_key'], ret)

    def test_get_item_with_default_key_dont_exist(self):
        ret = self.config.get('not_mock_key', default='another mock value')
        self.assertEqual('another mock value', ret)

    def test_set(self):
        ret = self.config.set('another_mock_key', 'another_mock_value')
        self.assertIsNone(ret)
        self.assertTrue('another_mock_key' in self.config.cfg)
        self.assertEqual(self.config.cfg['another_mock_key'],
                         'another_mock_value')

    def test_dump(self):
        mock_json_dump = patch('utils.config.json.dump').start()
        m = mock_open()
        with patch('utils.config.open', m, create=True):
            self.config.dump()

        self.assertTrue(mock_json_dump.called)
        mock_json_dump.assert_called_once_with(self.config_dict, m(), indent=4)

    def test__getitem__(self):
        ret = self.config['mock_key']
        self.assertEqual(ret, 'mock_value')

    def test_contains_true(self):
        ret = 'mock_key' in self.config
        self.assertTrue(ret)

    def test_contains_false(self):
        ret = 'not_mock_key' in self.config
        self.assertFalse(ret)