staticpress 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. data.tar.gz.sig +0 -0
  2. data/docs/Gemfile +8 -0
  3. data/{tests/sample_sites/test_blog → docs}/README.markdown +0 -0
  4. data/{tests/sample_sites/test_blog → docs}/config.ru +0 -0
  5. data/docs/config.yml +2 -0
  6. data/docs/content/docs/diving-deeper.markdown +3 -0
  7. data/docs/content/docs/setup.markdown +15 -0
  8. data/docs/content/index.markdown +1 -0
  9. data/features/happy_path.feature +36 -1
  10. data/features/step_definitions/staticpress_steps.rb +1 -1
  11. data/lib/skeleton/Gemfile +0 -2
  12. data/lib/staticpress/booter.rb +1 -1
  13. data/lib/staticpress/cli.rb +2 -2
  14. data/lib/staticpress/content/base.rb +66 -23
  15. data/lib/staticpress/content/category.rb +12 -3
  16. data/lib/staticpress/content/collection_content.rb +0 -4
  17. data/lib/staticpress/content/index.rb +10 -3
  18. data/lib/staticpress/content/page.rb +32 -17
  19. data/lib/staticpress/content/post.rb +22 -27
  20. data/lib/staticpress/content/resource_content.rb +11 -3
  21. data/lib/staticpress/content/static_content.rb +10 -4
  22. data/lib/staticpress/content/tag.rb +12 -3
  23. data/lib/staticpress/content/theme.rb +17 -19
  24. data/lib/staticpress/helpers.rb +4 -0
  25. data/lib/staticpress/route.rb +21 -95
  26. data/lib/staticpress/server.rb +1 -3
  27. data/lib/staticpress/site.rb +20 -16
  28. data/lib/staticpress/version.rb +1 -1
  29. data/tests/staticpress/configuration_test.rb +4 -0
  30. data/tests/staticpress/content/base_test.rb +271 -0
  31. data/tests/staticpress/content/category_test.rb +29 -0
  32. data/tests/staticpress/content/index_test.rb +6 -0
  33. data/tests/staticpress/content/page_test.rb +37 -0
  34. data/tests/staticpress/content/post_test.rb +45 -0
  35. data/tests/staticpress/content/tag_test.rb +33 -0
  36. data/tests/staticpress/content/theme_test.rb +29 -0
  37. data/tests/{lib/staticpress → staticpress}/helpers_test.rb +2 -2
  38. data/tests/staticpress/js_object_test.rb +43 -0
  39. data/tests/staticpress/metadata_test.rb +16 -0
  40. data/tests/staticpress/plugin_test.rb +4 -0
  41. data/tests/staticpress/pusher_test.rb +9 -0
  42. data/tests/{lib/staticpress → staticpress}/route_test.rb +19 -41
  43. data/tests/{lib/staticpress → staticpress}/server_test.rb +5 -14
  44. data/tests/staticpress/site_test.rb +21 -0
  45. data/tests/staticpress/theme_test.rb +86 -0
  46. data/tests/staticpress/view_helpers_test.rb +28 -0
  47. data/tests/{lib/staticpress_test.rb → staticpress_test.rb} +3 -3
  48. data/tests/{sample_sites/test_blog → test_blog}/Gemfile +0 -2
  49. data/tests/test_blog/README.markdown +21 -0
  50. data/tests/test_blog/config.ru +8 -0
  51. data/tests/{sample_sites/test_blog → test_blog}/config.yml +0 -0
  52. data/tests/{sample_sites/test_blog → test_blog}/content/_posts/2011-07-20-hello.markdown +0 -0
  53. data/tests/{sample_sites/test_blog → test_blog}/content/_posts/2011-08-01-announcing-staticpress.markdown +0 -0
  54. data/tests/{sample_sites/test_blog → test_blog}/content/_posts/2011-08-02-staticpress.markdown +0 -0
  55. data/tests/{sample_sites/test_blog → test_blog}/content/_posts/2011-08-06-blogging-with-staticpress.markdown +0 -0
  56. data/tests/{sample_sites/test_blog → test_blog}/content/_posts/2011-08-06-conferences.markdown +0 -0
  57. data/tests/{sample_sites/test_blog → test_blog}/content/_posts/2011-08-06-in-charlotte.markdown +0 -0
  58. data/tests/{sample_sites/test_blog → test_blog}/content/_posts/2011-08-20-forever.markdown +0 -0
  59. data/tests/{sample_sites/test_blog → test_blog}/content/about.markdown +0 -0
  60. data/tests/{sample_sites/test_blog → test_blog}/content/contact.markdown +0 -0
  61. data/tests/{sample_sites/test_blog → test_blog}/content/foo/bar/baz.markdown +0 -0
  62. data/tests/test_blog/content/index.markdown +1 -0
  63. data/tests/{sample_sites/test_blog → test_blog}/content/plain.txt +0 -0
  64. data/tests/{sample_sites/test_blog → test_blog}/content/ruby.png +0 -0
  65. data/tests/{sample_sites/test_blog → test_blog}/content/style1.css +0 -0
  66. data/tests/{sample_sites/test_blog → test_blog}/content/style2.css.sass +0 -0
  67. data/tests/{sample_sites/test_blog → test_blog}/content/style3.sass +0 -0
  68. data/tests/{sample_sites/test_blog → test_blog}/themes/test_theme/assets/scripts/application.js +0 -0
  69. data/tests/{sample_sites/test_blog → test_blog}/themes/test_theme/assets/styles/all.sass +0 -0
  70. data/tests/{sample_sites/test_blog → test_blog}/themes/test_theme/includes/list_posts.haml +0 -0
  71. data/tests/{sample_sites/test_blog → test_blog}/themes/test_theme/layouts/archive.haml +0 -0
  72. data/tests/{sample_sites/test_blog → test_blog}/themes/test_theme/layouts/atom.haml +0 -0
  73. data/tests/{sample_sites/test_blog → test_blog}/themes/test_theme/layouts/default.haml +0 -0
  74. data/tests/{sample_sites/test_blog → test_blog}/themes/test_theme/layouts/index.haml +0 -0
  75. data/tests/{sample_sites/test_blog → test_blog}/themes/test_theme/layouts/post_index.haml +0 -0
  76. data/tests/{sample_sites/test_blog → test_blog}/themes/test_theme/views/default.haml +0 -0
  77. data/tests/{test_helper.rb → test_case.rb} +9 -5
  78. metadata +81 -73
  79. metadata.gz.sig +0 -0
  80. data/tests/lib/staticpress/configuration_test.rb +0 -4
  81. data/tests/lib/staticpress/content/base_test.rb +0 -6
  82. data/tests/lib/staticpress/content/category_test.rb +0 -62
  83. data/tests/lib/staticpress/content/index_test.rb +0 -45
  84. data/tests/lib/staticpress/content/page_test.rb +0 -147
  85. data/tests/lib/staticpress/content/post_test.rb +0 -89
  86. data/tests/lib/staticpress/content/tag_test.rb +0 -60
  87. data/tests/lib/staticpress/content/theme_test.rb +0 -114
  88. data/tests/lib/staticpress/js_object_test.rb +0 -45
  89. data/tests/lib/staticpress/metadata_test.rb +0 -19
  90. data/tests/lib/staticpress/plugin_test.rb +0 -4
  91. data/tests/lib/staticpress/pusher_test.rb +0 -9
  92. data/tests/lib/staticpress/site_test.rb +0 -26
  93. data/tests/lib/staticpress/theme_test.rb +0 -86
  94. data/tests/lib/staticpress/view_helpers_test.rb +0 -33
