cms-fortress 1.2.2 → 1.3.0.rc1

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.
Files changed (99) hide show
  1. data/.gitignore +66 -0
  2. data/Gemfile +2 -17
  3. data/Gemfile.lock +80 -90
  4. data/README.rdoc +11 -0
  5. data/Rakefile +9 -39
  6. data/app/controllers/cms/fortress/admin_controller.rb +5 -0
  7. data/app/controllers/cms/fortress/roles_controller.rb +11 -21
  8. data/app/controllers/cms/fortress/users_controller.rb +48 -31
  9. data/app/helpers/cms/fortress/application_helper.rb +37 -5
  10. data/app/helpers/comfy/admin/cms/pages_helper.rb +22 -0
  11. data/app/models/cms/fortress/error.rb +17 -0
  12. data/app/models/cms/fortress/role.rb +2 -1
  13. data/app/models/cms/fortress/settings.rb +17 -0
  14. data/app/models/cms/fortress/user.rb +17 -0
  15. data/app/models/cms_ability.rb +29 -22
  16. data/app/views/cms/fortress/admin/dashboard.html.haml +12 -0
  17. data/app/views/cms/fortress/shared/_dashboard_widget.html.haml +29 -0
  18. data/app/views/cms/fortress/shared/_menu.html.haml +26 -26
  19. data/app/views/cms/fortress/shared/_navbar.html.haml +1 -1
  20. data/app/views/cms/fortress/shared/_page_extend.html.haml +3 -5
  21. data/app/views/cms/fortress/shared/_page_extend_js.html.haml +2 -14
  22. data/app/views/cms/fortress/themes/wide/_body.html.haml +9 -8
  23. data/app/views/cms/fortress/themes/wide/_menu.html.haml +70 -37
  24. data/app/views/cms/fortress/users/_form.html.haml +6 -1
  25. data/app/views/cms/fortress/users/edit.html.haml +1 -2
  26. data/app/views/cms/fortress/users/index.html.haml +14 -5
  27. data/app/views/cms/fortress/users/new.html.haml +1 -2
  28. data/app/views/comfy/admin/cms/pages/_form.html.haml +10 -4
  29. data/app/views/comfy/admin/cms/pages/edit.html.haml +25 -0
  30. data/app/views/layouts/comfy/admin/cms/_head.html.haml +1 -1
  31. data/app/views/layouts/comfy/admin/cms/_left.html.haml +15 -12
  32. data/bin/bundle +3 -0
  33. data/bin/rails +4 -0
  34. data/bin/rake +4 -0
  35. data/cms-fortress.gemspec +32 -171
  36. data/config.ru +4 -0
  37. data/config/application.rb +34 -0
  38. data/config/boot.rb +5 -0
  39. data/config/cms/fortress/global_settings.yml +12 -0
  40. data/config/cms_routes.rb +7 -0
  41. data/config/database.yml +11 -0
  42. data/config/environment.rb +5 -0
  43. data/config/environments/development.rb +29 -0
  44. data/config/environments/test.rb +36 -0
  45. data/config/initializers/devise.rb +256 -0
  46. data/config/initializers/secret_token.rb +14 -0
  47. data/config/locales/de.yml +28 -1
  48. data/config/locales/devise.en.yml +59 -0
  49. data/config/locales/en.yml +37 -1
  50. data/config/roles.yml +1 -0
  51. data/config/secrets.yml +14 -0
  52. data/db/migrate/06_add_type_to_users.rb +11 -0
  53. data/db/migrate/07_integrate_workflow_into_cms_pages.rb +37 -0
  54. data/db/schema.rb +182 -0
  55. data/lib/assets/.keep +0 -0
  56. data/lib/cms-fortress.rb +10 -1
  57. data/lib/cms/fortress/application_controller_methods.rb +5 -2
  58. data/lib/cms/fortress/page_methods.rb +52 -2
  59. data/lib/cms/fortress/pages_controller_methods.rb +17 -0
  60. data/lib/cms/fortress/rails/engine.rb +12 -3
  61. data/lib/cms/fortress/routes/admin.rb +9 -1
  62. data/lib/cms/fortress/site_methods.rb +29 -0
  63. data/lib/cms/fortress/sites_controller_methods.rb +22 -0
  64. data/lib/generators/cms/comfy/comfy_generator.rb +18 -0
  65. data/lib/generators/cms/fortress/fortress_generator.rb +30 -6
  66. data/lib/generators/cms/fortress/upgrade/USAGE +8 -0
  67. data/lib/generators/cms/fortress/upgrade/upgrade_generator.rb +24 -0
  68. data/lib/tasks/.keep +0 -0
  69. data/test/{functional → controllers}/cms/fortress/roles_controller_test.rb +9 -4
  70. data/test/{functional → controllers}/cms/fortress/users_controller_test.rb +10 -11
  71. data/test/controllers/comfy/admin/cms/pages_controller_test.rb +115 -0
  72. data/test/fixtures/cms/fortress/role_details.yml +89 -8
  73. data/test/fixtures/cms/fortress/roles.yml +17 -0
  74. data/test/fixtures/cms/fortress/users.yml +14 -0
  75. data/test/fixtures/comfy/cms/blocks.yml +12 -0
  76. data/test/fixtures/comfy/cms/categories.yml +4 -0
  77. data/test/fixtures/comfy/cms/categorizations.yml +3 -0
  78. data/test/fixtures/comfy/cms/files.yml +9 -0
  79. data/test/fixtures/comfy/cms/layouts.yml +40 -0
  80. data/test/fixtures/comfy/cms/pages.yml +105 -0
  81. data/test/fixtures/comfy/cms/revisions.yml +21 -0
  82. data/test/fixtures/comfy/cms/sites.yml +6 -0
  83. data/test/fixtures/comfy/cms/snippets.yml +6 -0
  84. data/test/integration/cms/fortress/users_controller_test.rb +16 -0
  85. data/test/models/comfy/cms/page_test.rb +84 -0
  86. data/test/models/comfy/cms/settings_test.rb +16 -0
  87. data/test/test_helper.rb +25 -0
  88. metadata +157 -23
  89. data/app/models/cms/page_workflow.rb +0 -44
  90. data/app/models/error/missing_role_configuration_file.rb +0 -12
  91. data/lib/generators/comfy/cms/cms_generator.rb +0 -60
  92. data/test/fixtures/cms/page_workflows.yml +0 -11
  93. data/test/helper.rb +0 -18
  94. data/test/test_cms-fortress.rb +0 -7
  95. data/test/unit/cms/fortress/role_detail_test.rb +0 -7
  96. data/test/unit/cms/fortress/role_test.rb +0 -7
  97. data/test/unit/cms/fortress/role_user_test.rb +0 -7
  98. data/test/unit/helpers/cms/fortress/roles_helper_test.rb +0 -4
  99. data/test/unit/helpers/cms/fortress/users_helper_test.rb +0 -4
