summaryrefslogtreecommitdiff
path: root/test/controllers/content_controller_test.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/controllers/content_controller_test.rb')
-rw-r--r--test/controllers/content_controller_test.rb130
1 files changed, 130 insertions, 0 deletions
diff --git a/test/controllers/content_controller_test.rb b/test/controllers/content_controller_test.rb
new file mode 100644
index 0000000..bd5fd7d
--- /dev/null
+++ b/test/controllers/content_controller_test.rb
@@ -0,0 +1,130 @@
1require 'test_helper'
2
3class ContentControllerTest < ActionController::TestCase
4
5 def setup
6 @root = Node.find(1)
7 @first_child = Node.find(2)
8 @second_child = Node.find(3)
9
10 @user1 = User.create :login => 'demo', :email => "f@b.com", :password => 'foobar', :password_confirmation => 'foobar'
11 @user2 = User.create :login => 'show', :email => "f@b.com", :password => 'foobar', :password_confirmation => 'foobar'
12 end
13
14 def test_custom_page_route
15 assert_recognizes({ :controller => 'content', :action => 'render_page', :locale => 'de', :page_path => 'foo/bar' }, '/de/foo/bar')
16 assert_recognizes({ :controller => 'content', :action => 'render_page', :locale => 'en', :page_path => 'home' }, '/en/home')
17 end
18
19 def test_render_404_when_no_page_was_found
20 get :render_page, params: { :language => 'de', :page_path => ["wrong_path"] }
21 assert_response 404
22 end
23
24 def test_rendering_a_page
25 assert Node.valid?
26 assert_not_nil first_child = Node.find_by_slug("first_child")
27 page = first_child.pages.create :title => "First Child"
28 first_child.head = page
29 first_child.save!
30
31 get :render_page, params: { :language => 'de', :page_path => ["first_child"] }
32 assert_response :success
33 assert_equal "layouts/application", @controller.active_layout.name rescue assert true
34 end
35
36 def test_page_containing_aggregator
37 assert_not_nil Node.root
38
39 fill_pages_with_content
40
41 new_node = create_node_under_root "fnord"
42 draft = new_node.find_or_create_draft @user1
43 draft.body = '<aggregate tags="update" limit="20" />'
44 draft.save
45 new_node.publish_draft!
46
47 get :render_page, params: { :locale => 'de', :page_path => ["fnord"] }
48 assert_response :success
49
50 # The aggregator renders into div.body > div.article_partial.
51 # Without a working aggregator this will be empty.
52 assert_select "div.body div.article_partial", :minimum => 2
53 assert_select "div.body div.article_partial h2.headline a", :text => "one"
54 assert_select "div.body div.article_partial h2.headline a", :text => "two"
55 end
56
57 def test_page_containing_aggregator_with_custom_template
58 fill_pages_with_content
59
60 new_node = create_node_under_root "fnord"
61 draft = new_node.find_or_create_draft @user1
62 draft.body = '<aggregate tags="update" limit="20" partial="sidebar_title_only" />'
63 draft.save
64 new_node.publish_draft!
65
66 get :render_page, params: { :locale => 'de', :page_path => ["fnord"] }
67 assert_response :success
68
69 assert_select(".sidebar_headline", "one")
70 assert_select(".sidebar_headline", "two")
71 end
72
73 def test_nonexistant_custom_template_defaults_to_standard_template
74 new_node = create_node_under_root "fnord"
75 draft = new_node.find_or_create_draft @user1
76 draft.template_name = "huchibu"
77 draft.save
78 new_node.publish_draft!
79
80 get :render_page, params: { :locale => 'de', :page_path => ["fnord"] }
81 assert_response :success
82 assert_template "custom/page_templates/public/standard_template"
83 end
84
85 def test_custom_template_no_date_and_author
86 new_node = create_node_under_root "fnord"
87 draft = new_node.find_or_create_draft @user1
88 draft.template_name = "no_date_and_author"
89 draft.save
90 new_node.publish_draft!
91
92 get :render_page, params: { :locale => 'de', :page_path => ["fnord"] }
93 assert_response :success
94 assert_template "custom/page_templates/public/no_date_and_author"
95 end
96
97 def test_aggregator_without_fill
98 new_node = create_node_under_root "fnord"
99 draft = new_node.find_or_create_draft @user1
100 draft.body = '<aggregate tags="xyzzy_unique_test_tag" limit="20" />'
101 draft.save
102 new_node.publish_draft!
103
104 get :render_page, params: { :locale => 'de', :page_path => ["fnord"] }
105 assert_response :success
106 File.write("/tmp/no_fill_response.html", @response.body)
107 end
108
109 protected
110
111 def create_node_under_root slug
112 node = Node.root.children.create! :slug => slug
113 node
114 end
115
116 def fill_pages_with_content
117 d1 = @first_child.find_or_create_draft @user1
118 d1.title = "one"
119 d1.tag_list = "update"
120 d1.save
121 @first_child.publish_draft!
122
123 d2 = @second_child.find_or_create_draft @user1
124 d2.title = "two"
125 d2.tag_list = "update"
126 d2.save
127 @second_child.publish_draft!
128 end
129
130end