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