@@ -0,0 +1,17 @@
1
+ module Cms
2
+ module Fortress
3
+ module PagesControllerMethods
4
+
5
+ def transit_to_state
6
+ @page.send(params.fetch(:transition)) if params[:transition].present?
7
+ end
8
+
9
+ def self.included(base)
10
+ base.class_eval do
11
+ before_action :transit_to_state, only: [:create, :update]
12
+ end
13
+ end
14
+
15
+ end
16
+ end
17
+ end
@@ -10,15 +10,24 @@ module Cms
10
10
  Sprockets::Context.send :include, Cms::Fortress::SprocketHelper
11
11
 
12
12
  Comfy::Cms::ContentController.send(:include, Cms::Fortress::ContentRenderer)
13
+ Comfy::Admin::Cms::PagesController.send(:include, Cms::Fortress::PagesControllerMethods)
13
14
  Comfy::Cms::Page.send(:include, Cms::Fortress::PageMethods)
14
15
  Comfy::Cms::File.send(:include, Cms::Fortress::FileMethods)
16
+ Comfy::Cms::Site.send(:include, Cms::Fortress::SiteMethods)
15
17
 
16
- # Insert Roles
17
- Comfy::Admin::Cms::SitesController.class_eval do
18
+
19
+ Comfy::Admin::Cms::BaseController.class_eval do
18
20
  before_action do
19
- authorize! :manage, Comfy::Cms::Site
21
+ if current_cms_fortress_user && current_cms_fortress_user.type.eql?(:site_user)
22
+ @site = current_cms_fortress_user.site
23
+ session[:site_id] = @site.id if @site
24
+ end
20
25
  end
21
26
  end
