we5-browsercms 3.0.2 → 3.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/README.markdown +1 -0
- data/app/controllers/cms/content_block_controller.rb +25 -2
- data/app/controllers/cms/content_controller.rb +31 -2
- data/app/controllers/cms/dashboard_controller.rb +2 -1
- data/app/controllers/cms/error_handling.rb +9 -2
- data/app/controllers/cms/links_controller.rb +2 -0
- data/app/controllers/cms/pages_controller.rb +22 -18
- data/app/controllers/cms/section_nodes_controller.rb +1 -1
- data/app/controllers/cms/sections_controller.rb +12 -7
- data/app/controllers/cms/sessions_controller.rb +17 -10
- data/app/controllers/cms/users_controller.rb +8 -6
- data/app/helpers/cms/application_helper.rb +2 -6
- data/app/helpers/cms/menu_helper.rb +118 -146
- data/app/helpers/cms/page_helper.rb +2 -2
- data/app/models/attachment.rb +2 -2
- data/app/models/forgot_password_mailer.rb +12 -0
- data/app/models/group.rb +13 -2
- data/app/models/guest_user.rb +9 -3
- data/app/models/link.rb +2 -2
- data/app/models/page.rb +1 -1
- data/app/models/section.rb +7 -2
- data/app/models/user.rb +35 -17
- data/app/portlets/forgot_password_portlet.rb +27 -0
- data/app/portlets/reset_password_portlet.rb +28 -0
- data/app/views/cms/blocks/_toolbar_for_member.html.erb +3 -3
- data/app/views/cms/blocks/index.html.erb +11 -6
- data/app/views/cms/content/show.html.erb +3 -3
- data/app/views/cms/forgot_password_mailer/reset_password.text.html.erb +3 -0
- data/app/views/cms/forgot_password_mailer/reset_password.text.plain.erb +3 -0
- data/app/views/cms/menus/_menu.html.erb +9 -0
- data/app/views/cms/menus/_menu_item.html.erb +11 -0
- data/app/views/cms/pages/_edit_connector.html.erb +1 -1
- data/app/views/cms/pages/_edit_container.html.erb +1 -1
- data/app/views/cms/section_nodes/_node.html.erb +1 -1
- data/app/views/cms/sections/_form.html.erb +36 -34
- data/app/views/cms/shared/access_denied.html.erb +3 -0
- data/app/views/cms/users/change_password.html.erb +8 -6
- data/app/views/cms/users/index.html.erb +1 -1
- data/app/views/cms/users/show.html.erb +50 -0
- data/app/views/layouts/_cms_toolbar.html.erb +1 -1
- data/app/views/layouts/_page_toolbar.html.erb +7 -7
- data/app/views/layouts/cms/administration.html.erb +24 -7
- data/app/views/portlets/forgot_password/_form.html.erb +5 -0
- data/app/views/portlets/forgot_password/render.html.erb +14 -0
- data/app/views/portlets/reset_password/_form.html.erb +3 -0
- data/app/views/portlets/reset_password/render.html.erb +24 -0
- data/{we5-browsercms.gemspec → browsercms.gemspec} +72 -54
- data/db/migrate/20091109175123_browsercms_3_0_5.rb +9 -0
- data/lib/acts_as_list.rb +8 -4
- data/lib/cms/acts/content_block.rb +1 -1
- data/lib/cms/authentication/controller.rb +26 -7
- data/lib/cms/behaviors/attaching.rb +3 -3
- data/lib/cms/behaviors/publishing.rb +12 -1
- data/lib/cms/behaviors/rendering.rb +17 -4
- data/lib/cms/behaviors/versioning.rb +2 -2
- data/lib/cms/routes.rb +4 -0
- data/lib/tasks/cms.rake +0 -18
- data/public/javascripts/cms/content_library.js +36 -0
- data/public/javascripts/cms/sitemap.js +21 -9
- data/public/stylesheets/cms/form_layout.css +16 -2
- data/public/stylesheets/cms/nav.css +4 -3
- data/test/functional/cms/content_block_controller_test.rb +120 -0
- data/test/functional/cms/content_controller_test.rb +135 -80
- data/test/functional/cms/links_controller_test.rb +89 -1
- data/test/functional/cms/pages_controller_test.rb +138 -0
- data/test/functional/cms/section_nodes_controller_test.rb +45 -5
- data/test/functional/cms/sections_controller_test.rb +148 -1
- data/test/functional/cms/sessions_controller_test.rb +26 -2
- data/test/functional/cms/users_controller_test.rb +49 -2
- data/test/integration/cms/password_management_test.rb +57 -0
- data/test/test_helper.rb +3 -1
- data/test/unit/behaviors/attaching_test.rb +26 -0
- data/test/unit/helpers/menu_helper_test.rb +118 -278
- data/test/unit/models/group_test.rb +6 -0
- data/test/unit/models/user_test.rb +127 -29
- metadata +20 -3
@@ -0,0 +1,57 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__) + '/../../test_helper')
|
2
|
+
|
3
|
+
class PasswordManagementTest < ActionController::IntegrationTest
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@group = Factory(:group, :name => "Member")
|
7
|
+
|
8
|
+
@section = Factory(:section, :parent => root_section, :name => "Passwords", :path => "/passwords")
|
9
|
+
@section.groups = Group.all
|
10
|
+
@section.save
|
11
|
+
|
12
|
+
@user = Factory(:user, :email => "dexter@miamidade.gov")
|
13
|
+
@user.groups << @group
|
14
|
+
@user.save!
|
15
|
+
|
16
|
+
@forgot_password_page = Factory(:page, :section => @section, :name => "Forgot password", :path => "/passwords")
|
17
|
+
@reset_password_page = Factory(:page, :section => @section, :name => "Reset password", :path => "/passwords/reset")
|
18
|
+
|
19
|
+
@forgot_password_portlet = ForgotPasswordPortlet.create!(:name => "Forgot Password",
|
20
|
+
:template => ForgotPasswordPortlet.default_template,
|
21
|
+
:connect_to_page_id => @forgot_password_page.id,
|
22
|
+
:connect_to_container => "main",
|
23
|
+
:publish_on_save => true)
|
24
|
+
|
25
|
+
@reset_password_portlet = ResetPasswordPortlet.create!(:name => "Reset Password",
|
26
|
+
:template => ResetPasswordPortlet.default_template,
|
27
|
+
:connect_to_page_id => @reset_password_page.id,
|
28
|
+
:connect_to_container => "main",
|
29
|
+
:publish_on_save => true)
|
30
|
+
|
31
|
+
@forgot_password_page.publish!
|
32
|
+
@reset_password_page.publish!
|
33
|
+
ActionMailer::Base.deliveries = []
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_forgot_password
|
37
|
+
get "/passwords"
|
38
|
+
assert_response :success
|
39
|
+
|
40
|
+
post "/passwords", :email => User.last.email
|
41
|
+
assert_response :success
|
42
|
+
assert flash[:forgot_password][:notice]
|
43
|
+
assert ActionMailer::Base.deliveries.empty?
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_reset_password
|
47
|
+
test_forgot_password
|
48
|
+
token = User.last.reset_token
|
49
|
+
get "/passwords/reset?token=#{token}"
|
50
|
+
assert_response :success
|
51
|
+
|
52
|
+
post "/passwords/reset", :token => token
|
53
|
+
assert_response :success
|
54
|
+
assert flash[:reset_password][:notice]
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -2,6 +2,8 @@ ENV["RAILS_ENV"] = "test"
|
|
2
2
|
require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
|
3
3
|
require 'test_help'
|
4
4
|
require 'action_view/test_case'
|
5
|
+
require 'mocha'
|
6
|
+
require 'redgreen'
|
5
7
|
|
6
8
|
class ActiveSupport::TestCase
|
7
9
|
# Transactional fixtures accelerate your tests by wrapping each test method
|
@@ -97,7 +99,7 @@ class ActiveSupport::TestCase
|
|
97
99
|
end
|
98
100
|
|
99
101
|
def guest_group
|
100
|
-
Group.
|
102
|
+
Group.guest || Factory(:group, :code => Group::GUEST_CODE)
|
101
103
|
end
|
102
104
|
|
103
105
|
def login_as(user)
|
@@ -81,6 +81,32 @@ class DefaultAttachableTest < ActiveSupport::TestCase
|
|
81
81
|
assert_equal "/attachments/foo.jpg", @attachable.attachment_file_path
|
82
82
|
assert @attachable.attachment.published?
|
83
83
|
end
|
84
|
+
|
85
|
+
def test_create_without_attachment_and_then_add_attachment_on_edit
|
86
|
+
@attachable = DefaultAttachable.new(:name => "File Name",
|
87
|
+
:attachment_file => nil, :publish_on_save => true)
|
88
|
+
|
89
|
+
assert_difference 'DefaultAttachable.count' do
|
90
|
+
assert_valid @attachable
|
91
|
+
@attachable.save!
|
92
|
+
end
|
93
|
+
|
94
|
+
assert_nil @attachable.attachment_file_path
|
95
|
+
|
96
|
+
reset(:attachable)
|
97
|
+
|
98
|
+
@attachable.attachment_file = @file
|
99
|
+
@attachable.save
|
100
|
+
@attachable.publish
|
101
|
+
assert_equal "/attachments/foo.jpg", @attachable.attachment_file_path
|
102
|
+
|
103
|
+
reset(:attachable)
|
104
|
+
|
105
|
+
assert_equal @section, @attachable.attachment_section
|
106
|
+
assert_equal @section.id, @attachable.attachment_section_id
|
107
|
+
assert_equal "/attachments/foo.jpg", @attachable.attachment_file_path
|
108
|
+
assert @attachable.attachment.published?
|
109
|
+
end
|
84
110
|
|
85
111
|
|
86
112
|
end
|
@@ -2,217 +2,96 @@ require File.join(File.dirname(__FILE__), '/../../test_helper')
|
|
2
2
|
|
3
3
|
class Cms::MenuHelperTest < ActionView::TestCase
|
4
4
|
|
5
|
-
def
|
5
|
+
def test_menu_items
|
6
6
|
Page.first.update_attributes(:hidden => true, :publish_on_save => true)
|
7
7
|
create_nfl_data
|
8
8
|
|
9
|
-
expected =
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
<a href="/cin">Cincinnati Bengals</a>
|
26
|
-
</li>
|
27
|
-
<li id="page_#{@cle.id}" class="depth-3">
|
28
|
-
<a href="/cle">Cleveland Browns</a>
|
29
|
-
</li>
|
30
|
-
<li id="page_#{@pit.id}" class="depth-3 last">
|
31
|
-
<a href="/pit">Pittsburgh Steelers</a>
|
32
|
-
</li>
|
33
|
-
</ul>
|
34
|
-
</li>
|
35
|
-
<li id="section_#{@afc_south.id}" class="depth-2">
|
36
|
-
<a href="/hou">South</a>
|
37
|
-
</li>
|
38
|
-
<li id="section_#{@afc_west.id}" class="depth-2 last">
|
39
|
-
<a href="/den">West</a>
|
40
|
-
</li>
|
41
|
-
</ul>
|
42
|
-
</li>
|
43
|
-
<li id="section_#{@nfc.id}" class="depth-1 last">
|
44
|
-
<a href="/dal">NFC</a>
|
45
|
-
</li>
|
46
|
-
</ul>
|
47
|
-
</div>
|
48
|
-
HTML
|
49
|
-
|
50
|
-
assert_equal expected, render_menu(:page => @bal)
|
9
|
+
expected = [
|
10
|
+
{ :id => "section_#{@afc.id}", :url => "/buf", :name => "AFC", :children => [
|
11
|
+
{ :id => "section_#{@afc_east.id}", :url => "/buf", :name => "East" },
|
12
|
+
{ :id => "section_#{@afc_north.id}", :url => "/bal", :name => "North", :children => [
|
13
|
+
{ :id => "page_#{@bal.id}", :selected => true, :url => "/bal", :name => "Baltimore Ravens" },
|
14
|
+
{ :id => "page_#{@cin.id}", :url => "/cin", :name => "Cincinnati Bengals" },
|
15
|
+
{ :id => "page_#{@cle.id}", :url => "/cle", :name => "Cleveland Browns" },
|
16
|
+
{ :id => "page_#{@pit.id}", :url => "/pit", :name => "Pittsburgh Steelers" }
|
17
|
+
] },
|
18
|
+
{ :id => "section_#{@afc_south.id}", :url => "/hou", :name => "South" },
|
19
|
+
{ :id => "section_#{@afc_west.id}", :url => "/den", :name => "West" }
|
20
|
+
] },
|
21
|
+
{ :id => "section_#{@nfc.id}", :url => "/dal", :name => "NFC" }
|
22
|
+
]
|
23
|
+
|
24
|
+
assert_equal expected, menu_items(:page => @bal)
|
51
25
|
|
52
26
|
@page = @bal
|
53
|
-
assert_equal expected,
|
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
|
-
expected
|
121
|
-
<div id="menu" class="menu">
|
122
|
-
<ul>
|
123
|
-
<li id="section_#{@afc.id}" class="depth-1 first open">
|
124
|
-
<a href="/buf">AFC</a>
|
125
|
-
<ul>
|
126
|
-
<li id="section_#{@afc_east.id}" class="depth-2 first">
|
127
|
-
<a href="/buf">East</a>
|
128
|
-
</li>
|
129
|
-
<li id="section_#{@afc_north.id}" class="depth-2 open">
|
130
|
-
<a href="/bal">North</a>
|
131
|
-
</li>
|
132
|
-
<li id="section_#{@afc_south.id}" class="depth-2">
|
133
|
-
<a href="/hou">South</a>
|
134
|
-
</li>
|
135
|
-
<li id="section_#{@afc_west.id}" class="depth-2 last">
|
136
|
-
<a href="/den">West</a>
|
137
|
-
</li>
|
138
|
-
</ul>
|
139
|
-
</li>
|
140
|
-
<li id="section_#{@nfc.id}" class="depth-1 last">
|
141
|
-
<a href="/dal">NFC</a>
|
142
|
-
<ul>
|
143
|
-
<li id="section_#{@nfc_east.id}" class="depth-2 first">
|
144
|
-
<a href="/dal">East</a>
|
145
|
-
</li>
|
146
|
-
<li id="section_#{@nfc_north.id}" class="depth-2">
|
147
|
-
<a href="/chi">North</a>
|
148
|
-
</li>
|
149
|
-
<li id="section_#{@nfc_south.id}" class="depth-2">
|
150
|
-
<a href="/atl">South</a>
|
151
|
-
</li>
|
152
|
-
<li id="section_#{@nfc_west.id}" class="depth-2 last">
|
153
|
-
<a href="/ari">West</a>
|
154
|
-
</li>
|
155
|
-
</ul>
|
156
|
-
</li>
|
157
|
-
</ul>
|
158
|
-
</div>
|
159
|
-
HTML
|
160
|
-
|
161
|
-
assert_equal expected, render_menu(:depth => 2, :show_all_siblings => true)
|
162
|
-
|
163
|
-
expected = <<HTML
|
164
|
-
<div id="menu" class="menu">
|
165
|
-
<ul>
|
166
|
-
<li id="section_#{@afc.id}" class="depth-1 first open">
|
167
|
-
<a href="/buf">AFC</a>
|
168
|
-
</li>
|
169
|
-
<li id="section_#{@nfc.id}" class="depth-1 last">
|
170
|
-
<a href="/dal">NFC</a>
|
171
|
-
</li>
|
172
|
-
</ul>
|
173
|
-
</div>
|
174
|
-
HTML
|
175
|
-
|
176
|
-
assert_equal expected, render_menu(:depth => 1)
|
177
|
-
|
178
|
-
expected = <<HTML
|
179
|
-
<div id="menu" class="menu">
|
180
|
-
<ul>
|
181
|
-
<li id="section_#{@afc_east.id}" class="depth-1 first">
|
182
|
-
<a href="/buf">East</a>
|
183
|
-
</li>
|
184
|
-
<li id="section_#{@afc_north.id}" class="depth-1 open">
|
185
|
-
<a href="/bal">North</a>
|
186
|
-
</li>
|
187
|
-
<li id="section_#{@afc_south.id}" class="depth-1">
|
188
|
-
<a href="/hou">South</a>
|
189
|
-
</li>
|
190
|
-
<li id="section_#{@afc_west.id}" class="depth-1 last">
|
191
|
-
<a href="/den">West</a>
|
192
|
-
</li>
|
193
|
-
</ul>
|
194
|
-
</div>
|
195
|
-
HTML
|
196
|
-
|
197
|
-
assert_equal expected, render_menu(:from_top => 1, :depth => 1)
|
198
|
-
|
199
|
-
expected = <<HTML
|
200
|
-
<div id="menu" class="menu">
|
201
|
-
<ul>
|
202
|
-
<li id="section_#{@afc_east.id}" class="depth-1 first">
|
203
|
-
<a href="/buf">East</a>
|
204
|
-
</li>
|
205
|
-
<li id="section_#{@afc_north.id}" class="depth-1 open">
|
206
|
-
<a href="/bal">North</a>
|
207
|
-
</li>
|
208
|
-
<li id="section_#{@afc_south.id}" class="depth-1 last">
|
209
|
-
<a href="/hou">South</a>
|
210
|
-
</li>
|
211
|
-
</ul>
|
212
|
-
</div>
|
213
|
-
HTML
|
214
|
-
|
215
|
-
assert_equal expected, render_menu(:from_top => 1, :depth => 1, :limit => 3)
|
27
|
+
assert_equal expected, menu_items
|
28
|
+
|
29
|
+
expected = [
|
30
|
+
{ :id => "section_#{@afc.id}", :url => "/buf", :name => "AFC", :children => [
|
31
|
+
{ :id => "section_#{@afc_east.id}", :url => "/buf", :name => "East" },
|
32
|
+
{ :id => "section_#{@afc_north.id}", :url => "/bal", :name => "North" },
|
33
|
+
{ :id => "section_#{@afc_south.id}", :url => "/hou", :name => "South" },
|
34
|
+
{ :id => "section_#{@afc_west.id}", :url => "/den", :name => "West" }
|
35
|
+
] },
|
36
|
+
{ :id => "section_#{@nfc.id}", :url => "/dal", :name => "NFC" }
|
37
|
+
]
|
38
|
+
|
39
|
+
assert_equal expected, menu_items(:depth => 2)
|
40
|
+
|
41
|
+
expected = [
|
42
|
+
{ :id => "section_#{@afc_east.id}", :url => "/buf", :name => "East" },
|
43
|
+
{ :id => "section_#{@afc_north.id}", :url => "/bal", :name => "North", :children => [
|
44
|
+
{ :id => "page_#{@bal.id}", :selected => true, :url => "/bal", :name => "Baltimore Ravens" },
|
45
|
+
{ :id => "page_#{@cin.id}", :url => "/cin", :name => "Cincinnati Bengals" },
|
46
|
+
{ :id => "page_#{@cle.id}", :url => "/cle", :name => "Cleveland Browns" },
|
47
|
+
{ :id => "page_#{@pit.id}", :url => "/pit", :name => "Pittsburgh Steelers" }
|
48
|
+
] },
|
49
|
+
{ :id => "section_#{@afc_south.id}", :url => "/hou", :name => "South" },
|
50
|
+
{ :id => "section_#{@afc_west.id}", :url => "/den", :name => "West" }
|
51
|
+
]
|
52
|
+
|
53
|
+
assert_equal expected, menu_items(:from_top => 1, :depth => 2)
|
54
|
+
|
55
|
+
expected = [
|
56
|
+
{ :id => "section_#{@afc.id}", :url => "/buf", :name => "AFC", :children => [
|
57
|
+
{ :id => "section_#{@afc_east.id}", :url => "/buf", :name => "East" },
|
58
|
+
{ :id => "section_#{@afc_north.id}", :url => "/bal", :name => "North" },
|
59
|
+
{ :id => "section_#{@afc_south.id}", :url => "/hou", :name => "South" },
|
60
|
+
{ :id => "section_#{@afc_west.id}", :url => "/den", :name => "West" }
|
61
|
+
] },
|
62
|
+
{ :id => "section_#{@nfc.id}", :url => "/dal", :name => "NFC", :children => [
|
63
|
+
{ :id => "section_#{@nfc_east.id}", :url => "/dal", :name => "East" },
|
64
|
+
{ :id => "section_#{@nfc_north.id}", :url => "/chi", :name => "North" },
|
65
|
+
{ :id => "section_#{@nfc_south.id}", :url => "/atl", :name => "South" },
|
66
|
+
{ :id => "section_#{@nfc_west.id}", :url => "/ari", :name => "West" }
|
67
|
+
] }
|
68
|
+
]
|
69
|
+
|
70
|
+
assert_equal expected, menu_items(:depth => 2, :show_all_siblings => true)
|
71
|
+
|
72
|
+
expected = [
|
73
|
+
{ :id => "section_#{@afc.id}", :url => "/buf", :name => "AFC" },
|
74
|
+
{ :id => "section_#{@nfc.id}", :url => "/dal", :name => "NFC" }
|
75
|
+
]
|
76
|
+
|
77
|
+
assert_equal expected, menu_items(:depth => 1)
|
78
|
+
|
79
|
+
expected = [
|
80
|
+
{ :id => "section_#{@afc_east.id}", :url => "/buf", :name => "East" },
|
81
|
+
{ :id => "section_#{@afc_north.id}", :url => "/bal", :name => "North" },
|
82
|
+
{ :id => "section_#{@afc_south.id}", :url => "/hou", :name => "South" },
|
83
|
+
{ :id => "section_#{@afc_west.id}", :url => "/den", :name => "West" }
|
84
|
+
]
|
85
|
+
|
86
|
+
assert_equal expected, menu_items(:from_top => 1, :depth => 1)
|
87
|
+
|
88
|
+
expected = [
|
89
|
+
{ :id => "section_#{@afc_east.id}", :url => "/buf", :name => "East" },
|
90
|
+
{ :id => "section_#{@afc_north.id}", :url => "/bal", :name => "North" },
|
91
|
+
{ :id => "section_#{@afc_south.id}", :url => "/hou", :name => "South" }
|
92
|
+
]
|
93
|
+
|
94
|
+
assert_equal expected, menu_items(:from_top => 1, :depth => 1, :limit => 3)
|
216
95
|
|
217
96
|
end
|
218
97
|
|
@@ -223,36 +102,20 @@ HTML
|
|
223
102
|
@press_releases = Factory(:page, :section => @news, :name => "Press Releases", :path => "/press_releases", :publish_on_save => true)
|
224
103
|
@corporate_news = Factory(:link, :section => @news, :name => "Corporate News", :url => "/news", :new_window => false, :publish_on_save => true)
|
225
104
|
@cnn = Factory(:link, :section => @news, :name => "CNN", :url => "http://www.cnn.com", :new_window => true, :publish_on_save => true)
|
226
|
-
expected = <<HTML
|
227
|
-
<div id="menu" class="menu">
|
228
|
-
<ul>
|
229
|
-
<li id="section_#{@news.id}" class="depth-1 first open">
|
230
|
-
<a href="/press_releases">News</a>
|
231
|
-
<ul>
|
232
|
-
<li id="page_#{@press_releases.id}" class="depth-2 first on">
|
233
|
-
<a href="/press_releases">Press Releases</a>
|
234
|
-
</li>
|
235
|
-
<li id="link_#{@corporate_news.id}" class="depth-2">
|
236
|
-
<a href="/news">Corporate News</a>
|
237
|
-
</li>
|
238
|
-
<li id="link_#{@cnn.id}" class="depth-2 last">
|
239
|
-
<a href="http://www.cnn.com" target="_blank">CNN</a>
|
240
|
-
</li>
|
241
|
-
</ul>
|
242
|
-
</li>
|
243
|
-
</ul>
|
244
|
-
</div>
|
245
|
-
HTML
|
246
105
|
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
106
|
+
expected = [
|
107
|
+
{ :id => "section_#{@news.id}", :url => "/press_releases", :name => "News", :children => [
|
108
|
+
{ :id => "page_#{@press_releases.id}", :selected => true, :url => "/press_releases", :name => "Press Releases" },
|
109
|
+
{ :id => "link_#{@corporate_news.id}", :url => "/news", :name => "Corporate News" },
|
110
|
+
{ :id => "link_#{@cnn.id}", :url => "http://www.cnn.com", :target => "_blank", :name => "CNN" }
|
111
|
+
] }
|
112
|
+
]
|
251
113
|
|
252
|
-
|
253
|
-
|
114
|
+
@page = @press_releases
|
115
|
+
assert_equal expected, menu_items
|
116
|
+
assert_equal [], menu_items(:from_top => 42)
|
254
117
|
end
|
255
|
-
|
118
|
+
|
256
119
|
def test_render_menu_does_not_show_unpublished_pages
|
257
120
|
@section = Factory(:section, :name => "Test", :path => "/test")
|
258
121
|
@page = Factory(:page, :section => @section, :name => "Overview", :path => "/test", :publish_on_save => true)
|
@@ -260,11 +123,13 @@ HTML
|
|
260
123
|
@draft_page = Factory(:page, :section => @section, :name => "Draft v1", :path => "/draft", :publish_on_save => true)
|
261
124
|
@draft_page.update_attributes(:name => "Draft v2")
|
262
125
|
@never_published = Factory(:page, :section => @section, :name => "Never Published", :path => "/never_published")
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
126
|
+
|
127
|
+
expected = [
|
128
|
+
{ :id => "page_#{@page.id}", :name => "Overview", :url => "/test", :selected => true },
|
129
|
+
{ :id => "page_#{@draft_page.id}", :name => "Draft v1", :url => "/draft" }
|
130
|
+
]
|
131
|
+
|
132
|
+
assert_equal expected, menu_items(:from_top => 1)
|
268
133
|
end
|
269
134
|
|
270
135
|
def test_render_menu_with_path
|
@@ -274,48 +139,23 @@ HTML
|
|
274
139
|
@contact_us = Factory(:page, :section => @footer, :name => "Contact Us", :path => "/contact_us", :publish_on_save => true)
|
275
140
|
@privacy_policy = Factory(:page, :section => @footer, :name => "Privacy Policy", :path => "/privacy_policy", :publish_on_save => true)
|
276
141
|
|
277
|
-
expected =
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
<a href="/contact_us">Contact Us</a>
|
285
|
-
</li>
|
286
|
-
<li id="page_#{@privacy_policy.id}" class="depth-1 last">
|
287
|
-
<a href="/privacy_policy">Privacy Policy</a>
|
288
|
-
</li>
|
289
|
-
</ul>
|
290
|
-
</div>
|
291
|
-
HTML
|
292
|
-
|
293
|
-
#puts "Expected:\n#{expected}"
|
294
|
-
actual = render_menu(:page => @test, :path => "/footer", :from_top => 1)
|
295
|
-
#puts "Actual:\n#{actual}"
|
142
|
+
expected = [
|
143
|
+
{ :id => "page_#{@about_us.id}", :url => "/about_us", :name => "About Us" },
|
144
|
+
{ :id => "page_#{@contact_us.id}", :url => "/contact_us", :name => "Contact Us" },
|
145
|
+
{ :id => "page_#{@privacy_policy.id}", :url => "/privacy_policy", :name => "Privacy Policy" }
|
146
|
+
]
|
147
|
+
|
148
|
+
actual = menu_items(:page => @test, :path => "/footer", :from_top => 1)
|
296
149
|
assert_equal expected, actual
|
297
150
|
|
298
|
-
expected =
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
</li>
|
304
|
-
<li id="page_#{@contact_us.id}" class="depth-1 on">
|
305
|
-
<a href="/contact_us">Contact Us</a>
|
306
|
-
</li>
|
307
|
-
<li id="page_#{@privacy_policy.id}" class="depth-1 last">
|
308
|
-
<a href="/privacy_policy">Privacy Policy</a>
|
309
|
-
</li>
|
310
|
-
</ul>
|
311
|
-
</div>
|
312
|
-
HTML
|
313
|
-
|
314
|
-
#puts "Expected:\n#{expected}"
|
315
|
-
actual = render_menu(:page => @contact_us, :path => "/footer", :from_top => 1)
|
316
|
-
#puts "Actual:\n#{actual}"
|
317
|
-
assert_equal expected, actual
|
151
|
+
expected = [
|
152
|
+
{ :id => "page_#{@about_us.id}", :url => "/about_us", :name => "About Us" },
|
153
|
+
{ :id => "page_#{@contact_us.id}", :url => "/contact_us", :name => "Contact Us", :selected => true },
|
154
|
+
{ :id => "page_#{@privacy_policy.id}", :url => "/privacy_policy", :name => "Privacy Policy" }
|
155
|
+
]
|
318
156
|
|
157
|
+
actual = menu_items(:page => @contact_us, :path => "/footer", :from_top => 1)
|
158
|
+
assert_equal expected, actual
|
319
159
|
end
|
320
160
|
|
321
161
|
protected
|
@@ -374,4 +214,4 @@ HTML
|
|
374
214
|
|
375
215
|
end
|
376
216
|
|
377
|
-
end
|
217
|
+
end
|