@@ -0,0 +1,29 @@
1
+ require_relative '../../test_case'
2
+
3
+ require 'staticpress/content/category'
4
+ require 'staticpress/content/post'
5
+
6
+ class ContentCategoryTest < TestCase
7
+ let(:category) { Staticpress::Content::Category.new :name => 'programming' }
8
+
9
+ def test_categories
10
+ assert_equal [ 'programming', 'travel' ], Staticpress::Content::Category.categories
11
+ end
12
+
13
+ def test_sub_content
14
+ assert_equal 3, category.sub_content.count
15
+ end
16
+
17
+ def test_all
18
+ assert_equal 2, Staticpress::Content::Category.all.count
19
+ assert Staticpress::Content::Category.all.include?(category)
20
+ end
21
+
22
+ def test_content_by_category
23
+ [
24
+ Staticpress::Content::Post.new(:year => '2011', :month => '08', :day => '01', :title => 'announcing-staticpress'),
25
+ Staticpress::Content::Post.new(:year => '2011', :month => '08', :day => '02', :title => 'staticpress'),
26
+ Staticpress::Content::Post.new(:year => '2011', :month => '08', :day => '06', :title => 'blogging-with-staticpress')
27
+ ].each { |content| assert_includes Staticpress::Content::Category.content_by_category['programming'], content }
28
+ end
29
+ end
@@ -0,0 +1,6 @@
1
+ require_relative '../../test_case'
2
+
3
+ require 'staticpress/content/index'
4
+
5
+ class ContentIndexTest < TestCase
6
+ end
@@ -0,0 +1,37 @@
1
+ require_relative '../../test_case'
2
+
3
+ require 'staticpress/content/page'
4
+ require 'staticpress/helpers'
5
+
6
+ class ContentPageTest < TestCase
7
+ include Staticpress::Helpers
8
+
9
+ let(:page_dir) { Staticpress.blog_path + config.source_path }
10
+
11
+ let(:page) { Staticpress::Content::Page.new :slug => 'about' }
12
+ let(:second_page) { Staticpress::Content::Page.new :slug => 'contact' }
13
+ let(:index_page) { Staticpress::Content::Page.new :slug => '' }
14
+ let(:style2) { Staticpress::Content::Page.new :slug => 'style2.css' }
15
+ let(:nested) { Staticpress::Content::Page.new :slug => 'foo/bar/baz' }
16
+ let(:static_bin) { Staticpress::Content::Page.new :slug => 'ruby.png' }
17
+ let(:static_txt) { Staticpress::Content::Page.new :slug => 'plain.txt' }
18
+
19
+ let(:fake) { Staticpress::Content::Page.new :slug => 'i/dont/exist' }
20
+
21
+ def test_all
22
+ assert_equal 9, Staticpress::Content::Page.all.count
23
+ end
24
+
25
+ def test_find_by_path
26
+ assert_equal page, Staticpress::Content::Page.find_by_path(page_dir + 'about.markdown')
27
+ assert_equal index_page, Staticpress::Content::Page.find_by_path(page_dir + 'index.markdown')
28
+ assert_nil Staticpress::Content::Page.find_by_path(page_dir + 'i' + 'dont' + 'exist.markdown')
29
+ assert_equal static_bin, Staticpress::Content::Page.find_by_path(page_dir + 'ruby.png')
30
+ assert_nil Staticpress::Content::Page.find_by_path(page_dir + 'i' + 'dont' + 'exist.jpg')
31
+ end
32
+
33
+ def test_template_path
34
+ assert_equal page_dir + 'index.markdown', index_page.template_path
35
+ assert_equal page_dir + 'about.markdown', page.template_path
36
+ end
37
+ end
@@ -0,0 +1,45 @@
1
+ require_relative '../../test_case'
2
+
3
+ require 'staticpress/content/post'
4
+ require 'staticpress/helpers'
5
+
6
+ class ContentPostTest < TestCase
7
+ include Staticpress::Helpers
8
+
9
+ let(:post_dir) { Staticpress.blog_path + config.posts_source_path }
10
+
11
+ let(:post) { Staticpress::Content::Post.new(:year => '2011', :month => '07', :day => '20', :title => 'hello') }
12
+ let(:another_post) { Staticpress::Content::Post.new(:year => '2011', :month => '08', :day => '20', :title => 'forever') }
13
+ let(:long_title_post) { Staticpress::Content::Post.new(:year => '2011', :month => '08', :day => '06', :title => 'blogging-with-staticpress') }
14
+
15
+ def test__spaceship
16
+ assert_operator post, :<=>, another_post
17
+ assert_operator another_post, :<=>, post
18
+ assert_equal [ post, another_post ], [ post, another_post ].sort
19
+ assert_equal [ post, another_post ], [ another_post, post ].sort
20
+ end
21
+
22
+ def test_created_at
23
+ assert_equal Time.utc(2011, 7, 20, 13, 9, 52), post.created_at
24
+ assert_equal Time.utc(2011, 8, 20), another_post.created_at
25
+ end
26
+
27
+ def test_created_on
28
+ assert_equal Time.utc(2011, 7, 20), post.created_on
29
+ assert_equal Time.utc(2011, 8, 20), another_post.created_on
30
+ end
31
+
32
+ def test_find_by_path
33
+ assert_equal post, Staticpress::Content::Post.find_by_path(post_dir + '2011-07-20-hello.markdown')
34
+ assert_nil Staticpress::Content::Post.find_by_path(post_dir + '2011-07-20-goodbye.markdown')
35
+ end
36
+
37
+ def test_template_path
38
+ assert_equal (Staticpress.blog_path + config.posts_source_path + '2011-07-20-hello.markdown'), post.template_path
39
+ end
40
+
41
+ def test_title
42
+ assert_equal 'Hello, World', post.title
43
+ assert_equal 'Blogging With Staticpress', long_title_post.title
44
+ end
45
+ end
@@ -0,0 +1,33 @@
1
+ require_relative '../../test_case'
2
+
3
+ require 'staticpress/content/post'
4
+ require 'staticpress/content/tag'
5
+
6
+ class ContentTagTest < TestCase
7
+ let(:tag) { Staticpress::Content::Tag.new :name => 'charlotte' }
8
+
9
+ def test_tags
10
+ assert_equal [ 'charlotte' ], Staticpress::Content::Tag.tags
11
+ end
12
+
13
+ def test_optional_param_defaults
14
+ expected = { :number => 1 }
15
+ assert_equal expected, Staticpress::Content::Tag.new(:name => 'charlotte').optional_param_defaults
16
+ assert_equal expected, Staticpress::Content::Tag.new(:name => 'charlotte', :number => nil).optional_param_defaults
17
+ end
18
+
19
+ def test_sub_content
20
+ assert_equal 1, tag.sub_content.count
21
+ end
22
+
23
+ def test_all
24
+ assert_equal 1, Staticpress::Content::Tag.all.count
25
+ assert Staticpress::Content::Tag.all.include?(tag)
26
+ end
27
+
28
+ def test_content_by_tag
29
+ [
30
+ Staticpress::Content::Post.new(:year => '2011', :month => '08', :day => '06', :title => 'in-charlotte')
31
+ ].each { |content| assert_includes Staticpress::Content::Tag.content_by_tag['charlotte'], content }
32
+ end
33
+ end
@@ -0,0 +1,29 @@
1
+ require_relative '../../test_case'
2
+
3
+ require 'staticpress/content/theme'
4
+ require 'staticpress/helpers'
5
+
6
+ class ContentThemeTest < TestCase
7
+ include Staticpress::Helpers
8
+
9
+ let(:theme_dir) { Staticpress::Theme.theme.root }
10
+
11
+ let(:asset_style) { Staticpress::Content::Theme.new :theme => 'test_theme', :asset_type => 'styles', :slug => 'all' }
12
+ let(:asset_script) { Staticpress::Content::Theme.new :theme => 'test_theme', :asset_type => 'scripts', :slug => 'application.js' }
13
+
14
+ def setup
15
+ super
16
+ config.theme = :test_theme
17
+ end
18
+
19
+ def test_all
20
+ assert_equal 2, Staticpress::Content::Theme.all.count
21
+ end
22
+
23
+ def test_find_by_path
24
+ assert_equal asset_style, Staticpress::Content::Theme.find_by_path(theme_dir + 'assets' + 'styles' + 'all.sass')
25
+ assert_nil Staticpress::Content::Theme.find_by_path(theme_dir + 'i' + 'dont' + 'exist.markdown')
26
+ actual = Staticpress::Content::Theme.find_by_path(theme_dir + 'assets' + 'scripts' + 'application.js')
27
+ assert_equal actual, asset_script
28
+ end
29
+ end
@@ -1,10 +1,10 @@
1
- require_relative '../../test_helper'
1
+ require_relative '../test_case'
2
2
 