27
+
28
+ # Insert Roles
29
+ Comfy::Admin::Cms::SitesController.send :include, Cms::Fortress::SiteControllerMethods
30
+
22
31
  Comfy::Admin::Cms::LayoutsController.class_eval do
23
32
  before_action do
24
33
  authorize! :manage, Comfy::Cms::Layout
@@ -18,7 +18,13 @@ class ActionDispatch::Routing::Mapper
18
18
  post :refresh
19
19
  end
20
20
  end
21
- resources :users, :as => 'cms_fortress_users'
21
+
22
+ resources :users, :except => :show, :as => 'cms_fortress_users' do
23
+ collection do
24
+ get :super
25
+ get "super/new", action: "new_super"
26
+ end
27
+ end
22
28
 
23
29
  get 'settings/users' => 'admin#users', as: 'cms_fortress_user_settings'
24
30
  get 'unauthorised' => 'admin#unauthorised', as: 'cms_fortress_unauthorised'
@@ -27,6 +33,8 @@ class ActionDispatch::Routing::Mapper
27
33
  get 'sites/:site_id/files/videos' => 'admin#videos', as: 'cms_fortress_files_videos'
28
34
  get 'sites/:site_id/files/others' => 'admin#other_files', as: 'cms_fortress_files_others'
29
35
 
36
+ # Site Resource routes
37
+ get 'site/dashboard' => 'admin#dashboard', as: 'dashboard_site'
30
38
  end
31
39
 
32
40
  end
@@ -0,0 +1,29 @@
1
+ require 'active_support/concern'
2
+
3
+ module Cms
4
+ module Fortress
5
+ module SiteMethods
6
+ extend ActiveSupport::Concern
7
+
8
+ included do
9
+ after_create :generate_defaults
10
+
11
+ has_many :users, class_name: "Cms::Fortress::User", foreign_key: :site_id
12
+ has_many :roles, class_name: "Cms::Fortress::Role", foreign_key: :site_id
13
+ has_many :role_details, class_name: "Cms::Fortress::RoleDetail", foreign_key: :site_id
14
+ end
15
+
16
+ # generate default roles specific for the site
17
+ def generate_defaults
18
+ #TODO: implement I18n below
19
+ role = Cms::Fortress::Role.create!(:site_id => id, :name => "#{label} Administrator", :description => "#{ label } administrator users")
20
+ role.load_defaults
21
+ role.save
22
+ end
23
+
24
+ module ClassMethods
25
+
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,22 @@
1
+ require 'active_support/concern'
2
+ module Cms
3
+ module Fortress
4
+ module SiteControllerMethods
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ before_action do
9
+ authorize! :manage, Comfy::Cms::Site
10
+ end
11
+ before_action only: [:new, :create] do
12
+ raise CanCan::AccessDenied.new("You are not allowed to create a site.") unless current_cms_fortress_user.type.eql?(:super_user)
13
+ end
14
+ end
15
+
16
+ module ClassMethods
17
+
18
+ end
19
+
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,18 @@
1
+ require 'rails/generators'
2
+ require 'generators/comfy/cms/cms_generator'
3
+
4
+ class Cms::ComfyGenerator < Comfy::Generators::CmsGenerator
5
+ spec = Gem::Specification.find_by_name("comfortable_mexican_sofa")
6
+ source_root spec.gem_dir # File.expand_path('../../../../..', __FILE__)
7
+
8
+ def generate_routing
9
+ route_string = " comfy_route :cms_admin, :path => '/cms-admin'\n\n"
10
+ route_string << " # Make sure this routeset is defined last\n"
11
+ route_string << " comfy_route :cms, :path => '/', :sitemap => false\n"
12
+ route route_string[2..-1]
13
+ end
14
+
15
+ def show_readme
16
+
17
+ end
18
+ end
@@ -1,29 +1,53 @@
1
+ require 'generators/cms/comfy/comfy_generator'
2
+ require 'fileutils'
1
3
 
2
4
  class Cms::FortressGenerator < Rails::Generators::Base
5
+ include Thor::Actions
6
+
3
7
  # source_root File.expand_path('../templates', __FILE__)
4
8
  source_root File.expand_path('../../../../..', __FILE__)
