Browse Source

Merge pull request #6261 from maxkoryukov/develop

Improved tests for settings
pull/6303/head
Ruud Burger 9 years ago
parent
commit
2f47c9b8b9
  1. 18
      couchpotato/core/settings.py
  2. 31
      couchpotato/core/settings_test.py

18
couchpotato/core/settings.py

@ -130,14 +130,15 @@ class Settings(object):
def get(self, option = '', section = 'core', default = None, type = None):
if self.isOptionMeta(section, option):
self.log.warning('set::option "%s.%s" cancelled, since it is a META option', (section, option))
self.log.warning('get::option "%s.%s" cancelled, since it is a META option', (section, option))
return None
tp = type
try:
type = self.getType(section, option) if not type else type
tp = self.getType(section, option) if not tp else tp
if hasattr(self, 'get%s' % type.capitalize()):
return getattr(self, 'get%s' % type.capitalize())(section, option)
if hasattr(self, 'get%s' % tp.capitalize()):
return getattr(self, 'get%s' % tp.capitalize())(section, option)
else:
return self.getUnicode(section, option)
@ -179,6 +180,7 @@ class Settings(object):
def getDirectories(self, section, option):
value = self.p.get(section, option)
if value:
return map(str.strip, str.split(value, self.directories_delimiter))
return []
@ -256,10 +258,10 @@ class Settings(object):
self.types[section][option] = type
def getType(self, section, option):
type = None
try: type = self.types[section][option]
except: type = 'unicode' if not type else type
return type
tp = None
try: tp = self.types[section][option]
except: tp = 'unicode' if not tp else tp
return tp
def addOptions(self, section_name, options):
# no additional actions (related to ro-rw options) are required here

31
couchpotato/core/settings_test.py

@ -1,16 +1,18 @@
import mock
from mock import patch, Mock
from mock import patch, Mock, MagicMock
import unittest
from unittest import TestCase
from couchpotato.core.settings import Settings
class DoNotUseMe:
""" Do not use this class, it is just for storing Mock ' s of Settings-class
Usage:
Select appropriate Mocks and copy-paste them to your test-method
"""
def __do_not_call(self):
# s = Settings
s = Mock()
@ -28,7 +30,31 @@ class DoNotUseMe:
s.p.getboolean = Mock(return_value=True)
s.p.has_option = Mock
class SettingsCommon(TestCase):
def setUp(self):
self.s = Settings()
def test_get_directories(self):
s = self.s
raw = ' /some/directory ::/another/dir '
exp = ['/some/directory', '/another/dir']
sec = 'sec'
opt = 'opt'
s.types[sec] = {}
s.types[sec][opt] = 'directories'
s.p = MagicMock()
s.p.get.return_value = raw
act = s.get(option = opt, section = sec)
self.assertEqual(act, exp)
class SettingsSaveWritableNonWritable(TestCase):
def setUp(self):
self.s = Settings()
@ -65,7 +91,6 @@ class SettingsSaveWritableNonWritable(TestCase):
# check, that Settings tried to save my value:
mock_set.assert_called_with(section, option, value)
def test_save_non_writable(self):
s = self.s
@ -88,7 +113,6 @@ class SettingsSaveWritableNonWritable(TestCase):
with patch.dict('sys.modules', {'couchpotato.environment.Env': env_mock}):
result = s.saveView(**params)
self.assertIsInstance(s, Settings)
self.assertIsInstance(result, dict)
self.assertFalse(result['success'])
@ -101,7 +125,6 @@ class SettingsSaveWritableNonWritable(TestCase):
mock_is_w.assert_called_with(section, option)
class OptionMetaSuite(TestCase):
""" tests for ro rw hidden options """

Loading…
Cancel
Save