3
3
  require 'pathname'
4
4
 
5
5
  require 'staticpress/helpers'
6
6
 
7
- class HelpersTest < TestHelper
7
+ class HelpersTest < TestCase
8
8
  include Staticpress::Helpers
9
9
 
10
10
  def test_extensionless_basename
@@ -0,0 +1,43 @@
1
+ require_relative '../test_case'
2
+
3
+ require 'staticpress/js_object'
4
+
5
+ class JSObjectTest < TestCase
6
+ JSO = Staticpress::JSObject
7
+
8
+ let(:js_object) { JSO.new :key => :value, :nested => { :a => :b } }
9
+
10
+ def test__minus
11
+ assert_equal(JSO.new({ :key => :value, :nested => { :a => :b } }), js_object - {})
12
+ assert_equal(JSO.new({ :nested => { :a => :b } }), js_object - { :key => :value })
13
+ assert_equal(JSO.new({ :key => :value }), js_object - { :nested => { :a => :b } })
14
+ assert_equal(JSO.new({}), js_object - { :key => :value, :nested => { :a => :b } })
15
+
16
+ assert_equal(JSO.new({ :key => :value, :nested => { :a => :b } }), js_object - JSO.new({}))
17
+ assert_equal(JSO.new({ :nested => { :a => :b } }), js_object - JSO.new({ :key => :value }))
18
+ assert_equal(JSO.new({ :key => :value }), js_object - JSO.new({ :nested => { :a => :b } }))
19
+ assert_equal(JSO.new({}), js_object - JSO.new({ :key => :value, :nested => { :a => :b } }))
20
+ end
21
+
22
+ def test__squares
23
+ assert_nil js_object[:some_random]
24
+ assert_equal :value, js_object[:key]
25
+ assert_equal :value, js_object['key']
26
+ end
27
+
28
+ def test_regular_access
29
+ assert_equal :value, js_object.key
30
+ assert_equal :b, js_object.nested.a
31
+ assert_nil js_object.nested.other
32
+ end
33
+
34
+ def test_assignment
35
+ assert_nil js_object.hoopla
36
+ js_object.hoopla = :hullabaloo
37
+ assert_equal :hullabaloo, js_object.hoopla
38
+ end
39
+
40
+ def test_to_hash
41
+ assert_equal({ :key => :value, :nested => { :a => :b } }, js_object.to_hash)
42
+ end
43
+ end
@@ -0,0 +1,16 @@
1
+ require_relative '../test_case'
2
+
3
+ require 'staticpress/metadata'
4
+
5
+ class MetadataTest < TestCase
6
+ let(:meta) { Staticpress::Metadata.new }
7
+ let(:another_meta) { Staticpress::Metadata.new :layout => 'post_index', :categories => %w[programming], :tags => %w[code tutorial] }
8
+
9
+ def test__chevron
10
+ end
11
+
12
+ def test_inspect
13
+ assert_equal '#<Staticpress::Metadata>', meta.inspect
14
+ assert_equal '#<Staticpress::Metadata categories=["programming"], layout="post_index", tags=["code", "tutorial"]>', another_meta.inspect
15
+ end
16
+ end
@@ -0,0 +1,4 @@
1
+ require_relative '../test_case'
2
+
3
+ class PluginTest < TestCase
4
+ end
@@ -0,0 +1,9 @@
1
+ require_relative '../test_case'
2
+
3
+ class PusherTest < TestCase
4
+ def test_custom
5
+ end
6
+
7
+ def test_push
8
+ end
9
+ end
@@ -1,55 +1,34 @@
1
- require_relative '../../test_helper'
1
+ require_relative '../test_case'
2
2
 