9
+ class_option :comfy, type: :boolean, default: true, description: "Generate Comfy"
10
+ class_option :routes, type: :boolean, default: true, description: "Generate routes"
11
+ class_option :migration, type: :boolean, default: true, description: "Generate migration"
12
+ class_option :devise, type: :boolean, default: true, description: "Generate devise"
13
+ class_option :development , default: false, desc: "Copy files that are necessary for development and testing of cms-fortress.", aliases: "-d"
5
14
 
6
15
  def install_devise
7
- generate("devise:install")
16
+ generate("devise:install") if options.devise? && !options.development?
8
17
  end
9
18
 
10
19
  def install_comfortable_mexican_sofa
11
- generate("comfy:cms")
20
+ Cms::ComfyGenerator.start if options.comfy? && !options.development?
12
21
  end
13
22
 
14
23
  def generate_migrations
15
- rake("cms_fortress_engine:install:migrations")
24
+ rake("cms_fortress_engine:install:migrations") if options.migration?
16
25
  end
17
26
 
18
27
  def generate_initialization
19
- copy_file 'config/initializers/cms_fortress.rb',
20
- 'config/initializers/cms_fortress.rb'
28
+ copy_file 'config/initializers/cms_fortress.rb', 'config/initializers/cms_fortress.rb'
29
+ end
30
+
31
+ def copy_development_files
32
+ if options[:development] == "development"
33
+ copy_file Gem::Specification.find_by_name('comfortable_mexican_sofa').gem_dir+'/db/migrate/01_create_cms.rb',
34
+ 'db/migrate/00_create_cms.rb'
35
+ end
36
+ end
37
+
38
+ def generate_routing
39
+ if options.routes?
40
+ route_string = ""
41
+ route_string << " cms_fortress_routes :path => '/cms-admin'\n"
42
+ route route_string[2..-1]
43
+ end
21
44
  end
22
45
 
23
46
  def copy_files
24
47
  log 'Copying files...'
25
48
  files = [
26
- 'config/roles.yml'
49
+ 'config/roles.yml',
50
+ 'config/cms/fortress/global_settings.yml'
27
51
  ]
28
52
  files.each do |file|
29
53
  copy_file file, file
@@ -0,0 +1,8 @@
1
+ Description:
2
+ Explain the generator
3
+
4
+ Example:
5
+ rails generate upgrade Thing
6
+
7
+ This will create:
8
+ what/will/it/create
@@ -0,0 +1,24 @@
1
+ class Cms::Fortress::UpgradeGenerator < Rails::Generators::Base
2
+ source_root File.expand_path('../../../../../..', __FILE__)
3
+
4
+ def generate_migrations
5
+ rake("cms_fortress_engine:install:migrations")
6
+ end
7
+
8
+ def copy_files
9
+ log 'Copying files...'
10
+ files = [
11
+ 'config/cms/fortress/global_settings.yml'
12
+ ]
13
+ files.each do |file|
14
+ copy_file file, file
15
+ end
16
+ end
17
+
18
+ def done
19
+ puts "\r\n\r\n!!! IMPORTANT NOTE: Review your existing users since they set to super users as default. Review and assign site roles accordingly."
20
+ puts "Upgrade complete..."
21
+ puts "\r\n\r\n"
22
+ end
23
+
24
+ end
data/lib/tasks/.keep ADDED
File without changes
@@ -1,11 +1,16 @@
1
+ # http://api.rubyonrails.org/classes/ActionController/TestCase.html
1
2
  require 'test_helper'
2
3
 
4
+
3
5
  class Cms::Fortress::RolesControllerTest < ActionController::TestCase
4
- setup do
6
+ def setup
7
+ @comfy_cms_site = comfy_cms_sites(:default)
8
+ @cms_fortress_user = cms_fortress_users(:one)
5
9
  @cms_fortress_role = cms_fortress_roles(:one)
10
+ sign_in Cms::Fortress::User, @cms_fortress_user
6
11
  end
7
12
 
8
- test "should get index" do
13
+ def test_should_get_index
9
14
  get :index
10
15
  assert_response :success
11
16
  assert_not_nil assigns(:cms_fortress_roles)
@@ -18,7 +23,7 @@ class Cms::Fortress::RolesControllerTest < ActionController::TestCase
18
23
 
19
24
  test "should create cms_fortress_role" do
20
25
  assert_difference('Cms::Fortress::Role.count') do
