diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test_sources_posts.py	Sun Sep 07 21:37:10 2014 -0700
@@ -0,0 +1,44 @@
+import os
+import pytest
+from .mockutil import mock_fs, mock_fs_scope
+
+
+@pytest.mark.parametrize('fs, src_type, expected_paths, expected_metadata', [
+        (mock_fs(), 'flat', [], []),
+        (mock_fs().withPage('test/2014-01-01_foo.md'),
+            'flat',
+            ['2014-01-01_foo.md'],
+            [(2014, 1, 1, 'foo')]),
+        (mock_fs(), 'shallow', [], []),
+        (mock_fs().withPage('test/2014/01-01_foo.md'),
+            'shallow',
+            ['2014/01-01_foo.md'],
+            [(2014, 1, 1, 'foo')]),
+        (mock_fs(), 'hierarchy', [], []),
+        (mock_fs().withPage('test/2014/01/01_foo.md'),
+            'hierarchy',
+            ['2014/01/01_foo.md'],
+            [(2014, 1, 1, 'foo')]),
+        ])
+def test_post_source_factories(fs, src_type, expected_paths, expected_metadata):
+        fs.withConfig({
+            'site': {
+                'sources': {
+                    'test': {'type': 'posts/%s' % src_type}},
+                'routes': [
+                    {'url': '/%slug%', 'source': 'test'}]
+                }
+            })
+        fs.withDir('kitchen/test')
+        with mock_fs_scope(fs):
+            app = fs.getApp(cache=False)
+            s = app.getSource('test')
+            facs = list(s.buildPageFactories())
+            paths = [f.rel_path for f in facs]
+            assert paths == expected_paths
+            metadata = [
+                    (f.metadata['year'], f.metadata['month'],
+                        f.metadata['day'], f.metadata['slug'])
+                    for f in facs]
+            assert metadata == expected_metadata
+