3
3
  require 'staticpress/route'
4
4
 
5
- class RouteTest < TestHelper
6
- def setup
7
- super
5
+ class RouteTest < TestCase
6
+ def test_extract_params_index
7
+ pattern = '/(page/:number)?'
8
8
 
9
- @route_category_0 = Staticpress::Route.new :content_type => Staticpress::Content::Category, :name => 'programming', :number => nil
10
- @route_category_1 = Staticpress::Route.new :content_type => Staticpress::Content::Category, :name => 'programming', :number => '1'
11
- @route_category_2 = Staticpress::Route.new :content_type => Staticpress::Content::Category, :name => 'programming', :number => '2'
12
- @route_page = Staticpress::Route.new :content_type => Staticpress::Content::Page, :slug => 'about'
13
- @route_post = Staticpress::Route.new :content_type => Staticpress::Content::Post, :year => '2011', :month => '07', :day => '20', :title => 'hello'
14
- end
9
+ assert_equal({ :number => nil }, Staticpress::Route.extract_params(pattern, '/'))
10
+ assert_equal({ :number => '2' }, Staticpress::Route.extract_params(pattern, '/page/2'))
15
11
 
16
- def test__equalsequals
17
- assert_operator @route_category_0, :==, @route_category_1
18
- refute_operator @route_category_0, :==, @route_category_2
19
- assert_operator @route_page, :==, Staticpress::Route.new(:content_type => Staticpress::Content::Page, :slug => 'about')
20
- refute_operator @route_page, :==, @route_post
21
- refute_operator @route_page, :==, nil
12
+ assert_nil nil, Staticpress::Route.extract_params(pattern, '/plain.txt')
22
13
  end
