jakewendt-pages 0.1.2
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.
- data/README.rdoc +55 -0
- data/app/controllers/locales_controller.rb +15 -0
- data/app/controllers/pages_controller.rb +138 -0
- data/app/models/page.rb +99 -0
- data/app/models/page_sweeper.rb +74 -0
- data/app/views/pages/_child.html.erb +23 -0
- data/app/views/pages/_form.html.erb +44 -0
- data/app/views/pages/_page.html.erb +35 -0
- data/app/views/pages/edit.html.erb +9 -0
- data/app/views/pages/index.html.erb +28 -0
- data/app/views/pages/new.html.erb +9 -0
- data/app/views/pages/show.html.erb +29 -0
- data/app/views/pages/translate.js.erb +42 -0
- data/config/routes.rb +9 -0
- data/generators/pages/USAGE +0 -0
- data/generators/pages/pages_generator.rb +66 -0
- data/generators/pages/templates/functional/locales_controller_test.rb +59 -0
- data/generators/pages/templates/functional/pages_controller_test.rb +248 -0
- data/generators/pages/templates/images/drag.gif +0 -0
- data/generators/pages/templates/javascripts/pages.js +39 -0
- data/generators/pages/templates/migrations/create_pages.rb +26 -0
- data/generators/pages/templates/stylesheets/page.css +17 -0
- data/generators/pages/templates/stylesheets/pages.css +22 -0
- data/generators/pages/templates/unit/page_test.rb +185 -0
- data/generators/pages/templates/unit/redcloth_extension_test.rb +64 -0
- data/lib/pages.rb +42 -0
- data/lib/pages/factories.rb +6 -0
- data/lib/pages/pending.rb +72 -0
- data/lib/pages/redcloth/formatters/html.rb +23 -0
- data/lib/pages/tasks.rb +1 -0
- metadata +349 -0
@@ -0,0 +1,35 @@
|
|
1
|
+
<% content_tag_for( :tr, page, :class => 'row' ) do %>
|
2
|
+
<td><%= hidden_field_tag( 'pages[]', page.id, :id => nil ) %>
|
3
|
+
<%= image_tag 'drag.gif', :class => 'handle' %></td>
|
4
|
+
<td class='position'><%= page.position -%></td>
|
5
|
+
|
6
|
+
|
7
|
+
<td><table><tbody><tr>
|
8
|
+
<td class='path'>
|
9
|
+
<%= link_to page.path,
|
10
|
+
ActionController::Base.relative_url_root.to_s + page.path -%>
|
11
|
+
</td>
|
12
|
+
<td class='menu'>
|
13
|
+
<%= link_to page.menu(session[:locale]), page -%>
|
14
|
+
</td>
|
15
|
+
<td class='title'>
|
16
|
+
<%= link_to page.title(session[:locale]), page -%>
|
17
|
+
</td>
|
18
|
+
<td class='manage'>
|
19
|
+
<% if page.children.length > 1 %>
|
20
|
+
<%= link_to "Order", pages_path(:parent_id => page.id) -%>
|
21
|
+
<% end %>
|
22
|
+
<%= link_to "Edit", edit_page_path(page) -%>
|
23
|
+
<%= link_to "Destroy", page_path(page),
|
24
|
+
:confirm => "Delete '#{page.title(session[:locale])}'?\nAre you sure?",
|
25
|
+
:method => :delete -%>
|
26
|
+
<%#= destroy_link_to "Destroy", page_path(page) -%>
|
27
|
+
</td>
|
28
|
+
</tr>
|
29
|
+
|
30
|
+
<% if page.children.length > 0 %>
|
31
|
+
<%= render :partial => 'child', :collection => page.children %>
|
32
|
+
<% end %>
|
33
|
+
|
34
|
+
</tbody></table></td>
|
35
|
+
<% end %><!-- class='page' -->
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<% javascripts('pages') %>
|
2
|
+
<% stylesheets('pages') %>
|
3
|
+
|
4
|
+
<h4>Pages:</h4>
|
5
|
+
<% form_tag(order_pages_path, :method => :post, :id => 'order_pages') do -%>
|
6
|
+
<%= hidden_field_tag :parent_id, params[:parent_id] %>
|
7
|
+
<% unless @pages.empty? %>
|
8
|
+
<table id='pages'><tbody>
|
9
|
+
<%= render :partial => 'page', :collection => @pages %>
|
10
|
+
</tbody></table><!-- id='pages' -->
|
11
|
+
<% else %>
|
12
|
+
Sorry, no pages yet.
|
13
|
+
<% end %>
|
14
|
+
|
15
|
+
<p>
|
16
|
+
<%= link_to "Create new page",
|
17
|
+
new_page_path(:parent_id => params[:parent_id]) -%>
|
18
|
+
<%= submit_tag 'Save page order', :name => nil, :id => 'save_order' %>
|
19
|
+
</p>
|
20
|
+
|
21
|
+
<% end %>
|
22
|
+
<p>
|
23
|
+
The page model is used as a Content Management System
|
24
|
+
and for menu control. Some routes are not available
|
25
|
+
because the application is using them, but in order to
|
26
|
+
have the menu function, a "fake page" is created as a
|
27
|
+
placeholder. The staff functionality is an example.
|
28
|
+
</p>
|
@@ -0,0 +1,29 @@
|
|
1
|
+
<% if @page -%>
|
2
|
+
<% content_for :head do -%>
|
3
|
+
<% javascript_tag do -%>
|
4
|
+
if ( typeof(translatables) == 'undefined' ){
|
5
|
+
var translatables = [];
|
6
|
+
}
|
7
|
+
tmp = { tag: '#page', locales: {} };
|
8
|
+
<% %w( en es ).each do |locale| -%>
|
9
|
+
tmp.locales["<%=locale%>"]="<%=URI.encode(sanitize(textilize(@page.body(locale))))-%>"
|
10
|
+
<% end -%>
|
11
|
+
translatables.push(tmp);
|
12
|
+
|
13
|
+
tmp = { tag: 'title', locales: {} };
|
14
|
+
<% %w( en es ).each do |locale| -%>
|
15
|
+
tmp.locales["<%=locale%>"]="<%=URI.encode(@page.title(locale))-%>"
|
16
|
+
<% end -%>
|
17
|
+
translatables.push(tmp);
|
18
|
+
|
19
|
+
tmp = { tag: '#current_root', locales: {} };
|
20
|
+
<% %w( en es ).each do |locale| -%>
|
21
|
+
tmp.locales["<%=locale%>"]="<%=URI.encode(@page.menu(locale))-%>"
|
22
|
+
<% end -%>
|
23
|
+
translatables.push(tmp);
|
24
|
+
<% end ; end ; end -%>
|
25
|
+
<div id='page'>
|
26
|
+
<%# if @page -%>
|
27
|
+
<%#= sanitize(textilize(@page.body(session[:locale]))) -%>
|
28
|
+
<%# end -%>
|
29
|
+
</div>
|
@@ -0,0 +1,42 @@
|
|
1
|
+
jQuery(function(){
|
2
|
+
|
3
|
+
locale = '<%=session[:locale] || 'en'%>'
|
4
|
+
|
5
|
+
set_locale_link = function(l){
|
6
|
+
if( l == 'es' ){
|
7
|
+
locale_link = '<%=link_to( 'English',
|
8
|
+
locale_path('en'),
|
9
|
+
:id => 'session_locale' )-%>'
|
10
|
+
}else{
|
11
|
+
locale_link = '<%=link_to( 'Español',
|
12
|
+
locale_path('es'),
|
13
|
+
:id => 'session_locale' )-%>'
|
14
|
+
}
|
15
|
+
|
16
|
+
jQuery('#session_locale').replaceWith(locale_link);
|
17
|
+
|
18
|
+
jQuery('#session_locale').click(function(){
|
19
|
+
jQuery.getScript(this.href, function(){
|
20
|
+
translate(locale);
|
21
|
+
set_locale_link(locale);
|
22
|
+
});
|
23
|
+
return false;
|
24
|
+
});
|
25
|
+
}
|
26
|
+
set_locale_link(locale);
|
27
|
+
|
28
|
+
translate = function(l){
|
29
|
+
if( typeof(translatables) != 'undefined' ){
|
30
|
+
jQuery.each(translatables, function(index,value){
|
31
|
+
/*
|
32
|
+
jQuery(value.tag).html(decodeURI(value.locales[l]));
|
33
|
+
decodeURI mucked up decoding Entities
|
34
|
+
*/
|
35
|
+
jQuery(value.tag).html(decodeURIComponent(value.locales[l]));
|
36
|
+
jQuery(value.tag).fadeIn('slow'); /* pointless */
|
37
|
+
})
|
38
|
+
}
|
39
|
+
};
|
40
|
+
translate(locale);
|
41
|
+
|
42
|
+
});
|
data/config/routes.rb
ADDED
File without changes
|
@@ -0,0 +1,66 @@
|
|
1
|
+
class PagesGenerator < Rails::Generator::Base
|
2
|
+
|
3
|
+
def manifest
|
4
|
+
# See Rails::Generator::Commands::Create
|
5
|
+
# rails-2.3.10/lib/rails_generator/commands.rb
|
6
|
+
# for code methods for record (Manifest)
|
7
|
+
record do |m|
|
8
|
+
|
9
|
+
%w( create_pages ).each do |migration|
|
10
|
+
m.migration_template "migrations/#{migration}.rb",
|
11
|
+
'db/migrate', :migration_file_name => migration
|
12
|
+
end
|
13
|
+
|
14
|
+
m.directory('public/javascripts')
|
15
|
+
Dir["#{File.dirname(__FILE__)}/templates/javascripts/*js"].each{|file|
|
16
|
+
f = file.split('/').slice(-2,2).join('/')
|
17
|
+
m.file(f, "public/javascripts/#{File.basename(file)}")
|
18
|
+
}
|
19
|
+
m.directory('public/stylesheets')
|
20
|
+
Dir["#{File.dirname(__FILE__)}/templates/stylesheets/*css"].each{|file|
|
21
|
+
f = file.split('/').slice(-2,2).join('/')
|
22
|
+
m.file(f, "public/stylesheets/#{File.basename(file)}")
|
23
|
+
}
|
24
|
+
m.directory('test/functional/pages')
|
25
|
+
Dir["#{File.dirname(__FILE__)}/templates/functional/*rb"].each{|file|
|
26
|
+
f = file.split('/').slice(-2,2).join('/')
|
27
|
+
m.file(f, "test/functional/pages/#{File.basename(file)}")
|
28
|
+
}
|
29
|
+
m.directory('test/unit/pages')
|
30
|
+
Dir["#{File.dirname(__FILE__)}/templates/unit/*rb"].each{|file|
|
31
|
+
f = file.split('/').slice(-2,2).join('/')
|
32
|
+
m.file(f, "test/unit/pages/#{File.basename(file)}")
|
33
|
+
}
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
module Rails::Generator::Commands
|
39
|
+
class Create
|
40
|
+
def migration_template(relative_source,
|
41
|
+
relative_destination, template_options = {})
|
42
|
+
migration_directory relative_destination
|
43
|
+
migration_file_name = template_options[
|
44
|
+
:migration_file_name] || file_name
|
45
|
+
if migration_exists?(migration_file_name)
|
46
|
+
puts "Another migration is already named #{migration_file_name}: #{existing_migrations(migration_file_name).first}: Skipping"
|
47
|
+
else
|
48
|
+
template(relative_source, "#{relative_destination}/#{next_migration_string}_#{migration_file_name}.rb", template_options)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end # Create
|
52
|
+
class Base
|
53
|
+
protected
|
54
|
+
# the loop through migrations happens so fast
|
55
|
+
# that they all have the same timestamp which
|
56
|
+
# won't work when you actually try to migrate.
|
57
|
+
# All the timestamps MUST be unique.
|
58
|
+
def next_migration_string(padding = 3)
|
59
|
+
@s = (!@s.nil?)? @s.to_i + 1 : if ActiveRecord::Base.timestamped_migrations
|
60
|
+
Time.now.utc.strftime("%Y%m%d%H%M%S")
|
61
|
+
else
|
62
|
+
"%.#{padding}d" % next_migration_number
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end # Base
|
66
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../test_helper'
|
2
|
+
|
3
|
+
class Pages::LocalesControllerTest < ActionController::TestCase
|
4
|
+
tests LocalesController
|
5
|
+
|
6
|
+
test "should set locale to en" do
|
7
|
+
assert_nil session[:locale]
|
8
|
+
get :show, :id => 'en'
|
9
|
+
assert_equal 'en', session[:locale]
|
10
|
+
assert_response :redirect
|
11
|
+
end
|
12
|
+
|
13
|
+
test "should change locale to es" do
|
14
|
+
assert_nil session[:locale]
|
15
|
+
session[:locale] = 'en'
|
16
|
+
assert_equal 'en', session[:locale]
|
17
|
+
get :show, :id => 'es'
|
18
|
+
assert_equal 'es', session[:locale]
|
19
|
+
assert_response :redirect
|
20
|
+
end
|
21
|
+
|
22
|
+
test "should change locale to en" do
|
23
|
+
assert_nil session[:locale]
|
24
|
+
session[:locale] = 'es'
|
25
|
+
assert_equal 'es', session[:locale]
|
26
|
+
get :show, :id => 'en'
|
27
|
+
assert_equal 'en', session[:locale]
|
28
|
+
assert_response :redirect
|
29
|
+
end
|
30
|
+
|
31
|
+
test "should set locale to en via js" do
|
32
|
+
@request.accept = "text/javascript"
|
33
|
+
assert_nil session[:locale]
|
34
|
+
get :show, :id => 'en'
|
35
|
+
assert_equal 'en', session[:locale]
|
36
|
+
assert_response :success
|
37
|
+
end
|
38
|
+
|
39
|
+
test "should change locale to es via js" do
|
40
|
+
@request.accept = "text/javascript"
|
41
|
+
assert_nil session[:locale]
|
42
|
+
session[:locale] = 'en'
|
43
|
+
assert_equal 'en', session[:locale]
|
44
|
+
get :show, :id => 'es'
|
45
|
+
assert_equal 'es', session[:locale]
|
46
|
+
assert_response :success
|
47
|
+
end
|
48
|
+
|
49
|
+
test "should change locale to en via js" do
|
50
|
+
@request.accept = "text/javascript"
|
51
|
+
assert_nil session[:locale]
|
52
|
+
session[:locale] = 'es'
|
53
|
+
assert_equal 'es', session[:locale]
|
54
|
+
get :show, :id => 'en'
|
55
|
+
assert_equal 'en', session[:locale]
|
56
|
+
assert_response :success
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
@@ -0,0 +1,248 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../test_helper'
|
2
|
+
|
3
|
+
class Pages::PagesControllerTest < ActionController::TestCase
|
4
|
+
tests PagesController
|
5
|
+
|
6
|
+
ASSERT_ACCESS_OPTIONS = {
|
7
|
+
:model => 'Page',
|
8
|
+
:actions => [:new,:create,:edit,:update,:destroy,:index],
|
9
|
+
:method_for_create => :factory_create,
|
10
|
+
:attributes_for_create => :factory_attributes
|
11
|
+
}
|
12
|
+
|
13
|
+
def factory_create(options={})
|
14
|
+
Factory(:page,options)
|
15
|
+
end
|
16
|
+
def factory_attributes(options={})
|
17
|
+
Factory.attributes_for(:page,options)
|
18
|
+
end
|
19
|
+
|
20
|
+
assert_access_with_http :show, { :actions => nil }
|
21
|
+
assert_access_with_https :show
|
22
|
+
assert_no_access_with_http
|
23
|
+
|
24
|
+
assert_access_with_login(:show,{
|
25
|
+
:logins => [:super_user,:admin,:editor]})
|
26
|
+
assert_access_with_login(:show,{
|
27
|
+
:logins => [:interviewer,:reader,:active_user], :actions => nil})
|
28
|
+
assert_access_without_login( :show, { :actions => nil })
|
29
|
+
assert_no_access_with_login({
|
30
|
+
:logins => [:interviewer,:reader,:active_user] })
|
31
|
+
assert_no_access_without_login
|
32
|
+
|
33
|
+
assert_no_access_with_login(
|
34
|
+
:attributes_for_create => nil,
|
35
|
+
:method_for_create => nil,
|
36
|
+
:actions => nil,
|
37
|
+
:suffix => " and invalid id",
|
38
|
+
:login => :super_user,
|
39
|
+
:redirect => :pages_path,
|
40
|
+
:edit => { :id => 0 },
|
41
|
+
:update => { :id => 0 },
|
42
|
+
:destroy => { :id => 0 }
|
43
|
+
)
|
44
|
+
|
45
|
+
|
46
|
+
%w( super_user admin editor ).each do |cu|
|
47
|
+
#
|
48
|
+
# index/new/create/edit/update/destroy
|
49
|
+
# should only be visible to admins for editing
|
50
|
+
#
|
51
|
+
|
52
|
+
test "should get index with pages with #{cu} login" do
|
53
|
+
3.times{ factory_create }
|
54
|
+
login_as send(cu)
|
55
|
+
get :index
|
56
|
+
assert_template 'index'
|
57
|
+
assert_response :success
|
58
|
+
assert_not_nil assigns(:pages)
|
59
|
+
assigns(:pages).each { |page| assert_nil page.parent }
|
60
|
+
end
|
61
|
+
|
62
|
+
test "should get index with blank parent with #{cu} login" do
|
63
|
+
3.times{ factory_create }
|
64
|
+
login_as send(cu)
|
65
|
+
get :index, :parent_id => ''
|
66
|
+
assert_template 'index'
|
67
|
+
assert_response :success
|
68
|
+
assert_not_nil assigns(:pages)
|
69
|
+
assigns(:pages).each { |page| assert_nil page.parent }
|
70
|
+
end
|
71
|
+
|
72
|
+
test "should get index with subpages with #{cu} login" do
|
73
|
+
parent = factory_create
|
74
|
+
3.times{ factory_create(:parent_id => parent.id) }
|
75
|
+
login_as send(cu)
|
76
|
+
get :index, :parent_id => parent.id
|
77
|
+
assert_template 'index'
|
78
|
+
assert_response :success
|
79
|
+
assert_not_nil assigns(:pages)
|
80
|
+
assigns(:pages).each do |page|
|
81
|
+
assert_equal page.parent_id, parent.id
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
test "should create page with parent with #{cu} login" do
|
86
|
+
parent = factory_create
|
87
|
+
login_as send(cu)
|
88
|
+
assert_difference('Page.count') do
|
89
|
+
post :create, :page => factory_attributes(
|
90
|
+
:parent_id => parent.id)
|
91
|
+
end
|
92
|
+
assert_equal parent, assigns(:page).parent
|
93
|
+
assert_redirected_to page_path(assigns(:page))
|
94
|
+
end
|
95
|
+
|
96
|
+
test "should NOT create page with invalid page with #{cu} login" do
|
97
|
+
login_as send(cu)
|
98
|
+
assert_no_difference('Page.count') do
|
99
|
+
post :create, :page => {}
|
100
|
+
end
|
101
|
+
assert_template 'new'
|
102
|
+
assert_response :success
|
103
|
+
end
|
104
|
+
|
105
|
+
test "should NOT update page with invalid page with #{cu} login" do
|
106
|
+
login_as send(cu)
|
107
|
+
put :update, :id => factory_create.id,
|
108
|
+
:page => { :title => "a" }
|
109
|
+
assert_not_nil flash[:error]
|
110
|
+
assert_template 'edit'
|
111
|
+
assert_response :success
|
112
|
+
end
|
113
|
+
|
114
|
+
# I don't think that this is pertinant anymore
|
115
|
+
test "should get index with both help and non-help pages with #{cu} login" do
|
116
|
+
# test css menus
|
117
|
+
login_as send(cu)
|
118
|
+
nonhelp_page = factory_create(:path => "/hello" )
|
119
|
+
help_page = factory_create(:path => "/help/test" )
|
120
|
+
get :index
|
121
|
+
assert_response :success
|
122
|
+
assert_template 'index'
|
123
|
+
end
|
124
|
+
|
125
|
+
# action: order
|
126
|
+
|
127
|
+
test "should order pages with #{cu} login" do
|
128
|
+
login_as send(cu)
|
129
|
+
# pages = 3.times.collect{|i| factory_create }
|
130
|
+
# 3.times.collect doesn't work on
|
131
|
+
#> ruby --version
|
132
|
+
#ruby 1.8.6 (2008-08-11 patchlevel 287) [universal-darwin9.0]
|
133
|
+
pages = []
|
134
|
+
3.times{ pages.push(factory_create) }
|
135
|
+
before_page_ids = Page.all.collect(&:id)
|
136
|
+
post :order, :pages => before_page_ids.reverse
|
137
|
+
after_page_ids = Page.all.collect(&:id)
|
138
|
+
assert_equal after_page_ids, before_page_ids.reverse
|
139
|
+
assert_redirected_to pages_path
|
140
|
+
end
|
141
|
+
|
142
|
+
test "should order sub pages with #{cu} login" do
|
143
|
+
login_as send(cu)
|
144
|
+
parent = factory_create
|
145
|
+
pages = []
|
146
|
+
3.times{ pages.push(factory_create(:parent_id => parent.id)) }
|
147
|
+
assert_equal [1,2,3], pages.collect(&:position)
|
148
|
+
before_page_ids = parent.reload.children.collect(&:id)
|
149
|
+
post :order,:parent_id => parent.id, :pages => before_page_ids.reverse
|
150
|
+
after_page_ids = parent.reload.children.collect(&:id)
|
151
|
+
assert_equal after_page_ids, before_page_ids.reverse
|
152
|
+
assert_redirected_to pages_path(:parent_id => parent.id)
|
153
|
+
end
|
154
|
+
|
155
|
+
end
|
156
|
+
|
157
|
+
%w( interviewer reader active_user ).each do |cu|
|
158
|
+
|
159
|
+
test "should NOT order pages with #{cu} login" do
|
160
|
+
login_as send(cu)
|
161
|
+
pages = []
|
162
|
+
3.times{ pages.push(factory_create) }
|
163
|
+
before_page_ids = Page.all.collect(&:id)
|
164
|
+
post :order, :pages => before_page_ids.reverse
|
165
|
+
assert_not_nil flash[:error]
|
166
|
+
assert_redirected_to root_path
|
167
|
+
end
|
168
|
+
|
169
|
+
end
|
170
|
+
|
171
|
+
test "should NOT order pages without login" do
|
172
|
+
pages = []
|
173
|
+
3.times{ pages.push(factory_create) }
|
174
|
+
before_page_ids = Page.all.collect(&:id)
|
175
|
+
post :order, :pages => before_page_ids.reverse
|
176
|
+
assert_redirected_to_login
|
177
|
+
end
|
178
|
+
|
179
|
+
#
|
180
|
+
# /pages/:id should be visible to anyone ?
|
181
|
+
#
|
182
|
+
# as the pages controller uses the gateway filter, not being logged in currently
|
183
|
+
# requires the addition of the line ...
|
184
|
+
# CASClient::Frameworks::Rails::GatewayFilter.stubs(:filter).returns(false)
|
185
|
+
#
|
186
|
+
|
187
|
+
test "should NOT show page with invalid id" do
|
188
|
+
get :show, :id => 0
|
189
|
+
assert_not_nil flash[:error]
|
190
|
+
assert_template 'show'
|
191
|
+
assert_response :success
|
192
|
+
end
|
193
|
+
|
194
|
+
test "should NOT show page without matching path" do
|
195
|
+
get :show, :path => "/i/do/not/exist".split('/').delete_if{|x|x.blank?}
|
196
|
+
assert_not_nil flash[:error]
|
197
|
+
assert_template 'show'
|
198
|
+
assert_response :success
|
199
|
+
end
|
200
|
+
|
201
|
+
test "should show page by path" do
|
202
|
+
page = factory_create
|
203
|
+
get :show, :path => page.path.split('/').delete_if{|x|x.blank?}
|
204
|
+
assert_equal assigns(:page), page
|
205
|
+
assert_template 'show'
|
206
|
+
assert_response :success
|
207
|
+
assert_select 'title', page.title
|
208
|
+
end
|
209
|
+
|
210
|
+
test "should show page by path with slashes" do
|
211
|
+
page = factory_create(:path => "/help/blogs")
|
212
|
+
get :show, :path => page.path.split('/').delete_if{|x|x.blank?}
|
213
|
+
assert_equal assigns(:page), page
|
214
|
+
assert_template 'show'
|
215
|
+
assert_response :success
|
216
|
+
assert_select 'title', page.title
|
217
|
+
end
|
218
|
+
|
219
|
+
test "should show HOME page without HPP" do
|
220
|
+
page = Page.by_path('/')
|
221
|
+
get :show, :id => page.id
|
222
|
+
assert_nil assigns(:hpp)
|
223
|
+
assert_template 'show'
|
224
|
+
assert_response :success
|
225
|
+
assert_select 'title', page.title
|
226
|
+
end
|
227
|
+
|
228
|
+
test "should get translate via js without login" do
|
229
|
+
@request.accept = "text/javascript"
|
230
|
+
get :translate
|
231
|
+
assert_response :success
|
232
|
+
assert_match /jQuery/, @response.body
|
233
|
+
end
|
234
|
+
|
235
|
+
test "should get each page in fixtures in each locale" do
|
236
|
+
puts
|
237
|
+
Page.all.each do |page|
|
238
|
+
[ nil,'en','es' ].each do |locale|
|
239
|
+
puts "- Showing page id #{page.id} with locale #{locale}"
|
240
|
+
session[:locale] = locale
|
241
|
+
get :show, :id => page.id
|
242
|
+
assert_response :success
|
243
|
+
assert_template 'show'
|
244
|
+
end
|
245
|
+
end
|
246
|
+
end
|
247
|
+
|
248
|
+
end
|