21
- post :create, cms_fortress_role: { description: @cms_fortress_role.description, title: @cms_fortress_role.title }
26
+ post :create, cms_fortress_role: { description: @cms_fortress_role.description, name: @cms_fortress_role.name }
22
27
  end
23
28
 
24
29
  assert_redirected_to cms_fortress_role_path(assigns(:cms_fortress_role))
@@ -35,7 +40,7 @@ class Cms::Fortress::RolesControllerTest < ActionController::TestCase
35
40
  end
36
41
 
37
42
  test "should update cms_fortress_role" do
38
- put :update, id: @cms_fortress_role, cms_fortress_role: { description: @cms_fortress_role.description, title: @cms_fortress_role.title }
43
+ put :update, id: @cms_fortress_role, cms_fortress_role: { description: @cms_fortress_role.description, name: @cms_fortress_role.name }
39
44
  assert_redirected_to cms_fortress_role_path(assigns(:cms_fortress_role))
40
45
  end
41
46
 
@@ -1,13 +1,16 @@
1
+ # http://api.rubyonrails.org/classes/ActionController/TestCase.html
1
2
  require 'test_helper'
2
3
 
3
4
  class Cms::Fortress::UsersControllerTest < ActionController::TestCase
4
- setup do
5
+ def setup
6
+ @comfy_cms_site = comfy_cms_sites(:default)
5
7
  @cms_fortress_user = cms_fortress_users(:one)
8
+ @cms_fortress_role_details = cms_fortress_role_details(:one)
9
+ sign_in Cms::Fortress::User, @cms_fortress_user
6
10
  end
7
11
 
8
- test "should get index" do
12
+ def test_it_should_get_index
9
13
  get :index
10
- assert_response :success
11
14
  assert_not_nil assigns(:cms_fortress_users)
12
15
  end
13
16
 
@@ -18,15 +21,10 @@ class Cms::Fortress::UsersControllerTest < ActionController::TestCase
18
21
 
19
22
  test "should create cms_fortress_user" do
20
23
  assert_difference('Cms::Fortress::User.count') do
21
- post :create, cms_fortress_user: { email: @cms_fortress_user.email, password: @cms_fortress_user.password, password_confirmation: @cms_fortress_user.password_confirmation }
24
+ post :create, cms_fortress_user: { email: 'foo@bar.com', password: 'foobar123', password_confirmation: 'foobar123' }
22
25
  end
23
26
 
24
- assert_redirected_to cms_fortress_user_path(assigns(:cms_fortress_user))
25
- end
26
-
27
- test "should show cms_fortress_user" do
28
- get :show, id: @cms_fortress_user
29
- assert_response :success
27
+ assert_redirected_to cms_fortress_users_path
30
28
  end
31
29
 
32
30
  test "should get edit" do
@@ -36,7 +34,8 @@ class Cms::Fortress::UsersControllerTest < ActionController::TestCase
36
34
 
37
35
  test "should update cms_fortress_user" do
38
36
  put :update, id: @cms_fortress_user, cms_fortress_user: { email: @cms_fortress_user.email, password: @cms_fortress_user.password, password_confirmation: @cms_fortress_user.password_confirmation }
39
- assert_redirected_to cms_fortress_user_path(assigns(:cms_fortress_user))
37
+ #assert_redirected_to cms_fortress_user_path(assigns(:cms_fortress_user))
38
+ assert_redirected_to cms_fortress_users_path()
40
39
  end
41
40
 
42
41
  test "should destroy cms_fortress_user" do