23
14
 
24
- def test_content
25
- assert_equal Staticpress::Content::Page.new(@route_page, :markdown), @route_page.content
26
- assert_equal Staticpress::Content::Post.new(@route_post, :markdown), @route_post.content
27
- end
15
+ def test_extract_params_page
16
+ pattern = '/:slug'
28
17
 
29
- def test_inspect
30
- assert_equal '#<Staticpress::Route url_path=/about, content_type=Staticpress::Content::Page, params={:slug=>"about"}>', @route_page.inspect
31
- assert_equal '#<Staticpress::Route url_path=/2011/07/20/hello, content_type=Staticpress::Content::Post, params={:day=>"20", :month=>"07", :title=>"hello", :year=>"2011"}>', @route_post.inspect
18
+ assert_equal({ :slug => '' }, Staticpress::Route.extract_params(pattern, '/'))
19
+ assert_equal({ :slug => 'hello' }, Staticpress::Route.extract_params(pattern, '/hello'))
32
20
  end
33
21
 
34
- def test_params
35
- assert_equal({ :content_type => Staticpress::Content::Category, :name => 'programming', :number => '1' }, @route_category_0.params)
36
- assert_equal({ :content_type => Staticpress::Content::Category, :name => 'programming', :number => '1' }, @route_category_1.params)
37
- assert_equal({ :content_type => Staticpress::Content::Page, :slug => 'about' }, @route_page.params)
38
- assert_equal({ :content_type => Staticpress::Content::Post, :year => '2011', :month => '07', :day => '20', :title => 'hello' }, @route_post.params)
39
- end
22
+ def test_extract_params_post
23
+ pattern = '/:year/:month/:day/:title'
40
24
 
