def test_extension_with_invalid_configuration_should_raise_error(self): with _build_minimal_configuration_dict() as configuration_dict: configuration_dict['extensions'] = { ConfigurableExtension.name(): 1337, } with self.assertRaises(ConfigurationError): _from_dict(configuration_dict)
def test_not_an_extension_type_name_should_error(self): with _build_minimal_config() as configuration_dict: configuration_dict['extensions'] = { '%s.%s' % (self.__class__.__module__, self.__class__.__name__): None, } with self.assertRaises(ConfigurationValueError): _from_dict(configuration_dict)
def test_unknown_extension_type_name_should_error(self): with _build_minimal_configuration_dict() as configuration_dict: configuration_dict['extensions'] = { 'non.existent.type': None, } with self.assertRaises(ConfigurationError): _from_dict(configuration_dict)
def test_should_content_negotiation(self) -> None: content_negotiation = True with _build_minimal_configuration_dict() as configuration_dict: configuration_dict['content_negotiation'] = content_negotiation configuration = _from_dict(configuration_dict) self.assertEquals(content_negotiation, configuration.content_negotiation)
def test_should_root_path(self) -> None: configured_root_path = '/betty/' expected_root_path = 'betty' with _build_minimal_configuration_dict() as configuration_dict: configuration_dict['root_path'] = configured_root_path configuration = _from_dict(configuration_dict) self.assertEquals(expected_root_path, configuration.root_path)
def test_should_load_assets_directory_path(self) -> None: with TemporaryDirectory() as assets_directory_path: with _build_minimal_configuration_dict() as configuration_dict: configuration_dict['assets'] = assets_directory_path configuration = _from_dict(configuration_dict) self.assertEquals( Path(assets_directory_path).expanduser().resolve(), configuration.assets_directory_path)
def test_should_load_theme_background_id(self) -> None: background_image_id = 'my-favorite-picture' with _build_minimal_configuration_dict() as configuration_dict: configuration_dict['theme'] = { 'background_image_id': background_image_id } configuration = _from_dict(configuration_dict) self.assertEquals(background_image_id, configuration.theme.background_image_id)
def test_should_load_one_extension_without_configuration(self) -> None: with _build_minimal_configuration_dict() as configuration_dict: configuration_dict['extensions'] = { NonConfigurableExtension.name(): {}, } configuration = _from_dict(configuration_dict) expected = ExtensionsConfiguration([ ExtensionConfiguration(NonConfigurableExtension, True), ]) self.assertEquals(expected, configuration.extensions)
def test_should_parse_one_extension_without_configuration(self) -> None: with _build_minimal_config() as configuration_dict: configuration_dict['extensions'] = { NonConfigurableExtension.name(): None, } configuration = _from_dict(configuration_dict) expected = { NonConfigurableExtension: None, } self.assertEquals(expected, dict(configuration.extensions))
def test_should_load_locale_locale(self) -> None: locale = 'nl-NL' locale_config = { 'locale': locale, } with _build_minimal_configuration_dict() as configuration_dict: configuration_dict['locales'] = [locale_config] configuration = _from_dict(configuration_dict) self.assertEquals( LocalesConfiguration([LocaleConfiguration(locale)]), configuration.locales)
def test_should_parse_locale_locale(self) -> None: locale = 'nl-NL' locale_config = { 'locale': locale, } with _build_minimal_config() as configuration_dict: configuration_dict['locales'] = [locale_config] configuration = _from_dict(configuration_dict) self.assertDictEqual(OrderedDict({ locale: LocaleConfiguration(locale), }), configuration.locales)
def test_should_parse_minimal(self, extension, dumper) -> None: with _build_minimal_config() as configuration_dict: configuration = _from_dict(configuration_dict) self.assertEquals(configuration_dict['output'], configuration.output_directory_path) self.assertEquals(configuration_dict['base_url'], configuration.base_url) self.assertEquals('Betty', configuration.title) self.assertIsNone(configuration.author) self.assertEquals('production', configuration.mode) self.assertEquals('/', configuration.root_path) self.assertFalse(configuration.clean_urls) self.assertFalse(configuration.content_negotiation)
def test_should_load_minimal(self) -> None: with _build_minimal_configuration_dict() as configuration_dict: configuration = _from_dict(configuration_dict) self.assertEquals( Path(configuration_dict['output']).expanduser().resolve(), configuration.output_directory_path) self.assertEquals(configuration_dict['base_url'], configuration.base_url) self.assertEquals('Betty', configuration.title) self.assertIsNone(configuration.author) self.assertFalse(configuration.debug) self.assertEquals('', configuration.root_path) self.assertFalse(configuration.clean_urls) self.assertFalse(configuration.content_negotiation)
def test_should_parse_one_extension_with_configuration(self) -> None: with _build_minimal_config() as configuration_dict: extension_configuration = { 'check': 1337, } configuration_dict['extensions'] = { ConfigurableExtension.name(): extension_configuration, } configuration = _from_dict(configuration_dict) expected = { ConfigurableExtension: { 'check': 1337, 'default': 'I will always be there for you.', }, } self.assertEquals(expected, dict(configuration.extensions))
def test_should_load_one_extension_with_configuration(self) -> None: with _build_minimal_configuration_dict() as configuration_dict: extension_configuration = { 'check': 1337, } configuration_dict['extensions'] = { ConfigurableExtension.name(): { 'configuration': extension_configuration, }, } configuration = _from_dict(configuration_dict) expected = ExtensionsConfiguration([ ExtensionConfiguration( ConfigurableExtension, True, ConfigurableExtensionConfiguration( check=1337, default='I will always be there for you.', )), ]) self.assertEquals(expected, configuration.extensions)
def test_should_error_if_invalid_config(self) -> None: configuration_dict = {} with self.assertRaises(ConfigurationError): _from_dict(configuration_dict)
def test_should_parse_mode(self, mode: str) -> None: with _build_minimal_config() as configuration_dict: configuration_dict['mode'] = mode configuration = _from_dict(configuration_dict) self.assertEquals(mode, configuration.mode)
def test_should_parse_assets_directory_path(self) -> None: with TemporaryDirectory() as assets_directory_path: with _build_minimal_config() as configuration_dict: configuration_dict['assets_directory_path'] = assets_directory_path configuration = _from_dict(configuration_dict) self.assertEquals(assets_directory_path, configuration.assets_directory_path)
def test_should_load_title(self) -> None: title = 'My first Betty site' with _build_minimal_configuration_dict() as configuration_dict: configuration_dict['title'] = title configuration = _from_dict(configuration_dict) self.assertEquals(title, configuration.title)
def test_should_load_debug(self, debug: bool) -> None: with _build_minimal_configuration_dict() as configuration_dict: configuration_dict['debug'] = debug configuration = _from_dict(configuration_dict) self.assertEquals(debug, configuration.debug)
def test_should_load_author(self) -> None: author = 'Bart' with _build_minimal_configuration_dict() as configuration_dict: configuration_dict['author'] = author configuration = _from_dict(configuration_dict) self.assertEquals(author, configuration.author)
def test_should_clean_urls(self) -> None: clean_urls = True with _build_minimal_configuration_dict() as configuration_dict: configuration_dict['clean_urls'] = clean_urls configuration = _from_dict(configuration_dict) self.assertEquals(clean_urls, configuration.clean_urls)