@@ -0,0 +1,115 @@
1
+ require 'test_helper'
2
+
3
+ class Comfy::Admin::Cms::PagesControllerTest < ActionController::TestCase
4
+ def setup
5
+ @comfy_cms_site = comfy_cms_sites(:default)
6
+ @cms_fortress_user = cms_fortress_users(:one)
7
+ @cms_fortress_role = cms_fortress_roles(:one)
8
+ sign_in Cms::Fortress::User, @cms_fortress_user
9
+ end
10
+
11
+ test "new page should be drafted" do
12
+ assert_difference 'Comfy::Cms::Page.count' do
13
+ assert_difference 'Comfy::Cms::Block.count', 2 do
14
+ post :create, :site_id => @comfy_cms_site, :page => {
15
+ :label => 'Test Page',
16
+ :slug => 'test-page',
17
+ :parent_id => comfy_cms_pages(:default).id,
18
+ :layout_id => comfy_cms_layouts(:default).id,
19
+ :blocks_attributes => [
20
+ { :identifier => 'default_page_text',
21
+ :content => 'content content' },
22
+ { :identifier => 'default_field_text',
23
+ :content => 'title content' }
24
+ ]
25
+ }, :transition => 'draft'
26
+ page = Comfy::Cms::Page.last
27
+ assert_equal @comfy_cms_site, page.site
28
+ assert page.drafted?
29
+ assert_redirected_to edit_comfy_admin_cms_site_page_url(id: page, site_id: page.site)
30
+ assert_equal 'Page created', flash[:success]
31
+ end
32
+ end
33
+ end
34
+
35
+ test "new page should be published" do
36
+ assert_difference 'Comfy::Cms::Page.count' do
37
+ assert_difference 'Comfy::Cms::Block.count', 2 do
38
+ post :create, :site_id => @comfy_cms_site, :page => {
39
+ :label => 'Test Page',
40
+ :slug => 'test-page',
41
+ :parent_id => comfy_cms_pages(:default).id,
42
+ :layout_id => comfy_cms_layouts(:default).id,
43
+ :blocks_attributes => [
44
+ { :identifier => 'default_page_text',
45
+ :content => 'content content' },
46
+ { :identifier => 'default_field_text',
47
+ :content => 'title content' }
48
+ ]
49
+ }, :transition => 'publish'
50
+ page = Comfy::Cms::Page.last
51
+ assert_equal @comfy_cms_site, page.site
52
+ assert page.published?
53
+ assert_redirected_to edit_comfy_admin_cms_site_page_url(id: page, site_id: page.site)
54
+ assert_equal 'Page created', flash[:success]
55
+ end
56
+ end
57
+ end
58
+
59
+ test "drafted page should become reviewed" do
60
+ page = comfy_cms_pages(:drafted)
61
+ assert_no_difference 'Comfy::Cms::Block.count' do
62
+ put :update, :site_id => page.site, :id => page, :transition => 'review'
63
+ assert_response :redirect
64
+ assert_redirected_to :action => :edit, :id => page
65
+ assert_equal 'Page updated', flash[:success]
66
+ assert assigns(:page).reviewed?
67
+ end
68
+ end
69
+
70
+ test "drafted page should become published" do
71
+ page = comfy_cms_pages(:drafted)
72
+ assert_no_difference 'Comfy::Cms::Block.count' do
73
+ put :update, :site_id => page.site, :id => page, :transition => 'publish'
74
+ assert_response :redirect
75
+ assert_redirected_to :action => :edit, :id => page
76
+ assert_equal 'Page updated', flash[:success]
77
+ assert assigns(:page).published?
78
+ end
79
+ end
80
+
81
+ test "reviewed page should become published" do
82
+ page = comfy_cms_pages(:reviewed)
83
+ assert_no_difference 'Comfy::Cms::Block.count' do
84
+ put :update, :site_id => page.site, :id => page, :transition => 'publish'
85
+ assert_response :redirect
86
+ assert_redirected_to :action => :edit, :id => page
87
+ assert_equal 'Page updated', flash[:success]
88
+ assert assigns(:page).published?
89
+ end
90
+ end
91
+
92
+ test "published page should become drafted" do
93
+ page = comfy_cms_pages(:published)
94
+ assert_no_difference 'Comfy::Cms::Block.count' do
95
+ put :update, :site_id => page.site, :id => page, :transition => 'reset'
96
+ assert_response :redirect
97
+ assert_redirected_to :action => :edit, :id => page
98
+ assert_equal 'Page updated', flash[:success]
99
+ assert assigns(:page).drafted?
100
+ end
101
+ end
102
+
103
+ test "saving a page should'nt change status of a page" do
104
+ page = comfy_cms_pages(:drafted)
105
+ label = 'Arrr'
106
+ put :update, :site_id => page.site, :id => page, :commit => 'save', :page => {
107
+ :label => label,
108
+ }
109
+ assert_response :redirect
110
+ assert_redirected_to :action => :edit, :id => page
111
+ assert_equal 'Page updated', flash[:success]
112
+ assert assigns(:page).drafted?
113
+ assert_equal assigns(:page).label, label
114
+ end
115
+ end