41
- def test_url_path
42
- assert_equal '/category/programming', @route_category_0.url_path
43
- assert_equal '/category/programming', @route_category_1.url_path
44
- assert_equal '/category/programming/page/2', @route_category_2.url_path
45
- assert_equal '/about', @route_page.url_path
46
- assert_equal '/2011/07/20/hello', @route_post.url_path
25
+ assert_equal({ :year => '2011', :month => '11', :day => '11', :title => 'hello-world' }, Staticpress::Route.extract_params(pattern, '/2011/11/11/hello-world'))
47
26
  end
48
27
 
49
- def test_from_url_path
50
- assert_equal Staticpress::Route.from_url_path('/about'), @route_page
51
- assert_equal Staticpress::Route.from_url_path('/2011/07/20/hello'), @route_post
52
- assert_nil Staticpress::Route.from_url_path('/i/dont/exist')
28
+ def test_extract_params_theme
29
+ pattern = '/assets/:theme/:asset_type/:slug'
30
+
31
+ assert_equal({ :theme => 'default', :asset_type => 'styles', :slug => 'screen.css' }, Staticpress::Route.extract_params(pattern, '/assets/default/styles/screen.css'))
53
32
  end
54
33
 
55
34
  def test_regex_for_pattern_index
@@ -71,6 +50,7 @@ class RouteTest < TestHelper
71
50
  def test_regex_for_pattern_page_1
