73 lines
2.7 KiB
Python
73 lines
2.7 KiB
Python
|
# -*- coding: utf8 -*-
|
||
|
# -----------------------------------------------------------------------------
|
||
|
# "THE NO-ALCOHOL BEER-WARE LICENSE" (Revision 42):
|
||
|
# Phyks (webmaster@phyks.me) wrote this file. As long as you retain this notice
|
||
|
# you can do whatever you want with this stuff (and you can also do whatever
|
||
|
# you want with this stuff without retaining it, but that's not cool...). If we
|
||
|
# meet some day, and you think this stuff is worth it, you can buy me a
|
||
|
# <del>beer</del> soda in return.
|
||
|
# Phyks
|
||
|
# -----------------------------------------------------------------------------
|
||
|
import unittest
|
||
|
from config import Config
|
||
|
import json
|
||
|
import os
|
||
|
import tempfile
|
||
|
import shutil
|
||
|
|
||
|
|
||
|
class TestConfig(unittest.TestCase):
|
||
|
def setUp(self):
|
||
|
self.folder = tempfile.mkdtemp()+"/"
|
||
|
self.default_config = {"folder": os.path.expanduser("~/Papers/"),
|
||
|
"proxies": [''],
|
||
|
"format_articles": "%f_%l-%j-%Y%v",
|
||
|
"format_books": "%a-%t",
|
||
|
"format_custom": [],
|
||
|
"ignore_fields": ["file", "doi", "tag"]}
|
||
|
|
||
|
def tearDown(self):
|
||
|
shutil.rmtree(self.folder)
|
||
|
|
||
|
def test_load_without_file(self):
|
||
|
config = Config(base_config_path=self.folder)
|
||
|
self.assertEqual(config.as_dict(), self.default_config)
|
||
|
with open(self.folder+"bmc.json", 'r') as fh:
|
||
|
read = json.loads(fh.read())
|
||
|
self.assertEqual(read, self.default_config)
|
||
|
|
||
|
def test_load_with_file(self):
|
||
|
config = self.default_config
|
||
|
config["foo"] = "bar"
|
||
|
with open(self.folder+"bmc.json", 'w') as fh:
|
||
|
json.dump(config, fh)
|
||
|
config_read = Config(base_config_path=self.folder)
|
||
|
self.assertEqual(config, config_read.as_dict())
|
||
|
|
||
|
def test_get(self):
|
||
|
config = Config(base_config_path=self.folder)
|
||
|
self.assertEqual(config.get("proxies"), [''])
|
||
|
|
||
|
def test_set(self):
|
||
|
config = Config(base_config_path=self.folder)
|
||
|
config.set("foo", "bar")
|
||
|
self.assertEqual(config.get("foo"), "bar")
|
||
|
|
||
|
def test_save(self):
|
||
|
config = Config(base_config_path=self.folder)
|
||
|
config.set("foo", "bar")
|
||
|
config.save()
|
||
|
with open(self.folder+"bmc.json", 'r') as fh:
|
||
|
read = json.loads(fh.read())
|
||
|
self.assertEqual(read, config.as_dict())
|
||
|
|
||
|
def test_masks(self):
|
||
|
with open(self.folder+"masks.py", 'w') as fh:
|
||
|
fh.write("def f(x): return x")
|
||
|
config = Config(base_config_path=self.folder)
|
||
|
self.assertEqual("foo", config.get("format_custom")[0]("foo"))
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
unittest.main()
|