annotate tests/test_appconfig.py @ 710:e85f29b28b84

internal: Remove unused piece of code.
author Ludovic Chabant <ludovic@chabant.com>
date Thu, 26 May 2016 19:46:28 -0700
parents 15b5181b2e42
children ab5c6a8ae90a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
683
ec384174b8b2 internal: More work/fixes on how default/theme/user configs are merged.
Ludovic Chabant <ludovic@chabant.com>
parents: 681
diff changeset
1 import yaml
584
9ccc933ac2c7 internal: Refactor the app configuration class.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
2 from piecrust.appconfig import PieCrustConfiguration
681
894d286b348f internal: Refactor config loading some more.
Ludovic Chabant <ludovic@chabant.com>
parents: 675
diff changeset
3 from .mockutil import mock_fs, mock_fs_scope
584
9ccc933ac2c7 internal: Refactor the app configuration class.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
4
9ccc933ac2c7 internal: Refactor the app configuration class.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
5
9ccc933ac2c7 internal: Refactor the app configuration class.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
6 def test_config_default():
9ccc933ac2c7 internal: Refactor the app configuration class.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
7 values = {}
9ccc933ac2c7 internal: Refactor the app configuration class.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
8 config = PieCrustConfiguration(values=values)
9ccc933ac2c7 internal: Refactor the app configuration class.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
9 assert config.get('site/root') == '/'
683
ec384174b8b2 internal: More work/fixes on how default/theme/user configs are merged.
Ludovic Chabant <ludovic@chabant.com>
parents: 681
diff changeset
10 assert len(config.get('site/sources')) == 3 # pages, posts, theme_pages
584
9ccc933ac2c7 internal: Refactor the app configuration class.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
11
9ccc933ac2c7 internal: Refactor the app configuration class.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
12
9ccc933ac2c7 internal: Refactor the app configuration class.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
13 def test_config_default2():
9ccc933ac2c7 internal: Refactor the app configuration class.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
14 config = PieCrustConfiguration()
9ccc933ac2c7 internal: Refactor the app configuration class.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
15 assert config.get('site/root') == '/'
683
ec384174b8b2 internal: More work/fixes on how default/theme/user configs are merged.
Ludovic Chabant <ludovic@chabant.com>
parents: 681
diff changeset
16 assert len(config.get('site/sources')) == 3 # pages, posts, theme_pages
584
9ccc933ac2c7 internal: Refactor the app configuration class.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
17
9ccc933ac2c7 internal: Refactor the app configuration class.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
18
9ccc933ac2c7 internal: Refactor the app configuration class.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
19 def test_config_site_override_title():
9ccc933ac2c7 internal: Refactor the app configuration class.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
20 values = {'site': {'title': "Whatever"}}
9ccc933ac2c7 internal: Refactor the app configuration class.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
21 config = PieCrustConfiguration(values=values)
9ccc933ac2c7 internal: Refactor the app configuration class.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
22 assert config.get('site/root') == '/'
9ccc933ac2c7 internal: Refactor the app configuration class.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
23 assert config.get('site/title') == 'Whatever'
9ccc933ac2c7 internal: Refactor the app configuration class.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
24
9ccc933ac2c7 internal: Refactor the app configuration class.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
25
684
15b5181b2e42 tests: Add another app config test.
Ludovic Chabant <ludovic@chabant.com>
parents: 683
diff changeset
26 def test_config_override_default_model_settings():
15b5181b2e42 tests: Add another app config test.
Ludovic Chabant <ludovic@chabant.com>
parents: 683
diff changeset
27 config = {'site': {
15b5181b2e42 tests: Add another app config test.
Ludovic Chabant <ludovic@chabant.com>
parents: 683
diff changeset
28 'default_page_layout': 'foo',
15b5181b2e42 tests: Add another app config test.
Ludovic Chabant <ludovic@chabant.com>
parents: 683
diff changeset
29 'default_post_layout': 'bar',
15b5181b2e42 tests: Add another app config test.
Ludovic Chabant <ludovic@chabant.com>
parents: 683
diff changeset
30 'posts_per_page': 2}}
15b5181b2e42 tests: Add another app config test.
Ludovic Chabant <ludovic@chabant.com>
parents: 683
diff changeset
31 fs = mock_fs().withConfig(config)
15b5181b2e42 tests: Add another app config test.
Ludovic Chabant <ludovic@chabant.com>
parents: 683
diff changeset
32 with mock_fs_scope(fs):
15b5181b2e42 tests: Add another app config test.
Ludovic Chabant <ludovic@chabant.com>
parents: 683
diff changeset
33 app = fs.getApp()
15b5181b2e42 tests: Add another app config test.
Ludovic Chabant <ludovic@chabant.com>
parents: 683
diff changeset
34 assert app.config.get('site/default_page_layout') == 'foo'
15b5181b2e42 tests: Add another app config test.
Ludovic Chabant <ludovic@chabant.com>
parents: 683
diff changeset
35 assert app.config.get('site/default_post_layout') == 'bar'
15b5181b2e42 tests: Add another app config test.
Ludovic Chabant <ludovic@chabant.com>
parents: 683
diff changeset
36 assert app.config.get('site/sources')['pages']['default_layout'] == 'foo'
15b5181b2e42 tests: Add another app config test.
Ludovic Chabant <ludovic@chabant.com>
parents: 683
diff changeset
37 assert app.config.get('site/sources')['pages']['items_per_page'] == 5
15b5181b2e42 tests: Add another app config test.
Ludovic Chabant <ludovic@chabant.com>
parents: 683
diff changeset
38 assert app.config.get('site/sources')['theme_pages']['default_layout'] == 'default'
15b5181b2e42 tests: Add another app config test.
Ludovic Chabant <ludovic@chabant.com>
parents: 683
diff changeset
39 assert app.config.get('site/sources')['theme_pages']['items_per_page'] == 5
15b5181b2e42 tests: Add another app config test.
Ludovic Chabant <ludovic@chabant.com>
parents: 683
diff changeset
40 assert app.config.get('site/sources')['posts']['default_layout'] == 'bar'
15b5181b2e42 tests: Add another app config test.
Ludovic Chabant <ludovic@chabant.com>
parents: 683
diff changeset
41 assert app.config.get('site/sources')['posts']['items_per_page'] == 2
15b5181b2e42 tests: Add another app config test.
Ludovic Chabant <ludovic@chabant.com>
parents: 683
diff changeset
42
584
9ccc933ac2c7 internal: Refactor the app configuration class.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
43 def test_config_site_add_source():
681
894d286b348f internal: Refactor config loading some more.
Ludovic Chabant <ludovic@chabant.com>
parents: 675
diff changeset
44 config = {'site': {
894d286b348f internal: Refactor config loading some more.
Ludovic Chabant <ludovic@chabant.com>
parents: 675
diff changeset
45 'sources': {'notes': {}},
894d286b348f internal: Refactor config loading some more.
Ludovic Chabant <ludovic@chabant.com>
parents: 675
diff changeset
46 'routes': [{'url': '/notes/%path:slug%', 'source': 'notes'}]
894d286b348f internal: Refactor config loading some more.
Ludovic Chabant <ludovic@chabant.com>
parents: 675
diff changeset
47 }}
894d286b348f internal: Refactor config loading some more.
Ludovic Chabant <ludovic@chabant.com>
parents: 675
diff changeset
48 fs = mock_fs().withConfig(config)
894d286b348f internal: Refactor config loading some more.
Ludovic Chabant <ludovic@chabant.com>
parents: 675
diff changeset
49 with mock_fs_scope(fs):
894d286b348f internal: Refactor config loading some more.
Ludovic Chabant <ludovic@chabant.com>
parents: 675
diff changeset
50 app = fs.getApp()
894d286b348f internal: Refactor config loading some more.
Ludovic Chabant <ludovic@chabant.com>
parents: 675
diff changeset
51 # The order of routes is important. Sources, not so much.
894d286b348f internal: Refactor config loading some more.
Ludovic Chabant <ludovic@chabant.com>
parents: 675
diff changeset
52 # `posts` shows up 3 times in routes (posts, tags, categories)
894d286b348f internal: Refactor config loading some more.
Ludovic Chabant <ludovic@chabant.com>
parents: 675
diff changeset
53 assert (list(
894d286b348f internal: Refactor config loading some more.
Ludovic Chabant <ludovic@chabant.com>
parents: 675
diff changeset
54 map(
894d286b348f internal: Refactor config loading some more.
Ludovic Chabant <ludovic@chabant.com>
parents: 675
diff changeset
55 lambda v: v['source'],
894d286b348f internal: Refactor config loading some more.
Ludovic Chabant <ludovic@chabant.com>
parents: 675
diff changeset
56 app.config.get('site/routes'))) ==
894d286b348f internal: Refactor config loading some more.
Ludovic Chabant <ludovic@chabant.com>
parents: 675
diff changeset
57 ['notes', 'posts', 'posts', 'posts', 'pages', 'theme_pages'])
683
ec384174b8b2 internal: More work/fixes on how default/theme/user configs are merged.
Ludovic Chabant <ludovic@chabant.com>
parents: 681
diff changeset
58 assert list(app.config.get('site/sources').keys()) == [
ec384174b8b2 internal: More work/fixes on how default/theme/user configs are merged.
Ludovic Chabant <ludovic@chabant.com>
parents: 681
diff changeset
59 'theme_pages', 'pages', 'posts', 'notes']
ec384174b8b2 internal: More work/fixes on how default/theme/user configs are merged.
Ludovic Chabant <ludovic@chabant.com>
parents: 681
diff changeset
60
681
894d286b348f internal: Refactor config loading some more.
Ludovic Chabant <ludovic@chabant.com>
parents: 675
diff changeset
61
683
ec384174b8b2 internal: More work/fixes on how default/theme/user configs are merged.
Ludovic Chabant <ludovic@chabant.com>
parents: 681
diff changeset
62 def test_config_site_add_source_in_both_site_and_theme():
ec384174b8b2 internal: More work/fixes on how default/theme/user configs are merged.
Ludovic Chabant <ludovic@chabant.com>
parents: 681
diff changeset
63 theme_config = {'site': {
ec384174b8b2 internal: More work/fixes on how default/theme/user configs are merged.
Ludovic Chabant <ludovic@chabant.com>
parents: 681
diff changeset
64 'sources': {'theme_notes': {}},
ec384174b8b2 internal: More work/fixes on how default/theme/user configs are merged.
Ludovic Chabant <ludovic@chabant.com>
parents: 681
diff changeset
65 'routes': [{'url': '/theme_notes/%path:slug%', 'source': 'theme_notes'}]
ec384174b8b2 internal: More work/fixes on how default/theme/user configs are merged.
Ludovic Chabant <ludovic@chabant.com>
parents: 681
diff changeset
66 }}
ec384174b8b2 internal: More work/fixes on how default/theme/user configs are merged.
Ludovic Chabant <ludovic@chabant.com>
parents: 681
diff changeset
67 config = {'site': {
ec384174b8b2 internal: More work/fixes on how default/theme/user configs are merged.
Ludovic Chabant <ludovic@chabant.com>
parents: 681
diff changeset
68 'sources': {'notes': {}},
ec384174b8b2 internal: More work/fixes on how default/theme/user configs are merged.
Ludovic Chabant <ludovic@chabant.com>
parents: 681
diff changeset
69 'routes': [{'url': '/notes/%path:slug%', 'source': 'notes'}]
ec384174b8b2 internal: More work/fixes on how default/theme/user configs are merged.
Ludovic Chabant <ludovic@chabant.com>
parents: 681
diff changeset
70 }}
ec384174b8b2 internal: More work/fixes on how default/theme/user configs are merged.
Ludovic Chabant <ludovic@chabant.com>
parents: 681
diff changeset
71 fs = (mock_fs()
ec384174b8b2 internal: More work/fixes on how default/theme/user configs are merged.
Ludovic Chabant <ludovic@chabant.com>
parents: 681
diff changeset
72 .withConfig(config)
ec384174b8b2 internal: More work/fixes on how default/theme/user configs are merged.
Ludovic Chabant <ludovic@chabant.com>
parents: 681
diff changeset
73 .withFile('kitchen/theme/theme_config.yml', yaml.dump(theme_config)))
ec384174b8b2 internal: More work/fixes on how default/theme/user configs are merged.
Ludovic Chabant <ludovic@chabant.com>
parents: 681
diff changeset
74 with mock_fs_scope(fs):
ec384174b8b2 internal: More work/fixes on how default/theme/user configs are merged.
Ludovic Chabant <ludovic@chabant.com>
parents: 681
diff changeset
75 app = fs.getApp()
ec384174b8b2 internal: More work/fixes on how default/theme/user configs are merged.
Ludovic Chabant <ludovic@chabant.com>
parents: 681
diff changeset
76 # The order of routes is important. Sources, not so much.
ec384174b8b2 internal: More work/fixes on how default/theme/user configs are merged.
Ludovic Chabant <ludovic@chabant.com>
parents: 681
diff changeset
77 # `posts` shows up 3 times in routes (posts, tags, categories)
ec384174b8b2 internal: More work/fixes on how default/theme/user configs are merged.
Ludovic Chabant <ludovic@chabant.com>
parents: 681
diff changeset
78 assert (list(
ec384174b8b2 internal: More work/fixes on how default/theme/user configs are merged.
Ludovic Chabant <ludovic@chabant.com>
parents: 681
diff changeset
79 map(
ec384174b8b2 internal: More work/fixes on how default/theme/user configs are merged.
Ludovic Chabant <ludovic@chabant.com>
parents: 681
diff changeset
80 lambda v: v['source'],
ec384174b8b2 internal: More work/fixes on how default/theme/user configs are merged.
Ludovic Chabant <ludovic@chabant.com>
parents: 681
diff changeset
81 app.config.get('site/routes'))) ==
ec384174b8b2 internal: More work/fixes on how default/theme/user configs are merged.
Ludovic Chabant <ludovic@chabant.com>
parents: 681
diff changeset
82 ['notes', 'posts', 'posts', 'posts', 'pages', 'theme_notes', 'theme_pages'])
ec384174b8b2 internal: More work/fixes on how default/theme/user configs are merged.
Ludovic Chabant <ludovic@chabant.com>
parents: 681
diff changeset
83 assert list(app.config.get('site/sources').keys()) == [
ec384174b8b2 internal: More work/fixes on how default/theme/user configs are merged.
Ludovic Chabant <ludovic@chabant.com>
parents: 681
diff changeset
84 'theme_pages', 'theme_notes', 'pages', 'posts', 'notes']
ec384174b8b2 internal: More work/fixes on how default/theme/user configs are merged.
Ludovic Chabant <ludovic@chabant.com>
parents: 681
diff changeset
85