72
51
  pattern = '/:slug'
73
52
 
53
+ assert_match Staticpress::Route.regex_for_pattern(pattern), '/'
74
54
  assert_match Staticpress::Route.regex_for_pattern(pattern), '/page/1'
75
55
  assert_match Staticpress::Route.regex_for_pattern(pattern), '/about'
76
56
  assert_match Staticpress::Route.regex_for_pattern(pattern), '/about/us'
@@ -80,8 +60,6 @@ class RouteTest < TestHelper
80
60
  assert_match Staticpress::Route.regex_for_pattern(pattern), '/blog/2011/07/20/hello-world'
81
61
  assert_match Staticpress::Route.regex_for_pattern(pattern), '/plain.txt'
82
62
  assert_match Staticpress::Route.regex_for_pattern(pattern), '/files/profile.jpg'
83
-
84
- refute_match Staticpress::Route.regex_for_pattern(pattern), '/'
85
63
  end
86
64
 
87
65
  def test_regex_for_pattern_page_2
@@ -1,27 +1,18 @@
1
- require_relative '../../test_helper'
1
+ require_relative '../test_case'
2
2
 
3
3
  require 'staticpress/server'
4
4
 
5
- class ServerTest < TestHelper
6
- def setup
7
- super
8
- @server = Staticpress::Server.new
9
- end
10
-
11
- def env(path)
12
- {
13
- 'REQUEST_PATH' => path
14
- }
15
- end
5
+ class ServerTest < TestCase
6
+ let(:server) { Staticpress::Server.new }
16
7
 
17
8
  def test_call_root
18
- response = @server.call(env('/'))
9
+ response = server.call(env('/'))
19
10
  assert_equal 200, response.first
20
11
  assert_equal 'text/html', response[1]['Content-Type']
21
12
  end
22
13
 
23
14
  def test_call_image
24
- response = @server.call(env('/ruby.png'))
15
+ response = server.call(env('/ruby.png'))
25
16
  assert_equal 200, response.first
26
17
  assert_equal 'image/png', response[1]['Content-Type']
27
18
  end
