A fork of hyde, the static site generation. Some patches will be pushed upstream.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

123 lines
3.7 KiB

  1. # -*- coding: utf-8 -*-
  2. """
  3. Use nose
  4. `$ pip install nose`
  5. `$ nosetests`
  6. """
  7. from textwrap import dedent
  8. from hyde.generator import Generator
  9. from hyde.site import Site
  10. from fswrap import File
  11. TEST_SITE = File(__file__).parent.parent.child_folder('_test')
  12. class TestPaginator(object):
  13. def setUp(self):
  14. TEST_SITE.make()
  15. TEST_SITE.parent.child_folder(
  16. 'sites/test_paginator').copy_contents_to(TEST_SITE)
  17. self.s = Site(TEST_SITE)
  18. self.deploy = TEST_SITE.child_folder('deploy')
  19. self.gen = Generator(self.s)
  20. self.gen.load_site_if_needed()
  21. self.gen.load_template_if_needed()
  22. self.gen.generate_all()
  23. def tearDown(self):
  24. TEST_SITE.delete()
  25. def test_pages_of_one(self):
  26. pages = ['pages_of_one.txt', 'page2/pages_of_one.txt',
  27. 'page3/pages_of_one.txt', 'page4/pages_of_one.txt']
  28. files = [File(self.deploy.child(p)) for p in pages]
  29. for f in files:
  30. assert f.exists
  31. page5 = File(self.deploy.child('page5/pages_of_one.txt'))
  32. assert not page5.exists
  33. def test_pages_of_one_content(self):
  34. expected_page1_content = dedent('''\
  35. Another Sad Post
  36. /page2/pages_of_one.txt''')
  37. expected_page2_content = dedent('''\
  38. A Happy Post
  39. /pages_of_one.txt
  40. /page3/pages_of_one.txt''')
  41. expected_page3_content = dedent('''\
  42. An Angry Post
  43. /page2/pages_of_one.txt
  44. /page4/pages_of_one.txt''')
  45. expected_page4_content = dedent('''\
  46. A Sad Post
  47. /page3/pages_of_one.txt
  48. ''')
  49. page1 = self.deploy.child('pages_of_one.txt')
  50. content = File(page1).read_all()
  51. assert expected_page1_content == content
  52. page2 = self.deploy.child('page2/pages_of_one.txt')
  53. content = File(page2).read_all()
  54. assert expected_page2_content == content
  55. page3 = self.deploy.child('page3/pages_of_one.txt')
  56. content = File(page3).read_all()
  57. assert expected_page3_content == content
  58. page4 = self.deploy.child('page4/pages_of_one.txt')
  59. content = File(page4).read_all()
  60. assert expected_page4_content == content
  61. def test_pages_of_ten(self):
  62. page1 = self.deploy.child('pages_of_ten.txt')
  63. page2 = self.deploy.child('page2/pages_of_ten.txt')
  64. assert File(page1).exists
  65. assert not File(page2).exists
  66. def test_pages_of_ten_depends(self):
  67. depends = self.gen.deps['pages_of_ten.txt']
  68. assert depends
  69. assert len(depends) == 4
  70. assert 'blog/sad-post.html' in depends
  71. assert 'blog/another-sad-post.html' in depends
  72. assert 'blog/angry-post.html' in depends
  73. assert 'blog/happy-post.html' in depends
  74. def test_pages_of_ten_content(self):
  75. expected_content = dedent('''\
  76. Another Sad Post
  77. A Happy Post
  78. An Angry Post
  79. A Sad Post
  80. ''')
  81. page = self.deploy.child('pages_of_ten.txt')
  82. content = File(page).read_all()
  83. assert expected_content == content
  84. def test_pages_of_one_depends(self):
  85. depends = self.gen.deps['pages_of_one.txt']
  86. assert depends
  87. assert len(depends) == 4
  88. assert 'blog/sad-post.html' in depends
  89. assert 'blog/another-sad-post.html' in depends
  90. assert 'blog/angry-post.html' in depends
  91. assert 'blog/happy-post.html' in depends
  92. def test_custom_file_pattern(self):
  93. page1 = self.deploy.child('custom_file_pattern.txt')
  94. page2 = self.deploy.child('custom_file_pattern-2.txt')
  95. assert File(page1).exists
  96. assert File(page2).exists