|
- # -*- coding: utf-8 -*-
- """
- Use nose
- `$ pip install nose`
- `$ nosetests`
- """
-
- from hyde._compat import str
- from hyde.engine import Engine
- from hyde.exceptions import HydeException
- from hyde.layout import Layout
-
- from fswrap import File, Folder
- from nose.tools import raises, with_setup, nottest
-
- TEST_SITE = File(__file__).parent.child_folder('_test')
- TEST_SITE_AT_USER = Folder('~/_test')
-
-
- @nottest
- def create_test_site():
- TEST_SITE.make()
-
-
- @nottest
- def delete_test_site():
- TEST_SITE.delete()
-
-
- @nottest
- def create_test_site_at_user():
- TEST_SITE_AT_USER.make()
-
-
- @nottest
- def delete_test_site_at_user():
- TEST_SITE_AT_USER.delete()
-
-
- @raises(HydeException)
- @with_setup(create_test_site, delete_test_site)
- def test_ensure_exception_when_site_yaml_exists():
- e = Engine(raise_exceptions=True)
- File(TEST_SITE.child('site.yaml')).write("Hey")
- e.run(e.parse(['-s', str(TEST_SITE), 'create']))
-
-
- @raises(HydeException)
- @with_setup(create_test_site, delete_test_site)
- def test_ensure_exception_when_content_folder_exists():
- e = Engine(raise_exceptions=True)
- TEST_SITE.child_folder('content').make()
- e.run(e.parse(['-s', str(TEST_SITE), 'create']))
-
-
- @raises(HydeException)
- @with_setup(create_test_site, delete_test_site)
- def test_ensure_exception_when_layout_folder_exists():
- e = Engine(raise_exceptions=True)
- TEST_SITE.child_folder('layout').make()
- e.run(e.parse(['-s', str(TEST_SITE), 'create']))
-
-
- @with_setup(create_test_site, delete_test_site)
- def test_ensure_no_exception_when_empty_site_exists():
- e = Engine(raise_exceptions=True)
- e.run(e.parse(['-s', str(TEST_SITE), 'create']))
- verify_site_contents(TEST_SITE, Layout.find_layout())
-
-
- @with_setup(create_test_site, delete_test_site)
- def test_ensure_no_exception_when_forced():
- e = Engine(raise_exceptions=True)
- TEST_SITE.child_folder('layout').make()
- e.run(e.parse(['-s', str(TEST_SITE), 'create', '-f']))
- verify_site_contents(TEST_SITE, Layout.find_layout())
- TEST_SITE.delete()
- TEST_SITE.child_folder('content').make()
- e.run(e.parse(['-s', str(TEST_SITE), 'create', '-f']))
- verify_site_contents(TEST_SITE, Layout.find_layout())
- TEST_SITE.delete()
- TEST_SITE.make()
- File(TEST_SITE.child('site.yaml')).write("Hey")
- e.run(e.parse(['-s', str(TEST_SITE), 'create', '-f']))
- verify_site_contents(TEST_SITE, Layout.find_layout())
-
-
- @with_setup(create_test_site, delete_test_site)
- def test_ensure_no_exception_when_sitepath_does_not_exist():
- e = Engine(raise_exceptions=True)
- TEST_SITE.delete()
- e.run(e.parse(['-s', str(TEST_SITE), 'create', '-f']))
- verify_site_contents(TEST_SITE, Layout.find_layout())
-
-
- @with_setup(create_test_site_at_user, delete_test_site_at_user)
- def test_ensure_can_create_site_at_user():
- e = Engine(raise_exceptions=True)
- TEST_SITE_AT_USER.delete()
- e.run(e.parse(['-s', str(TEST_SITE_AT_USER), 'create', '-f']))
- verify_site_contents(TEST_SITE_AT_USER, Layout.find_layout())
-
-
- @nottest
- def verify_site_contents(site, layout):
- assert site.exists
- assert site.child_folder('layout').exists
- assert File(site.child('info.yaml')).exists
-
- expected = list(map(
- lambda f: f.get_relative_path(layout), layout.walker.walk_all()))
- actual = list(map(
- lambda f: f.get_relative_path(site), site.walker.walk_all()))
- assert actual
- assert expected
-
- expected.sort()
- actual.sort()
- assert actual == expected
-
-
- @raises(HydeException)
- @with_setup(create_test_site, delete_test_site)
- def test_ensure_exception_when_layout_is_invalid():
- e = Engine(raise_exceptions=True)
- e.run(e.parse(['-s', str(TEST_SITE), 'create', '-l', 'junk']))
|