comparison tests/test_data_assetor.py @ 6:f5ca5c5bed85

More Python 3 fixes, modularization, and new unit tests.
author Ludovic Chabant <ludovic@chabant.com>
date Sat, 16 Aug 2014 08:15:30 -0700
parents
children 43091c9837bf
comparison
equal deleted inserted replaced
5:474c9882decf 6:f5ca5c5bed85
1 import pytest
2 from mock import MagicMock
3 from piecrust.data.assetor import Assetor, UnsupportedAssetsError
4 from .mockutil import mock_fs, mock_fs_scope
5
6
7 @pytest.mark.parametrize('fs, expected', [
8 (mock_fs().withPage('foo/bar'), {}),
9 (mock_fs()
10 .withPage('foo/bar')
11 .withPageAsset('foo/bar', 'one.txt', 'one'),
12 {'one': 'one'}),
13 (mock_fs()
14 .withPage('foo/bar')
15 .withPageAsset('foo/bar', 'one.txt', 'one')
16 .withPageAsset('foo/bar', 'two.txt', 'two'),
17 {'one': 'one', 'two': 'two'})
18 ])
19 def test_assets(fs, expected):
20 with mock_fs_scope(fs):
21 page = MagicMock()
22 page.app = fs.getApp()
23 page.path = fs.path('/kitchen/_content/pages/foo/bar.md')
24 assetor = Assetor(page, '/foo/bar')
25 for en in expected.keys():
26 assert hasattr(assetor, en)
27 path = '/foo/bar/%s.txt' % en
28 assert getattr(assetor, en) == path
29 assert assetor[en] == path
30
31
32 def test_missing_asset():
33 with pytest.raises(KeyError):
34 fs = mock_fs().withPage('foo/bar')
35 with mock_fs_scope(fs):
36 page = MagicMock()
37 page.app = fs.getApp()
38 page.path = fs.path('/kitchen/_content/pages/foo/bar.md')
39 assetor = Assetor(page, '/foo/bar')
40 assetor['this_doesnt_exist']
41
42
43 def test_multiple_assets_with_same_name():
44 with pytest.raises(UnsupportedAssetsError):
45 fs = (mock_fs()
46 .withPage('foo/bar')
47 .withPageAsset('foo/bar', 'one.txt', 'one text')
48 .withPageAsset('foo/bar', 'one.jpg', 'one picture'))
49 with mock_fs_scope(fs):
50 page = MagicMock()
51 page.app = fs.getApp()
52 page.path = fs.path('/kitchen/_content/pages/foo/bar.md')
53 assetor = Assetor(page, '/foo/bar')
54 assetor['one']
55