comparison tests/test_sources_posts.py @ 95:cb6eadea0845

Fixed a bug with the `shallow` source. Add unit tests.
author Ludovic Chabant <ludovic@chabant.com>
date Sun, 07 Sep 2014 21:37:10 -0700
parents
children e7b865f8f335
comparison
equal deleted inserted replaced
94:b536022078a2 95:cb6eadea0845
1 import os
2 import pytest
3 from .mockutil import mock_fs, mock_fs_scope
4
5
6 @pytest.mark.parametrize('fs, src_type, expected_paths, expected_metadata', [
7 (mock_fs(), 'flat', [], []),
8 (mock_fs().withPage('test/2014-01-01_foo.md'),
9 'flat',
10 ['2014-01-01_foo.md'],
11 [(2014, 1, 1, 'foo')]),
12 (mock_fs(), 'shallow', [], []),
13 (mock_fs().withPage('test/2014/01-01_foo.md'),
14 'shallow',
15 ['2014/01-01_foo.md'],
16 [(2014, 1, 1, 'foo')]),
17 (mock_fs(), 'hierarchy', [], []),
18 (mock_fs().withPage('test/2014/01/01_foo.md'),
19 'hierarchy',
20 ['2014/01/01_foo.md'],
21 [(2014, 1, 1, 'foo')]),
22 ])
23 def test_post_source_factories(fs, src_type, expected_paths, expected_metadata):
24 fs.withConfig({
25 'site': {
26 'sources': {
27 'test': {'type': 'posts/%s' % src_type}},
28 'routes': [
29 {'url': '/%slug%', 'source': 'test'}]
30 }
31 })
32 fs.withDir('kitchen/test')
33 with mock_fs_scope(fs):
34 app = fs.getApp(cache=False)
35 s = app.getSource('test')
36 facs = list(s.buildPageFactories())
37 paths = [f.rel_path for f in facs]
38 assert paths == expected_paths
39 metadata = [
40 (f.metadata['year'], f.metadata['month'],
41 f.metadata['day'], f.metadata['slug'])
42 for f in facs]
43 assert metadata == expected_metadata
44