radiant 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of radiant might be problematic. Click here for more details.
- data/CHANGELOG +1 -0
- data/CONTRIBUTORS +12 -0
- data/LICENSE +9 -0
- data/README +91 -0
- data/Rakefile +10 -0
- data/app/behaviors/archive_behavior.rb +42 -0
- data/app/behaviors/archive_day_index_behavior.rb +30 -0
- data/app/behaviors/archive_month_index_behavior.rb +30 -0
- data/app/behaviors/archive_year_index_behavior.rb +30 -0
- data/app/behaviors/env_behavior.rb +18 -0
- data/app/behaviors/page_missing_behavior.rb +31 -0
- data/app/controllers/admin/export_controller.rb +8 -0
- data/app/controllers/admin/layout_controller.rb +23 -0
- data/app/controllers/admin/model_controller.rb +119 -0
- data/app/controllers/admin/page_controller.rb +119 -0
- data/app/controllers/admin/snippet_controller.rb +6 -0
- data/app/controllers/admin/user_controller.rb +45 -0
- data/app/controllers/admin/welcome_controller.rb +39 -0
- data/app/controllers/application.rb +32 -0
- data/app/controllers/site_controller.rb +54 -0
- data/app/filters/markdown_filter.rb +9 -0
- data/app/filters/textile_filter.rb +9 -0
- data/app/helpers/admin/export_helper.rb +2 -0
- data/app/helpers/admin/layout_helper.rb +2 -0
- data/app/helpers/admin/page_helper.rb +10 -0
- data/app/helpers/admin/snippet_helper.rb +2 -0
- data/app/helpers/admin/user_helper.rb +2 -0
- data/app/helpers/admin/welcome_helper.rb +2 -0
- data/app/helpers/application_helper.rb +141 -0
- data/app/helpers/site_helper.rb +2 -0
- data/app/models/archive_finder.rb +66 -0
- data/app/models/behavior.rb +194 -0
- data/app/models/layout.rb +13 -0
- data/app/models/page.rb +91 -0
- data/app/models/page_context.rb +526 -0
- data/app/models/page_part.rb +13 -0
- data/app/models/radiant/config.rb +53 -0
- data/app/models/radiant/exporter.rb +11 -0
- data/app/models/response_cache.rb +112 -0
- data/app/models/snippet.rb +16 -0
- data/app/models/status.rb +31 -0
- data/app/models/text_filter.rb +11 -0
- data/app/models/user.rb +70 -0
- data/app/models/user_action_observer.rb +13 -0
- data/app/views/admin/layout/index.rhtml +38 -0
- data/app/views/admin/layout/new.rhtml +37 -0
- data/app/views/admin/layout/remove.rhtml +17 -0
- data/app/views/admin/page/_node.rhtml +51 -0
- data/app/views/admin/page/_part.rhtml +17 -0
- data/app/views/admin/page/children.rhtml +4 -0
- data/app/views/admin/page/index.rhtml +172 -0
- data/app/views/admin/page/new.rhtml +164 -0
- data/app/views/admin/page/remove.rhtml +14 -0
- data/app/views/admin/snippet/index.rhtml +36 -0
- data/app/views/admin/snippet/new.rhtml +28 -0
- data/app/views/admin/snippet/remove.rhtml +16 -0
- data/app/views/admin/user/index.rhtml +43 -0
- data/app/views/admin/user/new.rhtml +48 -0
- data/app/views/admin/user/preferences.rhtml +29 -0
- data/app/views/admin/user/remove.rhtml +16 -0
- data/app/views/admin/welcome/login.rhtml +51 -0
- data/app/views/layouts/application.rhtml +75 -0
- data/app/views/site/not_found.rhtml +3 -0
- data/bin/radiant +305 -0
- data/config/boot.rb +80 -0
- data/config/database.mysql.yml +20 -0
- data/config/database.postgresql.yml +20 -0
- data/config/database.sqlite.yml +20 -0
- data/config/environment.rb +76 -0
- data/config/environments/development.rb +20 -0
- data/config/environments/production.rb +22 -0
- data/config/environments/test.rb +20 -0
- data/config/locomotive.yml +6 -0
- data/config/routes.rb +64 -0
- data/db/development_structure.sql +80 -0
- data/db/migrate/001_create_radiant_tables.rb +73 -0
- data/db/migrate/002_insert_initial_data.rb +45 -0
- data/db/migrate/003_rename_behavior_column.rb +9 -0
- data/db/migrate/004_rename_filter_column.rb +11 -0
- data/db/migrate/005_add_virtual_column_to_page.rb +9 -0
- data/db/migrate/006_integer_columns_to_boolean.rb +11 -0
- data/db/migrate/007_remove_virtual_column_from_page.rb +9 -0
- data/db/migrate/008_add_virtual_column_to_page_again.rb +9 -0
- data/db/migrate/009_add_content_type_field_to_layout.rb +9 -0
- data/db/schema.rb +74 -0
- data/db/templates/empty.yml +2 -0
- data/db/templates/simple-blog.yml +197 -0
- data/db/templates/styled-blog.yml +472 -0
- data/lib/advanced_delegation.rb +21 -0
- data/lib/archive_index_behavior_tags_and_methods.rb +48 -0
- data/lib/generators/behavior/USAGE +16 -0
- data/lib/generators/behavior/behavior_generator.rb +22 -0
- data/lib/generators/behavior/templates/model.rb.template +9 -0
- data/lib/generators/behavior/templates/unit_test.rb.template +16 -0
- data/lib/generators/filter/USAGE +16 -0
- data/lib/generators/filter/filter_generator.rb +22 -0
- data/lib/generators/filter/templates/model.rb.template +8 -0
- data/lib/generators/filter/templates/unit_test.rb.template +7 -0
- data/lib/inheritable_class_attributes.rb +65 -0
- data/lib/login_system.rb +80 -0
- data/lib/plugins/index_quoting_fix/init.rb +32 -0
- data/lib/plugins/string_io/init.rb +2 -0
- data/lib/radiant.rb +5 -0
- data/lib/registerable.rb +70 -0
- data/lib/tasks/release.rake +84 -0
- data/public/404.html +8 -0
- data/public/500.html +8 -0
- data/public/dispatch.cgi +10 -0
- data/public/dispatch.fcgi +24 -0
- data/public/dispatch.rb +10 -0
- data/public/favicon.ico +0 -0
- data/public/images/add-child.png +0 -0
- data/public/images/brown-bottom-line.gif +0 -0
- data/public/images/clear-page-cache.png +0 -0
- data/public/images/collapse.png +0 -0
- data/public/images/expand.png +0 -0
- data/public/images/minus.png +0 -0
- data/public/images/new-homepage.png +0 -0
- data/public/images/new-layout.png +0 -0
- data/public/images/new-snippet.png +0 -0
- data/public/images/new-user.png +0 -0
- data/public/images/page.png +0 -0
- data/public/images/plus.png +0 -0
- data/public/images/remove-disabled.png +0 -0
- data/public/images/remove.png +0 -0
- data/public/images/snippet.png +0 -0
- data/public/images/spinner.gif +0 -0
- data/public/images/view-site.gif +0 -0
- data/public/images/virtual-page.png +0 -0
- data/public/javascripts/application.js +2 -0
- data/public/javascripts/controls.js +815 -0
- data/public/javascripts/dragdrop.js +913 -0
- data/public/javascripts/effects.js +958 -0
- data/public/javascripts/pngfix.js +78 -0
- data/public/javascripts/prototype.js +2006 -0
- data/public/javascripts/ruledtable.js +28 -0
- data/public/javascripts/string.js +23 -0
- data/public/javascripts/tabcontrol.js +140 -0
- data/public/robots.txt +1 -0
- data/public/stylesheets/admin.css +464 -0
- data/script/about +3 -0
- data/script/breakpointer +3 -0
- data/script/console +3 -0
- data/script/destroy +3 -0
- data/script/generate +3 -0
- data/script/performance/benchmarker +3 -0
- data/script/performance/profiler +3 -0
- data/script/plugin +3 -0
- data/script/process/reaper +3 -0
- data/script/process/spawner +3 -0
- data/script/process/spinner +3 -0
- data/script/runner +3 -0
- data/script/server +3 -0
- data/script/setup_database +297 -0
- data/test/fixtures/layouts.yml +26 -0
- data/test/fixtures/page_parts.yml +99 -0
- data/test/fixtures/pages.yml +359 -0
- data/test/fixtures/pages.yml.rej +28 -0
- data/test/fixtures/snippets.yml +18 -0
- data/test/fixtures/users.yml +30 -0
- data/test/functional/admin/export_controller_test.rb +22 -0
- data/test/functional/admin/layout_controller_test.rb +40 -0
- data/test/functional/admin/model_controller_test.rb +152 -0
- data/test/functional/admin/page_controller_test.rb +179 -0
- data/test/functional/admin/snippet_controller_test.rb +11 -0
- data/test/functional/admin/user_controller_test.rb +71 -0
- data/test/functional/admin/welcome_controller_test.rb +48 -0
- data/test/functional/application_controller_test.rb +44 -0
- data/test/functional/login_system_test.rb +155 -0
- data/test/functional/site_controller_test.rb +172 -0
- data/test/helpers/archive_index_test_helper.rb +35 -0
- data/test/helpers/behavior_render_test_helper.rb +34 -0
- data/test/helpers/behavior_test_helper.rb +47 -0
- data/test/helpers/caching_test_helper.rb +41 -0
- data/test/helpers/layout_test_helper.rb +35 -0
- data/test/helpers/page_part_test_helper.rb +49 -0
- data/test/helpers/page_test_helper.rb +36 -0
- data/test/helpers/snippet_test_helper.rb +32 -0
- data/test/helpers/user_test_helper.rb +34 -0
- data/test/helpers/validation_test_helper.rb +42 -0
- data/test/test_helper.rb +54 -0
- data/test/unit/behavior_test.rb +196 -0
- data/test/unit/behaviors/archive_behavior_test.rb +33 -0
- data/test/unit/behaviors/archive_day_index_behavior_test.rb +21 -0
- data/test/unit/behaviors/archive_month_index_behavior_test.rb +21 -0
- data/test/unit/behaviors/archive_year_index_behavior_test.rb +21 -0
- data/test/unit/behaviors/page_missing_behavior_test.rb +27 -0
- data/test/unit/filters/markdown_filter_test.rb +14 -0
- data/test/unit/filters/textile_filter_test.rb +14 -0
- data/test/unit/inheritable_class_attributes_test.rb +47 -0
- data/test/unit/layout_test.rb +29 -0
- data/test/unit/page_context_test.rb +375 -0
- data/test/unit/page_context_test.rb.rej +26 -0
- data/test/unit/page_part_test.rb +44 -0
- data/test/unit/page_test.rb +224 -0
- data/test/unit/radiant/config_test.rb +46 -0
- data/test/unit/radiant/exporter_test.rb +26 -0
- data/test/unit/registerable_test.rb +68 -0
- data/test/unit/response_cache_test.rb +133 -0
- data/test/unit/snippet_test.rb +47 -0
- data/test/unit/status_test.rb +43 -0
- data/test/unit/text_filter_test.rb +14 -0
- data/test/unit/user_action_observer_test.rb +40 -0
- data/test/unit/user_test.rb +138 -0
- metadata +355 -0
@@ -0,0 +1,40 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../test_helper'
|
2
|
+
require 'admin/layout_controller'
|
3
|
+
|
4
|
+
# Re-raise errors caught by the controller.
|
5
|
+
class Admin::LayoutController; def rescue_action(e) raise e end; end
|
6
|
+
|
7
|
+
class Admin::LayoutControllerTest < Test::Unit::TestCase
|
8
|
+
fixtures :users, :layouts
|
9
|
+
test_helper :users, :layouts
|
10
|
+
|
11
|
+
def setup
|
12
|
+
@controller = Admin::LayoutController.new
|
13
|
+
@request = ActionController::TestRequest.new
|
14
|
+
@response = ActionController::TestResponse.new
|
15
|
+
@request.session[:user] = users(:developer)
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_ancestors
|
19
|
+
assert Admin::LayoutController.ancestors.include?(Admin::AbstractModelController)
|
20
|
+
end
|
21
|
+
|
22
|
+
[:index, :new, :edit, :remove].each do |action|
|
23
|
+
define_method "test_#{action}_action_allowed_if_admin" do
|
24
|
+
get action, { :id => 1 }, { :user => users(:admin) }
|
25
|
+
assert_response :success, "action: #{action}"
|
26
|
+
end
|
27
|
+
|
28
|
+
define_method "test_#{action}_action__allowed_if_developer" do
|
29
|
+
get action, { :id => 1 }
|
30
|
+
assert_response :success, "action: #{action}"
|
31
|
+
end
|
32
|
+
|
33
|
+
define_method "test_#{action}_action__not_allowed_if_other" do
|
34
|
+
get action, { :id => 1 }, { :user => users(:existing) }, {}
|
35
|
+
assert_redirected_to page_index_url, "action: #{action}"
|
36
|
+
assert_match /privileges/, flash[:error], "action: #{action}"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
@@ -0,0 +1,152 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../test_helper'
|
2
|
+
require 'admin/model_controller'
|
3
|
+
|
4
|
+
#
|
5
|
+
# This test exercises the AbstractModelController by excercising the Layout
|
6
|
+
# model and the LayoutController views.
|
7
|
+
#
|
8
|
+
class Admin::AbstractModelControllerTest < Test::Unit::TestCase
|
9
|
+
|
10
|
+
class TestController < Admin::AbstractModelController
|
11
|
+
model :layout
|
12
|
+
|
13
|
+
def rescue_action(e) raise e end
|
14
|
+
|
15
|
+
def default_template_name(default_action_name = action_name)
|
16
|
+
"#{Admin::LayoutController.controller_path}/#{default_action_name}"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
fixtures :users, :layouts
|
21
|
+
test_helper :layouts, :caching
|
22
|
+
|
23
|
+
def setup
|
24
|
+
@controller = TestController.new
|
25
|
+
@request = ActionController::TestRequest.new
|
26
|
+
@response = ActionController::TestResponse.new
|
27
|
+
@request.session[:user] = users(:existing)
|
28
|
+
@cache = @controller.cache = FakeResponseCache.new
|
29
|
+
|
30
|
+
@layout_name = "Test Layout"
|
31
|
+
|
32
|
+
destroy_test_layout
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_initialize
|
36
|
+
@controller = TestController.new
|
37
|
+
assert_kind_of ResponseCache, @controller.cache
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_index
|
41
|
+
custom_routes do
|
42
|
+
get :index
|
43
|
+
assert_response :success
|
44
|
+
layouts = assigns(:layouts)
|
45
|
+
assert_kind_of Array, layouts
|
46
|
+
assert_kind_of Layout, layouts.first
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_new
|
51
|
+
custom_routes do
|
52
|
+
get :new, :layout => layout_params
|
53
|
+
assert_response :success
|
54
|
+
|
55
|
+
@layout = assigns(:layout)
|
56
|
+
assert_kind_of Layout, @layout
|
57
|
+
assert_nil @layout.name
|
58
|
+
end
|
59
|
+
end
|
60
|
+
def test_new__post
|
61
|
+
custom_routes do
|
62
|
+
post :new, :layout => layout_params
|
63
|
+
assert_redirected_to layout_index_url
|
64
|
+
assert_match /saved/, flash[:notice]
|
65
|
+
assert_kind_of Layout, get_test_layout
|
66
|
+
end
|
67
|
+
end
|
68
|
+
def test_new__post_with_invalid_layout
|
69
|
+
custom_routes do
|
70
|
+
post :new, :layout => layout_params(:name => nil)
|
71
|
+
assert_response :success
|
72
|
+
assert_match /error/, flash[:error]
|
73
|
+
assert_nil get_test_layout
|
74
|
+
end
|
75
|
+
end
|
76
|
+
def test_new__save_and_continue_editing
|
77
|
+
custom_routes do
|
78
|
+
post :new, :layout => layout_params, :continue => 'Save and Continue Editing'
|
79
|
+
@layout = get_test_layout
|
80
|
+
assert_redirected_to layout_edit_url(:id => @layout.id)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
def test_edit
|
85
|
+
custom_routes do
|
86
|
+
get :edit, :id => '1', :layout => layout_params
|
87
|
+
assert_response :success
|
88
|
+
assert_template 'admin/layout/new'
|
89
|
+
|
90
|
+
@layout = assigns(:layout)
|
91
|
+
assert_kind_of Layout, @layout
|
92
|
+
assert_equal 'Home Page', @layout.name
|
93
|
+
end
|
94
|
+
end
|
95
|
+
def test_edit__post
|
96
|
+
custom_routes do
|
97
|
+
@layout = create_test_layout
|
98
|
+
post :edit, :id => @layout.id, :layout => layout_params(:content => 'edited')
|
99
|
+
assert_response :redirect
|
100
|
+
assert_equal 'edited', get_test_layout.content
|
101
|
+
|
102
|
+
# To-Do: Test what happens when an invalid page is submitted
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
def test_remove
|
107
|
+
custom_routes do
|
108
|
+
@layout = create_test_layout
|
109
|
+
get :remove, :id => @layout.id
|
110
|
+
assert_response :success
|
111
|
+
assert_equal @layout, assigns(:layout)
|
112
|
+
assert_not_nil get_test_layout
|
113
|
+
end
|
114
|
+
end
|
115
|
+
def test_remove__post
|
116
|
+
custom_routes do
|
117
|
+
@layout = create_test_layout
|
118
|
+
post :remove, :id => @layout.id
|
119
|
+
assert_nil get_test_layout
|
120
|
+
assert_redirected_to layout_index_url
|
121
|
+
assert_match /deleted/, flash[:notice]
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
def test_clears_cache_on_save
|
126
|
+
custom_routes do
|
127
|
+
@layout = layouts(:main)
|
128
|
+
post :edit, :id => @layout.id, :layout => layout_params(:content => 'edited')
|
129
|
+
assert_redirected_to layout_index_url
|
130
|
+
assert_equal true, @cache.cleared?
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
def test_not_cleared_when_invalid
|
135
|
+
custom_routes do
|
136
|
+
@layout = layouts(:main)
|
137
|
+
post :edit, :id => @layout.id, :layout => layout_params(:name => 'x' * 1000)
|
138
|
+
assert_response :success
|
139
|
+
assert_equal false, @cache.cleared?
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
private
|
144
|
+
|
145
|
+
def custom_routes
|
146
|
+
with_routing do |set|
|
147
|
+
set.draw { set.connect ':controller/:action/:id' }
|
148
|
+
yield
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
end
|
@@ -0,0 +1,179 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../test_helper'
|
2
|
+
require 'admin/page_controller'
|
3
|
+
|
4
|
+
# Re-raise errors caught by the controller.
|
5
|
+
class Admin::PageController; def rescue_action(e) raise e end; end
|
6
|
+
|
7
|
+
class Admin::PageControllerTest < Test::Unit::TestCase
|
8
|
+
fixtures :users, :pages
|
9
|
+
test_helper :pages, :page_parts, :caching
|
10
|
+
|
11
|
+
def setup
|
12
|
+
@controller = Admin::PageController.new
|
13
|
+
@request = ActionController::TestRequest.new
|
14
|
+
@response = ActionController::TestResponse.new
|
15
|
+
@request.session[:user] = users(:existing)
|
16
|
+
|
17
|
+
@page_title = 'Just a Test'
|
18
|
+
|
19
|
+
destroy_test_page
|
20
|
+
destroy_test_part
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_initialize
|
24
|
+
assert_kind_of ResponseCache, @controller.cache
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_index
|
28
|
+
get :index
|
29
|
+
assert_response :success
|
30
|
+
assert_kind_of Page, assigns(:homepage)
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_new
|
34
|
+
@controller.config = { 'default.parts' => 'body, extended, summary' }
|
35
|
+
|
36
|
+
get :new, :parent_id => '1', :page => page_params
|
37
|
+
assert_response :success
|
38
|
+
|
39
|
+
@page = assigns(:page)
|
40
|
+
assert_kind_of Page, @page
|
41
|
+
assert_nil @page.title
|
42
|
+
|
43
|
+
@expected_parent = Page.find(1)
|
44
|
+
assert_equal @expected_parent, @page.parent
|
45
|
+
|
46
|
+
assert_equal 3, @page.parts.size
|
47
|
+
end
|
48
|
+
def test_new__with_slug_and_breadcrumb
|
49
|
+
get :new, :parent_id => '1', :page => page_params, :slug => 'test', :breadcrumb => 'me'
|
50
|
+
assert_response :success
|
51
|
+
|
52
|
+
@page = assigns(:page)
|
53
|
+
assert_equal 'test', @page.slug
|
54
|
+
assert_equal 'me', @page.breadcrumb
|
55
|
+
end
|
56
|
+
def test_new__post
|
57
|
+
@cache = @controller.cache = FakeResponseCache.new
|
58
|
+
post :new, :parent_id => '1', :page => page_params
|
59
|
+
assert_redirected_to page_index_url
|
60
|
+
assert_match /saved/, flash[:notice]
|
61
|
+
|
62
|
+
@page = assigns(:page)
|
63
|
+
assert_equal 0, @page.parts.size
|
64
|
+
|
65
|
+
@page = get_test_page
|
66
|
+
assert_kind_of Page, @page
|
67
|
+
assert_equal '/page/', @cache.expired_path
|
68
|
+
end
|
69
|
+
def test_new__post_with_invalid_page
|
70
|
+
post :new, :parent_id => '1', :page => page_params(:status_id => 'abc')
|
71
|
+
assert_response :success
|
72
|
+
assert_match /error/, flash[:error]
|
73
|
+
assert_nil get_test_page
|
74
|
+
end
|
75
|
+
def test_new__post_with_parts
|
76
|
+
post(:new, :parent_id => '1', :page => page_params,
|
77
|
+
:part => {
|
78
|
+
'1' => part_params(:name => 'test-part-1'),
|
79
|
+
'2' => part_params(:name => 'test-part-2')
|
80
|
+
}
|
81
|
+
)
|
82
|
+
assert_redirected_to page_index_url
|
83
|
+
|
84
|
+
@page = get_test_page
|
85
|
+
assert_kind_of Page, @page
|
86
|
+
names = @page.parts.collect { |part| part.name }.sort
|
87
|
+
assert_equal ['test-part-1', 'test-part-2'], names
|
88
|
+
end
|
89
|
+
def test_new__post_with_invalid_part
|
90
|
+
@part_name = 'extra long ' * 25
|
91
|
+
post :new, :parent_id => '1', :page => page_params, :part => { '1' => part_params(:name => @part_name)}
|
92
|
+
assert_response :success # not redirected
|
93
|
+
assert_match /error/, flash[:error]
|
94
|
+
assert_nil get_test_page
|
95
|
+
assert_nil get_test_part
|
96
|
+
end
|
97
|
+
def test_new__save_and_continue_editing
|
98
|
+
post :new, :parent_id => '1', :page => page_params, :continue => 'Save and Continue Editing'
|
99
|
+
@page = get_test_page
|
100
|
+
assert_redirected_to page_edit_url(:id => @page.id)
|
101
|
+
end
|
102
|
+
|
103
|
+
def test_edit
|
104
|
+
get :edit, :id => '1', :page => page_params
|
105
|
+
assert_response :success
|
106
|
+
assert_template 'admin/page/new'
|
107
|
+
|
108
|
+
@page = assigns(:page)
|
109
|
+
assert_kind_of Page, @page
|
110
|
+
assert_equal 'Ruby Home Page', @page.title
|
111
|
+
end
|
112
|
+
def test_edit__post
|
113
|
+
@page = create_test_page
|
114
|
+
post :edit, :id => @page.id, :page => page_params(:status_id => '1')
|
115
|
+
assert_response :redirect
|
116
|
+
assert_equal 1, get_test_page.status.id
|
117
|
+
|
118
|
+
# To-Do: Test what happens when an invalid page is submitted
|
119
|
+
end
|
120
|
+
def test_edit__post_with_parts
|
121
|
+
@page = create_test_page(:no_part => true)
|
122
|
+
@page.parts.create(part_params(:name => 'test-part-1'))
|
123
|
+
@page.parts.create(part_params(:name => 'test-part-2'))
|
124
|
+
|
125
|
+
assert_equal 2, @page.parts.size
|
126
|
+
|
127
|
+
post :edit, :id => @page.id, :page => page_params, :part => {'1' => part_params(:name => 'test-part-1', :content => 'changed')}
|
128
|
+
assert_response :redirect
|
129
|
+
|
130
|
+
@page = get_test_page
|
131
|
+
assert_equal 1, @page.parts.size
|
132
|
+
assert_equal 'changed', @page.parts.first.content
|
133
|
+
end
|
134
|
+
|
135
|
+
def test_remove
|
136
|
+
@page = create_test_page
|
137
|
+
get :remove, :id => @page.id
|
138
|
+
assert_response :success
|
139
|
+
assert_equal @page, assigns(:page)
|
140
|
+
assert_not_nil get_test_page
|
141
|
+
end
|
142
|
+
def test_remove__post
|
143
|
+
@page = create_test_page
|
144
|
+
post :remove, :id => @page.id
|
145
|
+
assert_redirected_to page_index_url
|
146
|
+
assert_match /removed/, flash[:notice]
|
147
|
+
assert_nil get_test_page
|
148
|
+
end
|
149
|
+
|
150
|
+
def test_clear_cache
|
151
|
+
@cache = @controller.cache = FakeResponseCache.new
|
152
|
+
get :clear_cache
|
153
|
+
assert_response :success
|
154
|
+
assert_match /Do.*?not.*?access/i, @response.body
|
155
|
+
assert_equal false, @cache.cleared?
|
156
|
+
end
|
157
|
+
def test_clear_cache__post
|
158
|
+
@cache = @controller.cache = FakeResponseCache.new
|
159
|
+
post :clear_cache
|
160
|
+
assert_redirected_to page_index_url
|
161
|
+
assert_match /cache.*clear/i, flash[:notice]
|
162
|
+
assert_equal true, @cache.cleared?
|
163
|
+
end
|
164
|
+
|
165
|
+
def test_add_part
|
166
|
+
get :add_part
|
167
|
+
assert_response :success
|
168
|
+
assert_template 'admin/page/_part'
|
169
|
+
end
|
170
|
+
|
171
|
+
def test_children
|
172
|
+
get :children, :id => '1', :level => '1'
|
173
|
+
assert_response :success
|
174
|
+
assert_equal pages(:homepage), assigns(:parent)
|
175
|
+
assert_equal 1, assigns(:level)
|
176
|
+
assert ! %r{<head>}.match(@response.body)
|
177
|
+
assert_equal 'text/html;charset=utf-8', @response.headers['Content-Type']
|
178
|
+
end
|
179
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../test_helper'
|
2
|
+
require 'admin/snippet_controller'
|
3
|
+
|
4
|
+
# Re-raise errors caught by the controller.
|
5
|
+
class Admin::SnippetController; def rescue_action(e) raise e end; end
|
6
|
+
|
7
|
+
class Admin::SnippetControllerTest < Test::Unit::TestCase
|
8
|
+
def test_ancestors
|
9
|
+
assert Admin::SnippetController.ancestors.include?(Admin::AbstractModelController)
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../test_helper'
|
2
|
+
require 'admin/user_controller'
|
3
|
+
|
4
|
+
# Re-raise errors caught by the controller.
|
5
|
+
class Admin::UserController; def rescue_action(e) raise e end; end
|
6
|
+
|
7
|
+
class Admin::UserControllerTest < Test::Unit::TestCase
|
8
|
+
|
9
|
+
fixtures :users
|
10
|
+
|
11
|
+
def setup
|
12
|
+
@controller = Admin::UserController.new
|
13
|
+
@request = ActionController::TestRequest.new
|
14
|
+
@response = ActionController::TestResponse.new
|
15
|
+
@user = @request.session[:user] = users(:existing)
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_ancestors
|
19
|
+
assert Admin::UserController.ancestors.include?(Admin::AbstractModelController)
|
20
|
+
end
|
21
|
+
|
22
|
+
[:index, :new, :edit, :remove].each do |action|
|
23
|
+
define_method "test_#{action}_action_allowed_if_admin" do
|
24
|
+
get action, { :id => 1 }, { :user => users(:admin) }
|
25
|
+
assert_response :success, "action: #{action}"
|
26
|
+
end
|
27
|
+
|
28
|
+
define_method "test_#{action}_action_not_allowed_if_other" do
|
29
|
+
get action, { :id => 1 }, { :user => users(:non_admin) }
|
30
|
+
assert_redirected_to page_index_url, "action: #{action}"
|
31
|
+
assert_match /privileges/, flash[:error], "action: #{action}"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_remove__cannot_remove_self
|
36
|
+
@user = users(:admin)
|
37
|
+
get :remove, { :id => @user.id }, { :user => @user }
|
38
|
+
assert_redirected_to user_index_url
|
39
|
+
assert_match /cannot.*self/i, flash[:error]
|
40
|
+
assert_not_nil User.find(@user.id)
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_preferences
|
44
|
+
get :preferences, :user => { :email => 'updated@email.com' }
|
45
|
+
assert_response :success
|
46
|
+
assigned_user = assigns(:user)
|
47
|
+
assert_equal @user, assigned_user
|
48
|
+
assert @user.object_id != assigned_user.object_id
|
49
|
+
assert_equal 'existing.user@gmail.com', assigned_user.email
|
50
|
+
end
|
51
|
+
def test_preferences__post
|
52
|
+
@user = User.new(:name => 'Test', :login => 'pref_test', :password => 'whoa!', :password_confirmation => 'whoa!')
|
53
|
+
assert @user.save
|
54
|
+
post(
|
55
|
+
:preferences,
|
56
|
+
{ :user => { :password => '', :password_confirmation => '', :email => 'updated@gmail.com' } },
|
57
|
+
{ :user => @user }
|
58
|
+
)
|
59
|
+
@user = User.find(@user.id)
|
60
|
+
assert_redirected_to page_index_url
|
61
|
+
assert_match /preferences.*?saved/i, flash[:notice]
|
62
|
+
assert_equal('updated@gmail.com', @user.email)
|
63
|
+
@user.destroy
|
64
|
+
end
|
65
|
+
def test_preferences__post_with_bad_data
|
66
|
+
get :preferences, :user => { :login => 'superman' }
|
67
|
+
assert_response :success
|
68
|
+
assert_match /bad form data/i, flash[:error]
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|