comfypress 0.1.3
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.
- checksums.yaml +7 -0
- data/.gitignore +15 -0
- data/.travis.yml +22 -0
- data/Gemfile +22 -0
- data/Gemfile.lock +175 -0
- data/LICENSE +20 -0
- data/README.md +79 -0
- data/Rakefile +5 -0
- data/app/assets/images/comfypress/arrow_bottom.gif +0 -0
- data/app/assets/images/comfypress/arrow_right.gif +0 -0
- data/app/assets/images/comfypress/bootstrap/glyphicons-halflings-white.png +0 -0
- data/app/assets/images/comfypress/bootstrap/glyphicons-halflings.png +0 -0
- data/app/assets/images/comfypress/checkerboard.gif +0 -0
- data/app/assets/images/comfypress/icon_draft.gif +0 -0
- data/app/assets/images/comfypress/icon_file.gif +0 -0
- data/app/assets/images/comfypress/icon_layout.gif +0 -0
- data/app/assets/images/comfypress/icon_move.gif +0 -0
- data/app/assets/images/comfypress/icon_page.gif +0 -0
- data/app/assets/images/comfypress/icon_site.gif +0 -0
- data/app/assets/images/comfypress/icon_snippet.gif +0 -0
- data/app/assets/images/comfypress/nav_arrow.png +0 -0
- data/app/assets/javascripts/comfypress/admin/application.js +1 -0
- data/app/assets/javascripts/comfypress/application.js.coffee +175 -0
- data/app/assets/javascripts/comfypress/lib/bootstrap-datetimepicker.js +21 -0
- data/app/assets/javascripts/comfypress/lib/bootstrap-wysihtml5.js +492 -0
- data/app/assets/javascripts/comfypress/lib/bootstrap.js +6 -0
- data/app/assets/javascripts/comfypress/lib/codemirror.js +10 -0
- data/app/assets/javascripts/comfypress/lib/wysihtml5.js +261 -0
- data/app/assets/stylesheets/comfypress/admin/application.css +1 -0
- data/app/assets/stylesheets/comfypress/application.css.sass +8 -0
- data/app/assets/stylesheets/comfypress/base.css.sass +333 -0
- data/app/assets/stylesheets/comfypress/bootstrap_overrides.css.sass +45 -0
- data/app/assets/stylesheets/comfypress/codemirror_overrides.css.sass +27 -0
- data/app/assets/stylesheets/comfypress/lib/bootstrap-datetimepicker.css +9 -0
- data/app/assets/stylesheets/comfypress/lib/bootstrap-wysihtml5.css +102 -0
- data/app/assets/stylesheets/comfypress/lib/bootstrap.css +9 -0
- data/app/assets/stylesheets/comfypress/lib/codemirror.css +240 -0
- data/app/assets/stylesheets/comfypress/wysihtml5_overrides.css.sass +5 -0
- data/app/controllers/application_controller.rb +5 -0
- data/app/controllers/cms_admin/base_controller.rb +51 -0
- data/app/controllers/cms_admin/categories_controller.rb +35 -0
- data/app/controllers/cms_admin/files_controller.rb +108 -0
- data/app/controllers/cms_admin/layouts_controller.rb +67 -0
- data/app/controllers/cms_admin/menu_items_controller.rb +65 -0
- data/app/controllers/cms_admin/menus_controller.rb +60 -0
- data/app/controllers/cms_admin/pages_controller.rb +112 -0
- data/app/controllers/cms_admin/revisions_controller.rb +57 -0
- data/app/controllers/cms_admin/sites_controller.rb +64 -0
- data/app/controllers/cms_admin/snippets_controller.rb +64 -0
- data/app/controllers/cms_content_controller.rb +79 -0
- data/app/helpers/application_helper.rb +16 -0
- data/app/models/cms/block.rb +48 -0
- data/app/models/cms/categorization.rb +21 -0
- data/app/models/cms/category.rb +30 -0
- data/app/models/cms/file.rb +75 -0
- data/app/models/cms/layout.rb +99 -0
- data/app/models/cms/menu.rb +26 -0
- data/app/models/cms/menu_item.rb +14 -0
- data/app/models/cms/page.rb +202 -0
- data/app/models/cms/revision.rb +17 -0
- data/app/models/cms/site.rb +113 -0
- data/app/models/cms/snippet.rb +58 -0
- data/app/models/cms.rb +5 -0
- data/app/views/cms_admin/categories/_categories.html.haml +3 -0
- data/app/views/cms_admin/categories/_edit.html.haml +6 -0
- data/app/views/cms_admin/categories/_form.html.haml +8 -0
- data/app/views/cms_admin/categories/_index.html.haml +24 -0
- data/app/views/cms_admin/categories/_show.html.haml +13 -0
- data/app/views/cms_admin/categories/create.js.erb +7 -0
- data/app/views/cms_admin/categories/destroy.js.erb +3 -0
- data/app/views/cms_admin/categories/edit.js.erb +3 -0
- data/app/views/cms_admin/categories/update.js.erb +6 -0
- data/app/views/cms_admin/files/_file.html.haml +13 -0
- data/app/views/cms_admin/files/_form.html.haml +14 -0
- data/app/views/cms_admin/files/_index.html.haml +14 -0
- data/app/views/cms_admin/files/_page_form.html.haml +9 -0
- data/app/views/cms_admin/files/destroy.js.coffee +2 -0
- data/app/views/cms_admin/files/edit.html.haml +5 -0
- data/app/views/cms_admin/files/index.html.haml +28 -0
- data/app/views/cms_admin/files/new.html.haml +5 -0
- data/app/views/cms_admin/layouts/_form.html.haml +17 -0
- data/app/views/cms_admin/layouts/_index_branch.html.haml +23 -0
- data/app/views/cms_admin/layouts/edit.html.haml +9 -0
- data/app/views/cms_admin/layouts/index.html.haml +9 -0
- data/app/views/cms_admin/layouts/new.html.haml +5 -0
- data/app/views/cms_admin/menu_items/_form.html.haml +22 -0
- data/app/views/cms_admin/menu_items/edit.html.haml +8 -0
- data/app/views/cms_admin/menu_items/index.html.haml +24 -0
- data/app/views/cms_admin/menu_items/new.html.haml +5 -0
- data/app/views/cms_admin/menus/_form.html.haml +8 -0
- data/app/views/cms_admin/menus/edit.html.haml +8 -0
- data/app/views/cms_admin/menus/index.html.haml +24 -0
- data/app/views/cms_admin/menus/new.html.haml +5 -0
- data/app/views/cms_admin/pages/_form.html.haml +38 -0
- data/app/views/cms_admin/pages/_form_blocks.html.haml +28 -0
- data/app/views/cms_admin/pages/_index_branch.html.haml +35 -0
- data/app/views/cms_admin/pages/edit.html.haml +9 -0
- data/app/views/cms_admin/pages/form_blocks.js.erb +2 -0
- data/app/views/cms_admin/pages/index.html.haml +11 -0
- data/app/views/cms_admin/pages/new.html.haml +5 -0
- data/app/views/cms_admin/pages/toggle_branch.js.erb +11 -0
- data/app/views/cms_admin/revisions/show.html.haml +28 -0
- data/app/views/cms_admin/sites/_form.html.haml +14 -0
- data/app/views/cms_admin/sites/_mirrors.html.haml +17 -0
- data/app/views/cms_admin/sites/edit.html.haml +5 -0
- data/app/views/cms_admin/sites/index.html.haml +24 -0
- data/app/views/cms_admin/sites/new.html.haml +5 -0
- data/app/views/cms_admin/snippets/_form.html.haml +11 -0
- data/app/views/cms_admin/snippets/edit.html.haml +9 -0
- data/app/views/cms_admin/snippets/index.html.haml +28 -0
- data/app/views/cms_admin/snippets/new.html.haml +5 -0
- data/app/views/cms_content/_menu.html.haml +5 -0
- data/app/views/cms_content/render_sitemap.xml.builder +15 -0
- data/app/views/layouts/cms_admin/_body.html.haml +16 -0
- data/app/views/layouts/cms_admin/_center.html.haml +7 -0
- data/app/views/layouts/cms_admin/_footer.html.haml +3 -0
- data/app/views/layouts/cms_admin/_footer_js.html.haml +7 -0
- data/app/views/layouts/cms_admin/_head.html.haml +12 -0
- data/app/views/layouts/cms_admin/_left.html.haml +11 -0
- data/app/views/layouts/cms_admin/_right.html.haml +1 -0
- data/app/views/layouts/cms_admin.html.haml +4 -0
- data/comfypress.gemspec +28 -0
- data/config/application.rb +69 -0
- data/config/boot.rb +6 -0
- data/config/database.sqlite.yml +47 -0
- data/config/database.yml +47 -0
- data/config/environment.rb +5 -0
- data/config/environments/development.rb +39 -0
- data/config/environments/production.rb +67 -0
- data/config/environments/test.rb +39 -0
- data/config/initializers/comfypress.rb +100 -0
- data/config/initializers/paperclip.rb +3 -0
- data/config/locales/de.yml +236 -0
- data/config/locales/en.yml +285 -0
- data/config/locales/es.yml +236 -0
- data/config/locales/fr.yml +236 -0
- data/config/locales/ja.yml +237 -0
- data/config/locales/pl.yml +236 -0
- data/config/locales/pt-BR.yml +236 -0
- data/config/locales/ru.yml +236 -0
- data/config/locales/sv.yml +236 -0
- data/config/locales/zh-CN.yml +236 -0
- data/config/routes.rb +10 -0
- data/config.ru +4 -0
- data/db/cms_fixtures/sample-site/layouts/default/_default.yml +1 -0
- data/db/cms_fixtures/sample-site/layouts/default/content.html +5 -0
- data/db/cms_fixtures/sample-site/layouts/default/css.css +1 -0
- data/db/cms_fixtures/sample-site/layouts/default/js.js +1 -0
- data/db/cms_fixtures/sample-site/layouts/default/nested/_nested.yml +2 -0
- data/db/cms_fixtures/sample-site/layouts/default/nested/content.html +2 -0
- data/db/cms_fixtures/sample-site/layouts/default/nested/css.css +1 -0
- data/db/cms_fixtures/sample-site/layouts/default/nested/js.js +1 -0
- data/db/cms_fixtures/sample-site/pages/index/_index.yml +2 -0
- data/db/cms_fixtures/sample-site/pages/index/child/_child.yml +3 -0
- data/db/cms_fixtures/sample-site/pages/index/child/left.html +1 -0
- data/db/cms_fixtures/sample-site/pages/index/child/right.html +1 -0
- data/db/cms_fixtures/sample-site/pages/index/content.html +2 -0
- data/db/cms_fixtures/sample-site/snippets/default/_default.yml +1 -0
- data/db/cms_fixtures/sample-site/snippets/default/content.html +1 -0
- data/db/migrate/01_create_cms.rb +163 -0
- data/db/seeds.rb +9 -0
- data/db/upgrade_migrations/02_upgrade_to_1_1_0.rb +19 -0
- data/db/upgrade_migrations/03_upgrade_to_1_2_0.rb +15 -0
- data/db/upgrade_migrations/04_upgrade_to_1_3_0.rb +23 -0
- data/db/upgrade_migrations/05_upgrade_to_1_4_0.rb +33 -0
- data/db/upgrade_migrations/06_upgrade_to_1_5_0.rb +21 -0
- data/db/upgrade_migrations/07_upgrade_to_1_6_0.rb +25 -0
- data/doc/preview.png +0 -0
- data/doc/sofa.png +0 -0
- data/lib/comfypress/authentication/dummy_auth.rb +8 -0
- data/lib/comfypress/authentication/http_auth.rb +18 -0
- data/lib/comfypress/configuration.rb +99 -0
- data/lib/comfypress/engine.rb +18 -0
- data/lib/comfypress/error.rb +24 -0
- data/lib/comfypress/extensions/acts_as_tree.rb +102 -0
- data/lib/comfypress/extensions/has_revisions.rb +64 -0
- data/lib/comfypress/extensions/is_categorized.rb +49 -0
- data/lib/comfypress/extensions/is_mirrored.rb +85 -0
- data/lib/comfypress/extensions/rails.rb +24 -0
- data/lib/comfypress/fixtures.rb +289 -0
- data/lib/comfypress/form_builder.rb +97 -0
- data/lib/comfypress/render_methods.rb +85 -0
- data/lib/comfypress/routing.rb +62 -0
- data/lib/comfypress/sitemap.rb +27 -0
- data/lib/comfypress/tag.rb +154 -0
- data/lib/comfypress/tags/asset.rb +25 -0
- data/lib/comfypress/tags/collection.rb +64 -0
- data/lib/comfypress/tags/field_datetime.rb +17 -0
- data/lib/comfypress/tags/field_integer.rb +17 -0
- data/lib/comfypress/tags/field_rich_text.rb +17 -0
- data/lib/comfypress/tags/field_string.rb +17 -0
- data/lib/comfypress/tags/field_text.rb +17 -0
- data/lib/comfypress/tags/file.rb +29 -0
- data/lib/comfypress/tags/helper.rb +24 -0
- data/lib/comfypress/tags/menu.rb +27 -0
- data/lib/comfypress/tags/page_datetime.rb +13 -0
- data/lib/comfypress/tags/page_file.rb +51 -0
- data/lib/comfypress/tags/page_files.rb +52 -0
- data/lib/comfypress/tags/page_integer.rb +13 -0
- data/lib/comfypress/tags/page_markdown.rb +22 -0
- data/lib/comfypress/tags/page_rich_text.rb +13 -0
- data/lib/comfypress/tags/page_string.rb +13 -0
- data/lib/comfypress/tags/page_text.rb +13 -0
- data/lib/comfypress/tags/partial.rb +23 -0
- data/lib/comfypress/tags/snippet.rb +19 -0
- data/lib/comfypress/version.rb +3 -0
- data/lib/comfypress/view_hooks.rb +32 -0
- data/lib/comfypress/view_methods.rb +52 -0
- data/lib/comfypress.rb +66 -0
- data/lib/generators/comfy/cms/README +10 -0
- data/lib/generators/comfy/cms/cms_generator.rb +57 -0
- data/lib/tasks/comfypress.rake +45 -0
- data/script/rails +6 -0
- data/test/fixtures/cms/blocks.yml +12 -0
- data/test/fixtures/cms/categories.yml +4 -0
- data/test/fixtures/cms/categorizations.yml +3 -0
- data/test/fixtures/cms/files.yml +9 -0
- data/test/fixtures/cms/layouts.yml +40 -0
- data/test/fixtures/cms/menu_items.yml +15 -0
- data/test/fixtures/cms/menus.yml +9 -0
- data/test/fixtures/cms/pages.yml +39 -0
- data/test/fixtures/cms/revisions.yml +21 -0
- data/test/fixtures/cms/sites.yml +6 -0
- data/test/fixtures/cms/snippets.yml +6 -0
- data/test/fixtures/files/data.zip +0 -0
- data/test/fixtures/files/document.pdf +0 -0
- data/test/fixtures/files/image.gif +0 -0
- data/test/fixtures/files/image.jpg +0 -0
- data/test/fixtures/views/_nav_hook.html.erb +1 -0
- data/test/fixtures/views/_nav_hook_2.html.erb +1 -0
- data/test/fixtures/views/render_test/_test.html.erb +1 -0
- data/test/fixtures/views/render_test/new.html.erb +1 -0
- data/test/fixtures/views/render_test/render_layout.html.erb +1 -0
- data/test/functional/cms_admin/base_controller_test.rb +18 -0
- data/test/functional/cms_admin/categories_controller_test.rb +70 -0
- data/test/functional/cms_admin/files_controller_test.rb +216 -0
- data/test/functional/cms_admin/layouts_controller_test.rb +123 -0
- data/test/functional/cms_admin/pages_controller_test.rb +450 -0
- data/test/functional/cms_admin/revisions_controller_test.rb +138 -0
- data/test/functional/cms_admin/sites_controller_test.rb +105 -0
- data/test/functional/cms_admin/snippets_controller_test.rb +140 -0
- data/test/functional/cms_content_controller_test.rb +205 -0
- data/test/gemfiles/Gemfile.rails.3.1 +16 -0
- data/test/gemfiles/Gemfile.rails.3.2 +16 -0
- data/test/gemfiles/Gemfile.rails.4.0 +16 -0
- data/test/integration/authentication_test.rb +48 -0
- data/test/integration/fixtures_test.rb +61 -0
- data/test/integration/mirrors_test.rb +72 -0
- data/test/integration/render_cms_test.rb +233 -0
- data/test/integration/sites_test.rb +120 -0
- data/test/integration/view_hooks_test.rb +43 -0
- data/test/test_helper.rb +124 -0
- data/test/unit/cms/menu_item_test.rb +7 -0
- data/test/unit/cms/menu_test.rb +7 -0
- data/test/unit/configuration_test.rb +42 -0
- data/test/unit/fixtures_test.rb +357 -0
- data/test/unit/mirrors_test.rb +242 -0
- data/test/unit/models/block_test.rb +199 -0
- data/test/unit/models/categorization_test.rb +76 -0
- data/test/unit/models/category_test.rb +39 -0
- data/test/unit/models/file_test.rb +89 -0
- data/test/unit/models/layout_test.rb +125 -0
- data/test/unit/models/page_test.rb +255 -0
- data/test/unit/models/site_test.rb +152 -0
- data/test/unit/models/snippet_test.rb +49 -0
- data/test/unit/revisions_test.rb +185 -0
- data/test/unit/sitemap_test.rb +20 -0
- data/test/unit/tag_test.rb +308 -0
- data/test/unit/tags/asset_test.rb +56 -0
- data/test/unit/tags/collection_test.rb +116 -0
- data/test/unit/tags/field_datetime_test.rb +50 -0
- data/test/unit/tags/field_integer_test.rb +49 -0
- data/test/unit/tags/field_rich_text_test.rb +49 -0
- data/test/unit/tags/field_string_test.rb +52 -0
- data/test/unit/tags/field_text_test.rb +48 -0
- data/test/unit/tags/file_test.rb +67 -0
- data/test/unit/tags/helper_test.rb +86 -0
- data/test/unit/tags/page_datetime_test.rb +50 -0
- data/test/unit/tags/page_file_test.rb +119 -0
- data/test/unit/tags/page_files_test.rb +113 -0
- data/test/unit/tags/page_integer_test.rb +49 -0
- data/test/unit/tags/page_markdown_test.rb +48 -0
- data/test/unit/tags/page_rich_text_test.rb +49 -0
- data/test/unit/tags/page_string_test.rb +49 -0
- data/test/unit/tags/page_text_test.rb +52 -0
- data/test/unit/tags/partial_test.rb +76 -0
- data/test/unit/tags/snippet_test.rb +45 -0
- data/test/unit/view_methods_test.rb +80 -0
- metadata +457 -0
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
require File.expand_path('../test_helper', File.dirname(__FILE__))
|
|
2
|
+
|
|
3
|
+
class RenderCmsTest < ActionDispatch::IntegrationTest
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
super
|
|
7
|
+
Rails.application.routes.draw do
|
|
8
|
+
get '/render-basic' => 'render_test#render_basic'
|
|
9
|
+
get '/render-page' => 'render_test#render_page'
|
|
10
|
+
get '/render-layout' => 'render_test#render_layout'
|
|
11
|
+
end
|
|
12
|
+
cms_layouts(:default).update_column(:content, '{{cms:page:content}}')
|
|
13
|
+
cms_pages(:child).update_attributes(:blocks_attributes => [
|
|
14
|
+
{ :identifier => 'content', :content => 'TestBlockContent' }
|
|
15
|
+
])
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def teardown
|
|
19
|
+
Rails.application.reload_routes!
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def create_site_b
|
|
23
|
+
site = Cms::Site.create!(
|
|
24
|
+
:identifier => 'site-b',
|
|
25
|
+
:hostname => 'site-b.test')
|
|
26
|
+
layout = site.layouts.create!(
|
|
27
|
+
:identifier => 'default',
|
|
28
|
+
:content => 'site-b {{cms:page:content}}')
|
|
29
|
+
page = site.pages.create!(
|
|
30
|
+
:label => 'default',
|
|
31
|
+
:layout => layout,
|
|
32
|
+
:blocks_attributes => [{ :identifier => 'content', :content => 'SiteBContent' }])
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
class ::RenderTestController < ApplicationController
|
|
36
|
+
append_view_path(File.expand_path('../fixtures/views', File.dirname(__FILE__)))
|
|
37
|
+
|
|
38
|
+
def render_basic
|
|
39
|
+
case params[:type]
|
|
40
|
+
when 'text'
|
|
41
|
+
render :text => 'TestText'
|
|
42
|
+
when 'update'
|
|
43
|
+
render :update do |page|
|
|
44
|
+
page.alert('rendered text')
|
|
45
|
+
end
|
|
46
|
+
else
|
|
47
|
+
render
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def render_page
|
|
52
|
+
case params[:type]
|
|
53
|
+
when 'page_implicit'
|
|
54
|
+
render
|
|
55
|
+
when 'page_explicit'
|
|
56
|
+
render :cms_page => '/test-page'
|
|
57
|
+
when 'page_explicit_with_status'
|
|
58
|
+
render :cms_page => '/test-page', :status => 404
|
|
59
|
+
when 'page_explicit_with_site'
|
|
60
|
+
render :cms_page => '/', :cms_site => 'site-b'
|
|
61
|
+
else
|
|
62
|
+
raise 'Invalid or no param[:type] provided'
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def render_layout
|
|
67
|
+
@test_value = 'TestValue'
|
|
68
|
+
case params[:type]
|
|
69
|
+
when 'layout_defaults'
|
|
70
|
+
render :cms_layout => 'default'
|
|
71
|
+
when 'layout'
|
|
72
|
+
render :cms_layout => 'default', :cms_blocks => {
|
|
73
|
+
:content => 'TestText',
|
|
74
|
+
:content_b => { :partial => 'render_test/test' },
|
|
75
|
+
:content_c => { :template => 'render_test/render_layout' }
|
|
76
|
+
}
|
|
77
|
+
when 'layout_with_status'
|
|
78
|
+
render :cms_layout => 'default', :status => 404
|
|
79
|
+
when 'layout_invalid'
|
|
80
|
+
render :cms_layout => 'invalid'
|
|
81
|
+
when 'layout_defaults_with_site'
|
|
82
|
+
render :cms_layout => 'default', :cms_site => 'site-b'
|
|
83
|
+
when 'layout_with_action'
|
|
84
|
+
render :cms_layout => 'default', :action => :new
|
|
85
|
+
else
|
|
86
|
+
raise 'Invalid or no param[:type] provided'
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def new
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
# -- Basic Render Tests ---------------------------------------------------
|
|
95
|
+
def test_text
|
|
96
|
+
get '/render-basic?type=text'
|
|
97
|
+
assert_response :success
|
|
98
|
+
assert_equal 'TestText', response.body
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def test_update
|
|
102
|
+
return 'Not supported in >= 3.1' if Rails::VERSION::MAJOR == 3 && Rails::VERSION::MINOR >= 1
|
|
103
|
+
get '/render-basic?type=update'
|
|
104
|
+
assert_response :success
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
def test_implicit_cms_page_failure
|
|
108
|
+
assert_exception_raised ActionView::MissingTemplate do
|
|
109
|
+
get '/render-basic'
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
# -- Page Render Test -----------------------------------------------------
|
|
114
|
+
def test_implicit_cms_page
|
|
115
|
+
page = cms_pages(:child)
|
|
116
|
+
page.update_attributes(:slug => 'render-basic')
|
|
117
|
+
get '/render-basic?type=page_implicit'
|
|
118
|
+
assert_response :success
|
|
119
|
+
assert assigns(:cms_site)
|
|
120
|
+
assert assigns(:cms_layout)
|
|
121
|
+
assert assigns(:cms_page)
|
|
122
|
+
assert_equal page, assigns(:cms_page)
|
|
123
|
+
assert_equal 'TestBlockContent', response.body
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
def test_explicit_cms_page
|
|
127
|
+
page = cms_pages(:child)
|
|
128
|
+
page.update_attributes(slug: 'test-page')
|
|
129
|
+
get '/render-page?type=page_explicit'
|
|
130
|
+
assert_response :success
|
|
131
|
+
assert assigns(:cms_site)
|
|
132
|
+
assert assigns(:cms_layout)
|
|
133
|
+
assert assigns(:cms_page)
|
|
134
|
+
assert_equal page, assigns(:cms_page)
|
|
135
|
+
assert_equal 'TestBlockContent', response.body
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
def test_explicit_cms_page_with_status
|
|
139
|
+
page = cms_pages(:child)
|
|
140
|
+
page.update_attributes(:slug => 'test-page')
|
|
141
|
+
get '/render-page?type=page_explicit_with_status'
|
|
142
|
+
assert_response 404
|
|
143
|
+
assert assigns(:cms_site)
|
|
144
|
+
assert assigns(:cms_layout)
|
|
145
|
+
assert assigns(:cms_page)
|
|
146
|
+
assert_equal page, assigns(:cms_page)
|
|
147
|
+
assert_equal 'TestBlockContent', response.body
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
def test_explicit_cms_page_failure
|
|
151
|
+
page = cms_pages(:child)
|
|
152
|
+
page.update_attributes(:slug => 'invalid')
|
|
153
|
+
assert_exception_raised ComfyPress::MissingPage do
|
|
154
|
+
get '/render-page?type=page_explicit'
|
|
155
|
+
end
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
def test_explicit_with_site
|
|
159
|
+
create_site_b
|
|
160
|
+
get '/render-page?type=page_explicit_with_site'
|
|
161
|
+
assert_response :success
|
|
162
|
+
assert assigns(:cms_site)
|
|
163
|
+
assert_equal 'site-b', assigns(:cms_site).identifier
|
|
164
|
+
assert_equal 'site-b SiteBContent', response.body
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
def test_explicit_with_site_failure
|
|
168
|
+
assert_exception_raised ComfyPress::MissingSite do
|
|
169
|
+
get '/render-page?type=page_explicit_with_site'
|
|
170
|
+
end
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
# -- Layout Render Tests --------------------------------------------------
|
|
174
|
+
def test_cms_layout_defaults
|
|
175
|
+
get '/render-layout?type=layout_defaults'
|
|
176
|
+
assert_response :success
|
|
177
|
+
assert_equal 'TestTemplate TestValue', response.body
|
|
178
|
+
assert assigns(:cms_site)
|
|
179
|
+
assert assigns(:cms_layout)
|
|
180
|
+
assert_equal cms_layouts(:default), assigns(:cms_layout)
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
def test_cms_layout
|
|
184
|
+
cms_layouts(:default).update_column(:content, '{{cms:page:content}} {{cms:page:content_b}} {{cms:page:content_c}}')
|
|
185
|
+
get '/render-layout?type=layout'
|
|
186
|
+
assert_response :success
|
|
187
|
+
assert_equal 'TestText TestPartial TestValue TestTemplate TestValue', response.body
|
|
188
|
+
assert assigns(:cms_site)
|
|
189
|
+
assert assigns(:cms_layout)
|
|
190
|
+
assert_equal cms_layouts(:default), assigns(:cms_layout)
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
def test_cms_layout_with_status
|
|
194
|
+
get '/render-layout?type=layout_with_status'
|
|
195
|
+
assert_response 404
|
|
196
|
+
assert_equal 'TestTemplate TestValue', response.body
|
|
197
|
+
assert assigns(:cms_site)
|
|
198
|
+
assert assigns(:cms_layout)
|
|
199
|
+
assert_equal cms_layouts(:default), assigns(:cms_layout)
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
def test_cms_layout_with_action
|
|
203
|
+
cms_layouts(:default).update_column(:content, '{{cms:page:content}} {{cms:page:content_b}} {{cms:page:content_c}}')
|
|
204
|
+
get '/render-layout?type=layout_with_action'
|
|
205
|
+
assert_response :success
|
|
206
|
+
assert_equal "Can render CMS layout and specify action\n ", response.body
|
|
207
|
+
assert assigns(:cms_site)
|
|
208
|
+
assert assigns(:cms_layout)
|
|
209
|
+
assert_equal cms_layouts(:default), assigns(:cms_layout)
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
def test_cms_layout_failure
|
|
213
|
+
assert_exception_raised ComfyPress::MissingLayout do
|
|
214
|
+
get '/render-layout?type=layout_invalid'
|
|
215
|
+
end
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
def test_cms_layout_defaults_with_site
|
|
219
|
+
create_site_b
|
|
220
|
+
get '/render-layout?type=layout_defaults_with_site'
|
|
221
|
+
assert_response :success
|
|
222
|
+
assert assigns(:cms_site)
|
|
223
|
+
assert_equal 'site-b', assigns(:cms_site).identifier
|
|
224
|
+
assert_equal 'site-b TestTemplate TestValue', response.body
|
|
225
|
+
end
|
|
226
|
+
|
|
227
|
+
def test_cms_layout_defaults_with_site_failure
|
|
228
|
+
assert_exception_raised ComfyPress::MissingSite do
|
|
229
|
+
get '/render-layout?type=layout_defaults_with_site'
|
|
230
|
+
end
|
|
231
|
+
end
|
|
232
|
+
|
|
233
|
+
end
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
require File.expand_path('../test_helper', File.dirname(__FILE__))
|
|
2
|
+
|
|
3
|
+
class SitesTest < ActionDispatch::IntegrationTest
|
|
4
|
+
|
|
5
|
+
def test_get_admin_with_single_site
|
|
6
|
+
http_auth :get, cms_admin_path
|
|
7
|
+
assert assigns(:site)
|
|
8
|
+
assert_equal cms_sites(:default), assigns(:site)
|
|
9
|
+
assert_response :redirect
|
|
10
|
+
assert_redirected_to cms_admin_site_pages_path(assigns(:site))
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def test_get_admin_with_no_site
|
|
14
|
+
Cms::Site.delete_all
|
|
15
|
+
http_auth :get, cms_admin_path
|
|
16
|
+
assert_response :redirect
|
|
17
|
+
assert_redirected_to new_cms_admin_site_path
|
|
18
|
+
assert_equal 'Site not found', flash[:error]
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def test_get_public_page_with_single_site
|
|
22
|
+
host! 'bogus.host'
|
|
23
|
+
get '/'
|
|
24
|
+
assert_response :success
|
|
25
|
+
assert assigns(:cms_site)
|
|
26
|
+
assert_equal 'test.host', assigns(:cms_site).hostname
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def test_get_public_page_with_sites_with_different_paths
|
|
30
|
+
Cms::Site.delete_all
|
|
31
|
+
site_a = Cms::Site.create!(:identifier => 'site-a', :hostname => 'test.host', :path => '')
|
|
32
|
+
site_b = Cms::Site.create!(:identifier => 'site-b', :hostname => 'test.host', :path => 'path-b')
|
|
33
|
+
site_c = Cms::Site.create!(:identifier => 'site-c', :hostname => 'test.host', :path => 'path-c/child')
|
|
34
|
+
|
|
35
|
+
[site_a, site_b, site_c].each do |site|
|
|
36
|
+
layout = site.layouts.create!(:identifier => 'test')
|
|
37
|
+
site.pages.create!(:label => 'index', :layout => layout)
|
|
38
|
+
site.pages.create!(:label => '404', :slug => '404', :layout => layout)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
%w(/ /path-a /path-a/child /path-c).each do |path|
|
|
42
|
+
get path
|
|
43
|
+
assert assigns(:cms_site), path
|
|
44
|
+
assert_equal site_a, assigns(:cms_site)
|
|
45
|
+
assert_equal path.gsub(/^\//, ''), @controller.params[:cms_path].to_s
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
%w(/path-b /path-b/child).each do |path|
|
|
49
|
+
get path
|
|
50
|
+
assert assigns(:cms_site), path
|
|
51
|
+
assert_equal site_b, assigns(:cms_site)
|
|
52
|
+
assert_equal path.gsub(/^\/path-b/, '').gsub(/^\//, ''), @controller.params[:cms_path].to_s
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
%w(/path-c/child /path-c/child/child).each do |path|
|
|
56
|
+
get path
|
|
57
|
+
assert assigns(:cms_site), path
|
|
58
|
+
assert_equal site_c, assigns(:cms_site)
|
|
59
|
+
assert_equal path.gsub(/^\/path-c\/child/, '').gsub(/^\//, ''), @controller.params[:cms_path].to_s
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def test_get_public_page_with_host_with_port
|
|
64
|
+
Cms::Site.delete_all
|
|
65
|
+
site_a = Cms::Site.create!(:identifier => 'site-a', :hostname => 'test.host:3000')
|
|
66
|
+
site_b = Cms::Site.create!(:identifier => 'site-b', :hostname => 'test.host')
|
|
67
|
+
|
|
68
|
+
[site_a, site_b].each do |site|
|
|
69
|
+
layout = site.layouts.create!(:identifier => 'test')
|
|
70
|
+
site.pages.create!(:label => 'index', :layout => layout)
|
|
71
|
+
site.pages.create!(:label => '404', :slug => '404', :layout => layout)
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
get '/'
|
|
75
|
+
assert assigns(:cms_site)
|
|
76
|
+
assert_equal site_b, assigns(:cms_site)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def test_get_public_with_locale
|
|
80
|
+
get '/'
|
|
81
|
+
assert_response :success
|
|
82
|
+
assert assigns(:cms_site)
|
|
83
|
+
assert_equal :en, I18n.locale
|
|
84
|
+
|
|
85
|
+
cms_sites(:default).update_column(:locale, 'fr')
|
|
86
|
+
get '/'
|
|
87
|
+
assert_response :success
|
|
88
|
+
assert assigns(:cms_site)
|
|
89
|
+
assert_equal :fr, I18n.locale
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def test_get_admin_with_locale
|
|
93
|
+
http_auth :get, cms_admin_site_pages_path(cms_sites(:default))
|
|
94
|
+
assert_response :success
|
|
95
|
+
assert_equal :en, I18n.locale
|
|
96
|
+
|
|
97
|
+
cms_sites(:default).update_column(:locale, 'fr')
|
|
98
|
+
http_auth :get, cms_admin_site_pages_path(cms_sites(:default))
|
|
99
|
+
assert_response :success
|
|
100
|
+
assert_equal :fr, I18n.locale
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def test_get_admin_with_forced_locale
|
|
104
|
+
ComfyPress.config.admin_locale = :en
|
|
105
|
+
|
|
106
|
+
cms_sites(:default).update_column(:locale, 'fr')
|
|
107
|
+
http_auth :get, cms_admin_site_pages_path(cms_sites(:default))
|
|
108
|
+
assert_response :success
|
|
109
|
+
assert_equal :en, I18n.locale
|
|
110
|
+
|
|
111
|
+
I18n.default_locale = :fr
|
|
112
|
+
I18n.locale = :fr
|
|
113
|
+
http_auth :get, cms_admin_sites_path()
|
|
114
|
+
assert_response :success
|
|
115
|
+
assert_equal :en, I18n.locale
|
|
116
|
+
|
|
117
|
+
I18n.default_locale = :en
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
require File.expand_path('../test_helper', File.dirname(__FILE__))
|
|
2
|
+
|
|
3
|
+
class ViewHooksTest < ActionDispatch::IntegrationTest
|
|
4
|
+
|
|
5
|
+
def test_hooks_rendering
|
|
6
|
+
CmsAdmin::SitesController.append_view_path(File.expand_path('../fixtures/views', File.dirname(__FILE__)))
|
|
7
|
+
ComfyPress::ViewHooks.add(:navigation, '/nav_hook')
|
|
8
|
+
|
|
9
|
+
http_auth :get, cms_admin_sites_path
|
|
10
|
+
assert_response :success
|
|
11
|
+
assert_match /hook_content/, response.body
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def test_hooks_rendering_with_multiples
|
|
15
|
+
CmsAdmin::SitesController.append_view_path(File.expand_path('../fixtures/views', File.dirname(__FILE__)))
|
|
16
|
+
ComfyPress::ViewHooks.add(:navigation, '/nav_hook')
|
|
17
|
+
ComfyPress::ViewHooks.add(:navigation, '/nav_hook_2')
|
|
18
|
+
|
|
19
|
+
http_auth :get, cms_admin_sites_path
|
|
20
|
+
assert_response :success
|
|
21
|
+
assert_match /hook_content/, response.body
|
|
22
|
+
assert_match /<hook_content_2>/, response.body
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def test_hooks_rendering_with_proper_order
|
|
26
|
+
CmsAdmin::SitesController.append_view_path(File.expand_path('../fixtures/views', File.dirname(__FILE__)))
|
|
27
|
+
ComfyPress::ViewHooks.add(:navigation, '/nav_hook_2', 0)
|
|
28
|
+
ComfyPress::ViewHooks.add(:navigation, '/nav_hook', 1)
|
|
29
|
+
|
|
30
|
+
http_auth :get, cms_admin_sites_path
|
|
31
|
+
assert_response :success
|
|
32
|
+
assert_match /<hook_content_2>hook_content/, response.body
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def test_hooks_rendering_with_no_hook
|
|
36
|
+
ComfyPress::ViewHooks.remove(:navigation)
|
|
37
|
+
|
|
38
|
+
http_auth :get, cms_admin_sites_path
|
|
39
|
+
assert_response :success
|
|
40
|
+
assert_no_match /hook_content/, response.body
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
end
|
data/test/test_helper.rb
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'coveralls'
|
|
4
|
+
Coveralls.wear!('rails')
|
|
5
|
+
|
|
6
|
+
ENV['RAILS_ENV'] = 'test'
|
|
7
|
+
require File.expand_path('../../config/environment', __FILE__)
|
|
8
|
+
require 'rails/test_help'
|
|
9
|
+
|
|
10
|
+
# No need to add cache-busters in test environment
|
|
11
|
+
Paperclip::Attachment.default_options[:use_timestamp] = false
|
|
12
|
+
|
|
13
|
+
class ActiveSupport::TestCase
|
|
14
|
+
fixtures :all
|
|
15
|
+
include ActionDispatch::TestProcess
|
|
16
|
+
|
|
17
|
+
def setup
|
|
18
|
+
reset_config
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# resetting default configuration
|
|
22
|
+
def reset_config
|
|
23
|
+
ComfyPress.configure do |config|
|
|
24
|
+
config.cms_title = 'ComfyPress CMS Engine'
|
|
25
|
+
config.admin_auth = 'ComfyPress::HttpAuth'
|
|
26
|
+
config.public_auth = 'ComfyPress::DummyAuth'
|
|
27
|
+
config.admin_route_redirect = ''
|
|
28
|
+
config.enable_fixtures = false
|
|
29
|
+
config.fixtures_path = File.expand_path('db/cms_fixtures', Rails.root)
|
|
30
|
+
config.revisions_limit = 25
|
|
31
|
+
config.locales = {
|
|
32
|
+
'en' => 'English',
|
|
33
|
+
'es' => 'Español',
|
|
34
|
+
'pt-BR' => 'Português Brasileiro',
|
|
35
|
+
'zh-CN' => '简体中文',
|
|
36
|
+
'ja' => '日本語'
|
|
37
|
+
}
|
|
38
|
+
config.admin_locale = nil
|
|
39
|
+
config.upload_file_options = { }
|
|
40
|
+
config.admin_cache_sweeper = nil
|
|
41
|
+
config.allow_irb = false
|
|
42
|
+
config.allowed_helpers = nil
|
|
43
|
+
config.allowed_partials = nil
|
|
44
|
+
config.hostname_aliases = nil
|
|
45
|
+
end
|
|
46
|
+
ComfyPress::HttpAuth.username = 'username'
|
|
47
|
+
ComfyPress::HttpAuth.password = 'password'
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# Example usage:
|
|
51
|
+
# assert_has_errors_on @record, :field_1, :field_2
|
|
52
|
+
def assert_has_errors_on(record, *fields)
|
|
53
|
+
unmatched = record.errors.keys - fields.flatten
|
|
54
|
+
assert unmatched.blank?, "#{record.class} has errors on '#{unmatched.join(', ')}'"
|
|
55
|
+
unmatched = fields.flatten - record.errors.keys
|
|
56
|
+
assert unmatched.blank?, "#{record.class} doesn't have errors on '#{unmatched.join(', ')}'"
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# Example usage:
|
|
60
|
+
# assert_exception_raised do ... end
|
|
61
|
+
# assert_exception_raised ActiveRecord::RecordInvalid do ... end
|
|
62
|
+
# assert_exception_raised Plugin::Error, 'error_message' do ... end
|
|
63
|
+
def assert_exception_raised(exception_class = nil, error_message = nil, &block)
|
|
64
|
+
exception_raised = nil
|
|
65
|
+
yield
|
|
66
|
+
rescue => exception_raised
|
|
67
|
+
ensure
|
|
68
|
+
if exception_raised
|
|
69
|
+
if exception_class
|
|
70
|
+
assert_equal exception_class, exception_raised.class, exception_raised.to_s
|
|
71
|
+
else
|
|
72
|
+
assert true
|
|
73
|
+
end
|
|
74
|
+
assert_equal error_message, exception_raised.to_s if error_message
|
|
75
|
+
else
|
|
76
|
+
flunk 'Exception was not raised'
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def assert_no_select(selector, value = nil)
|
|
81
|
+
assert_select(selector, :text => value, :count => 0)
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# Small method that allows for better formatting in tests
|
|
85
|
+
def rendered_content_formatter(string)
|
|
86
|
+
string.gsub(/^[ ]+/, '')
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
class ActionController::TestCase
|
|
92
|
+
def setup
|
|
93
|
+
@request.env['HTTP_AUTHORIZATION'] = "Basic #{Base64.encode64('username:password')}"
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
class ActionDispatch::IntegrationTest
|
|
98
|
+
|
|
99
|
+
def setup
|
|
100
|
+
host! 'test.host'
|
|
101
|
+
reset_config
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
# Attaching http_auth stuff with request. Example use:
|
|
105
|
+
# http_auth :get, '/cms-admin/pages'
|
|
106
|
+
def http_auth(method, path, options = {}, username = 'username', password = 'password')
|
|
107
|
+
send(method, path, options, {'HTTP_AUTHORIZATION' => "Basic #{Base64.encode64(username + ':' + password)}"})
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
# Injecting `update_column` for installs on Rails < 3.1
|
|
113
|
+
module ComfyPress
|
|
114
|
+
module Deprication
|
|
115
|
+
module ActiveRecord
|
|
116
|
+
def update_column(name, value)
|
|
117
|
+
update_attribute(name, value)
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
unless Cms::Page.new.respond_to?(:update_column)
|
|
123
|
+
ActiveRecord::Base.send :include, ComfyPress::Deprication::ActiveRecord
|
|
124
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require File.expand_path('../test_helper', File.dirname(__FILE__))
|
|
4
|
+
|
|
5
|
+
class ConfigurationTest < ActiveSupport::TestCase
|
|
6
|
+
|
|
7
|
+
def test_configuration_presence
|
|
8
|
+
assert config = ComfyPress.configuration
|
|
9
|
+
assert_equal 'ComfyPress CMS Engine', config.cms_title
|
|
10
|
+
assert_equal 'ComfyPress::HttpAuth', config.admin_auth
|
|
11
|
+
assert_equal 'ComfyPress::DummyAuth', config.public_auth
|
|
12
|
+
assert_equal '', config.admin_route_redirect
|
|
13
|
+
assert_equal false, config.enable_fixtures
|
|
14
|
+
assert_equal File.expand_path('db/cms_fixtures', Rails.root), config.fixtures_path
|
|
15
|
+
assert_equal 25, config.revisions_limit
|
|
16
|
+
assert_equal ({
|
|
17
|
+
'en' => 'English',
|
|
18
|
+
'es' => 'Español',
|
|
19
|
+
'pt-BR' => 'Português Brasileiro',
|
|
20
|
+
'zh-CN' => '简体中文',
|
|
21
|
+
'ja' => '日本語'
|
|
22
|
+
}), config.locales
|
|
23
|
+
assert_equal nil, config.admin_locale
|
|
24
|
+
assert_equal nil, config.database_config
|
|
25
|
+
assert_equal ({}), config.upload_file_options
|
|
26
|
+
assert_equal nil, config.admin_cache_sweeper
|
|
27
|
+
assert_equal false, config.allow_irb
|
|
28
|
+
assert_equal nil, config.allowed_helpers
|
|
29
|
+
assert_equal nil, config.allowed_partials
|
|
30
|
+
assert_equal nil, config.hostname_aliases
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def test_initialization_overrides
|
|
34
|
+
ComfyPress.configuration.cms_title = 'New Title'
|
|
35
|
+
assert_equal 'New Title', ComfyPress.configuration.cms_title
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def test_version
|
|
39
|
+
assert ComfyPress::VERSION
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
end
|