@@ -0,0 +1,21 @@
1
+ require_relative '../test_case'
2
+
3
+ require 'staticpress/content/page'
4
+ require 'staticpress/content/post'
5
+ require 'staticpress/route'
6
+ require 'staticpress/site'
7
+
8
+ class SiteTest < TestCase
9
+ let(:site) { Staticpress::Site.new }
10
+
11
+ let(:index) { Staticpress::Content::Page.new :slug => '' }
12
+ let(:page) { Staticpress::Content::Page.new :slug => 'about' }
13
+ let(:post) { Staticpress::Content::Post.new :year => '2011', :month => '07', :day => '20', :title => 'hello' }
14
+
15
+ def test_find_content_by_env
16
+ assert_equal index, site.find_content_by_env(env('/'))
17
+ assert_equal page, site.find_content_by_env(env('/about'))
18
+ assert_equal post, site.find_content_by_env(env('/2011/07/20/hello'))
19
+ assert_nil site.find_content_by_env(env('/i/dont/exist'))
20
+ end
21
+ end
@@ -0,0 +1,86 @@
1
+ require_relative '../test_case'
2
+
3
+ require 'staticpress/helpers'
4
+ require 'staticpress/theme'
5
+
6
+ class ThemeTest < TestCase
7
+ include Staticpress::Helpers
8
+
9
+ let(:theme) { Staticpress::Theme.new :test_theme }
10
+
11
+ def setup
12
+ super
13
+ config.theme = :test_theme
14
+ end
15
+
16
+ def test__equalsequals
17
+ assert_operator theme, :==, Staticpress::Theme.new(:test_theme)
18
+ end
19
+
20
+ def test_root
21
+ assert_equal theme.root, (Staticpress.blog_path + 'themes' + 'test_theme')
22
+ end
23
+
24
+ def test_theme
25
+ assert_equal theme, Staticpress::Theme.theme
26
+ end
27
+
28
+
29
+ def test_default_include
30
+ refute_respond_to theme, :default_include
31
+ end
32
+
33
+ def test_keyed_includes
34
+ assert_equal((theme.root + 'includes' + 'list_posts.haml'), theme.keyed_includes['list_posts'])
35
+ assert_nil theme.keyed_includes['fake']
36
+ end
37
+
38
+ def test_include_for
39
+ assert_equal (theme.root + 'includes' + 'list_posts.haml'), theme.include_for(:list_posts)
40
+ assert_nil theme.include_for(:fake)
41
+ end
42
+
43
+ def test_includes
44
+ assert_equal 1, theme.includes.count
45
+ end
46
+
47
+
48
+ def test_default_layout
49
+ assert_equal (theme.root + 'layouts' + 'default.haml'), theme.default_layout
50
+ end
51
+
52
+ def test_keyed_layouts
53
+ assert_equal((theme.root + 'layouts' + 'default.haml'), theme.keyed_layouts['default'])
54
+ assert_equal((theme.root + 'layouts' + 'post_index.haml'), theme.keyed_layouts['post_index'])
55
+ assert_nil theme.keyed_layouts['fake']
56
+ end
57
+
58
+ def test_layout_for
59
+ assert_equal (theme.root + 'layouts' + 'default.haml'), theme.layout_for(:default)
60
+ assert_equal (theme.root + 'layouts' + 'post_index.haml'), theme.layout_for(:post_index)
61
+ assert_nil theme.layout_for(:fake)
62
+ end
63
+
64
+ def test_layouts
65
+ assert_equal 5, theme.layouts.count
66
+ end
67
+
68
+
69
+ def test_default_view
70
+ assert_equal (theme.root + 'views' + 'default.haml'), theme.default_view
71
+ end
72
+
73
+ def test_keyed_views
74
+ assert_equal((theme.root + 'views' + 'default.haml'), theme.keyed_views['default'])
75
+ assert_nil theme.keyed_views['fake']
76
+ end
77
+
78
+ def test_view_for
79
+ assert_equal (theme.root + 'views' + 'default.haml'), theme.view_for(:default)
80
+ assert_nil theme.view_for(:fake)
81
+ end
82
+
83
+ def test_views
84
+ assert_equal 1, theme.views.count
85
+ end
86
+ end