comfortable_mexican_sofa 1.0.10 → 1.0.11
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +34 -27
- data/VERSION +1 -1
- data/app/controllers/cms_admin/layouts_controller.rb +1 -0
- data/app/controllers/cms_admin/pages_controller.rb +1 -0
- data/app/controllers/cms_admin/sites_controller.rb +1 -0
- data/app/controllers/cms_admin/snippets_controller.rb +1 -0
- data/app/models/cms_layout.rb +14 -1
- data/app/models/cms_page.rb +2 -1
- data/app/views/cms_admin/layouts/_form.html.erb +6 -2
- data/app/views/cms_admin/pages/_form.html.erb +12 -4
- data/comfortable_mexican_sofa.gemspec +2 -2
- data/config/initializers/comfortable_mexican_sofa.rb +1 -2
- data/lib/comfortable_mexican_sofa/cms_tag.rb +3 -3
- data/lib/comfortable_mexican_sofa/cms_tag/field_datetime.rb +1 -1
- data/lib/comfortable_mexican_sofa/cms_tag/field_integer.rb +1 -1
- data/lib/comfortable_mexican_sofa/cms_tag/field_string.rb +1 -1
- data/lib/comfortable_mexican_sofa/cms_tag/field_text.rb +1 -1
- data/lib/comfortable_mexican_sofa/cms_tag/helper.rb +1 -1
- data/lib/comfortable_mexican_sofa/cms_tag/page_datetime.rb +1 -1
- data/lib/comfortable_mexican_sofa/cms_tag/page_integer.rb +1 -1
- data/lib/comfortable_mexican_sofa/cms_tag/page_string.rb +1 -1
- data/lib/comfortable_mexican_sofa/cms_tag/page_text.rb +1 -1
- data/lib/comfortable_mexican_sofa/cms_tag/partial.rb +1 -1
- data/lib/comfortable_mexican_sofa/cms_tag/snippet.rb +1 -1
- data/test/cms_seeds/test.host/layouts/default.yml +1 -1
- data/test/cms_seeds/test.host/layouts/nested.yml +1 -1
- data/test/cms_seeds/test.host/pages/child/subchild.yml +1 -1
- data/test/fixtures/cms_blocks.yml +1 -1
- data/test/fixtures/cms_layouts.yml +7 -7
- data/test/functional/cms_admin/layouts_controller_test.rb +10 -3
- data/test/functional/cms_admin/pages_controller_test.rb +15 -8
- data/test/functional/cms_admin/sites_controller_test.rb +7 -0
- data/test/functional/cms_admin/snippets_controller_test.rb +7 -0
- data/test/integration/sites_test.rb +0 -6
- data/test/unit/cms_layout_test.rb +29 -7
- data/test/unit/cms_tag_test.rb +15 -15
- data/test/unit/cms_tags/field_datetime_test.rb +7 -7
- data/test/unit/cms_tags/field_integer_test.rb +7 -7
- data/test/unit/cms_tags/field_string_test.rb +7 -7
- data/test/unit/cms_tags/field_text_test.rb +6 -6
- data/test/unit/cms_tags/helper_test.rb +7 -7
- data/test/unit/cms_tags/page_datetime_test.rb +7 -7
- data/test/unit/cms_tags/page_integer_test.rb +7 -7
- data/test/unit/cms_tags/page_string_test.rb +7 -7
- data/test/unit/cms_tags/page_text_test.rb +7 -8
- data/test/unit/cms_tags/partial_test.rb +8 -8
- data/test/unit/cms_tags/snippet_test.rb +7 -7
- metadata +4 -4
data/README.md
CHANGED
@@ -3,17 +3,12 @@ Comfortable Mexican Sofa (CMS)
|
|
3
3
|
|
4
4
|
What is this?
|
5
5
|
-------------
|
6
|
-
|
6
|
+
ComfortableMexicanSofa is a micro CMS implemented as a Rails 3.* engine. This CMS is not a full-blown application like RadiantCMS. It's more like the ComatoseCMS, only more modern and infinitely more powerful and flexible. ComfortableMexicanSofa can function as a stand-alone installation, but it's designed to be used as an extension to your Rails application. If you have any (static) content that needs to be managed this CMS will handle it.
|
7
|
+
|
8
|
+
This CMS also allows high level of integration. You can easily use page content anywhere within your app, and even use page content as renderable templates from inside your controllers. You may also reuse CMS's admin interface for your own admin backend.
|
7
9
|
|
8
10
|
Installation
|
9
11
|
------------
|
10
|
-
|
11
|
-
### Stand-alone
|
12
|
-
TODO: Need to create some sort of setup, so you can simply run:
|
13
|
-
|
14
|
-
$ comfortable_mexican_sofa my_new_app
|
15
|
-
|
16
|
-
### As a Rails Engine
|
17
12
|
Add gem definition to your Gemfile:
|
18
13
|
|
19
14
|
config.gem 'comfortable_mexican_sofa'
|
@@ -31,13 +26,12 @@ At this point you should have database structure created, some assets copied to
|
|
31
26
|
config.authentication = 'ComfortableMexicanSofa::HttpAuth'
|
32
27
|
end
|
33
28
|
|
34
|
-
# Credentials for
|
29
|
+
# Credentials for HttpAuth
|
35
30
|
ComfortableMexicanSofa::HttpAuth.username = 'username'
|
36
31
|
ComfortableMexicanSofa::HttpAuth.password = 'password'
|
37
32
|
|
38
33
|
Usage
|
39
34
|
-----
|
40
|
-
|
41
35
|
Now you should be able to navigate to http://yoursite/cms-admin
|
42
36
|
|
43
37
|
### Step 1: Create Site
|
@@ -49,33 +43,46 @@ Before creating pages and populating them with content we need to create a layou
|
|
49
43
|
<html>
|
50
44
|
<body>
|
51
45
|
<h1>My Awesome Site</h1>
|
52
|
-
|
46
|
+
{{ cms:page:content }}
|
53
47
|
</body>
|
54
48
|
</html>
|
55
49
|
|
56
|
-
So there's your layout and the
|
50
|
+
So there's your layout and the `{{cms:page:content}}` defines a place where renderable `content` will go. There's just a handful of tags that you can use.
|
57
51
|
|
58
|
-
|
52
|
+
#### Page Blocks
|
53
|
+
pieces of content that will be output on the page:
|
59
54
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
55
|
+
{{ cms:page:some_label:text }} # will render a text area during page creation
|
56
|
+
# alternatively you may use: {{ cms:page:some_label }}
|
57
|
+
{{ cms:page:some_label:string }} # will render a text field during page creation
|
58
|
+
{{ cms:page:some_label:datetime }} # datetime select widget
|
59
|
+
{{ cms:page:some_label:integer }} # a number field
|
60
|
+
|
61
|
+
#### Page Fields
|
62
|
+
pieces of content that are not rendered. They are useful for hidden values you want to use inside your app. `@cms_page` instance variable is available when you need to access field values.
|
63
|
+
|
64
|
+
{{ cms:field:some_label:text }} # text area for the page creation form
|
65
|
+
{{ cms:field:some_label:string }} # same as {{ cms:field:some_label }}, this is a text field
|
66
|
+
{{ cms:field:some_label:datetime }} # datetime
|
67
|
+
{{ cms:field:some_label:integer }} # a number field
|
68
|
+
|
69
|
+
#### Snippets
|
70
|
+
bits of reusable content that can be used in pages and layouts
|
64
71
|
|
65
|
-
|
72
|
+
{{ cms:snippet:snippet_slug }}
|
66
73
|
|
67
|
-
|
68
|
-
|
69
|
-
<cms:field:some_label:datetime> # datetime
|
70
|
-
<cms:field:some_label:integer> # a number field
|
74
|
+
#### Helpers
|
75
|
+
are tags that map to your view helpers methods
|
71
76
|
|
72
|
-
|
73
|
-
|
74
|
-
<cms:snippet:snippet_slug>
|
77
|
+
{{ cms:helper:method_name }} # gets translated to <%= method_name( ) %>
|
78
|
+
{{ cms:helper:method_name:x:y:z }} # gets translated to <%= method_name('x', 'y', 'z') %>
|
75
79
|
|
76
|
-
|
80
|
+
#### Partials
|
81
|
+
are exactly that. You don't want to do IRB inside CMS so there's a handy tag:
|
77
82
|
|
78
|
-
|
83
|
+
{{ cms:partial:path/to/partial }} # gets translated to <%= render :partial => 'path/to/partial' %>
|
84
|
+
{{ cms:partial:path/to/partial:x:y }} # gets translated to <%= render :partial => 'path/to/partial',
|
85
|
+
# :locals => { :param_1 => 'x', :param_2 => 'y'} %>
|
79
86
|
|
80
87
|
You don't have to define entire html layout, however. You can simply re-use your application one. Page content will be yielded into it like any normal view.
|
81
88
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.11
|
@@ -4,6 +4,7 @@ class CmsAdmin::LayoutsController < CmsAdmin::BaseController
|
|
4
4
|
before_filter :load_cms_layout, :only => [:edit, :update, :destroy]
|
5
5
|
|
6
6
|
def index
|
7
|
+
return redirect_to :action => :new if @cms_site.cms_layouts.count == 0
|
7
8
|
@cms_layouts = @cms_site.cms_layouts.roots
|
8
9
|
end
|
9
10
|
|
@@ -4,6 +4,7 @@ class CmsAdmin::PagesController < CmsAdmin::BaseController
|
|
4
4
|
before_filter :load_cms_page, :only => [:edit, :update, :destroy]
|
5
5
|
|
6
6
|
def index
|
7
|
+
return redirect_to :action => :new if @cms_site.cms_pages.count == 0
|
7
8
|
@cms_pages = [@cms_site.cms_pages.root].compact
|
8
9
|
end
|
9
10
|
|
@@ -4,6 +4,7 @@ class CmsAdmin::SnippetsController < CmsAdmin::BaseController
|
|
4
4
|
before_filter :load_cms_snippet, :only => [:edit, :update, :destroy]
|
5
5
|
|
6
6
|
def index
|
7
|
+
return redirect_to :action => :new if @cms_site.cms_snippets.count == 0
|
7
8
|
@cms_snippets = @cms_site.cms_snippets.all(:order => 'label')
|
8
9
|
end
|
9
10
|
|
data/app/models/cms_layout.rb
CHANGED
@@ -18,6 +18,8 @@ class CmsLayout < ActiveRecord::Base
|
|
18
18
|
validates :content,
|
19
19
|
:presence => true
|
20
20
|
|
21
|
+
validate :content_tag_presence
|
22
|
+
|
21
23
|
# -- Class Methods --------------------------------------------------------
|
22
24
|
# Tree-like structure for layouts
|
23
25
|
def self.options_for_select(cms_site, cms_layout = nil, current_layout = nil, depth = 0, spacer = '. . ')
|
@@ -36,7 +38,8 @@ class CmsLayout < ActiveRecord::Base
|
|
36
38
|
def self.app_layouts_for_select
|
37
39
|
Dir.glob(File.expand_path('app/views/layouts/*.html.*', Rails.root)).collect do |filename|
|
38
40
|
match = filename.match(/\w*.html.\w*$/)
|
39
|
-
match && match[0]
|
41
|
+
app_layout = match && match[0]
|
42
|
+
app_layout.to_s[0...1] == '_' ? nil : app_layout
|
40
43
|
end.compact
|
41
44
|
end
|
42
45
|
|
@@ -71,4 +74,14 @@ class CmsLayout < ActiveRecord::Base
|
|
71
74
|
def merged_js
|
72
75
|
self.parent ? [self.parent.merged_js, self.js].join("\n") : self.js.to_s
|
73
76
|
end
|
77
|
+
|
78
|
+
protected
|
79
|
+
|
80
|
+
def content_tag_presence
|
81
|
+
CmsTag.process_content((test_page = CmsPage.new), content)
|
82
|
+
if test_page.cms_tags.select{|t| t.class.superclass == CmsBlock}.blank?
|
83
|
+
self.errors.add(:content, 'No cms page tags defined')
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
74
87
|
end
|
data/app/models/cms_page.rb
CHANGED
@@ -38,7 +38,8 @@ class CmsPage < ActiveRecord::Base
|
|
38
38
|
# Tree-like structure for pages
|
39
39
|
def self.options_for_select(cms_site, cms_page = nil, current_page = nil, depth = 0, exclude_self = true, spacer = '. . ')
|
40
40
|
return [] if (current_page ||= cms_site.cms_pages.root) == cms_page && exclude_self || !current_page
|
41
|
-
out = [
|
41
|
+
out = []
|
42
|
+
out << [ "#{spacer*depth}#{current_page.label}", current_page.id ] unless current_page == cms_page
|
42
43
|
current_page.children.each do |child|
|
43
44
|
out += options_for_select(cms_site, cms_page, child, depth + 1, exclude_self, spacer)
|
44
45
|
end
|
@@ -1,7 +1,11 @@
|
|
1
1
|
<%= form.text_field :label, :label => 'Layout Name', :id => (@cms_layout.new_record?? 'slugify' : nil)%>
|
2
2
|
<%= form.text_field :slug, :id => 'slug' %>
|
3
|
-
|
4
|
-
<%= form.select :
|
3
|
+
<% if (options = CmsLayout.options_for_select(@cms_site, @cms_layout)).present? %>
|
4
|
+
<%= form.select :parent_id, [['---- Select Parent Layout ----', nil]] + options %>
|
5
|
+
<% end %>
|
6
|
+
<% if (options = CmsLayout.app_layouts_for_select).present? %>
|
7
|
+
<%= form.select :app_layout, [['---- Select Application Layout ----', nil]] + options %>
|
8
|
+
<% end %>
|
5
9
|
<%= form.text_area :content %>
|
6
10
|
<%= form.text_area :css %>
|
7
11
|
<%= form.text_area :js %>
|
@@ -1,10 +1,18 @@
|
|
1
1
|
<%= form.text_field :label, :id => (@cms_page.new_record?? 'slugify' : nil) %>
|
2
2
|
|
3
3
|
<div class='page_form_extras'>
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
<% unless @cms_site.cms_pages.count == 0 || @cms_site.cms_pages.root == @cms_page%>
|
5
|
+
<%= form.text_field :slug, :id => 'slug' %>
|
6
|
+
<% end %>
|
7
|
+
<% if (options = CmsLayout.options_for_select(@cms_site)).present? %>
|
8
|
+
<%= form.select :cms_layout_id, options, {}, 'data-page-id' => @cms_page.id.to_i, :label => 'Layout' %>
|
9
|
+
<% end %>
|
10
|
+
<% if (options = CmsPage.options_for_select(@cms_site, @cms_page)).present? %>
|
11
|
+
<%= form.select :parent_id, options %>
|
12
|
+
<% end %>
|
13
|
+
<% if (options = CmsPage.options_for_select(@cms_site, @cms_page, nil, 0, false)).present? %>
|
14
|
+
<%= form.select :target_page_id, options, :include_blank => true, :label => 'Redirect To Page' %>
|
15
|
+
<% end %>
|
8
16
|
</div>
|
9
17
|
|
10
18
|
<%= render :partial => 'form_blocks' %>
|
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{comfortable_mexican_sofa}
|
8
|
-
s.version = "1.0.
|
8
|
+
s.version = "1.0.11"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Oleg Khabarov", "The Working Group Inc"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-11-01}
|
13
13
|
s.description = %q{}
|
14
14
|
s.email = %q{oleg@theworkinggroup.ca}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -1,10 +1,9 @@
|
|
1
1
|
# Comfortable Mexican Sofa initializer. Change defaults to whatever you require
|
2
|
-
|
3
2
|
ComfortableMexicanSofa.configure do |config|
|
4
3
|
config.cms_title = 'ComfortableMexicanSofa'
|
5
4
|
config.authentication = 'ComfortableMexicanSofa::HttpAuth'
|
6
5
|
end
|
7
6
|
|
8
|
-
# Credentials for
|
7
|
+
# Credentials for HttpAuth
|
9
8
|
ComfortableMexicanSofa::HttpAuth.username = 'username'
|
10
9
|
ComfortableMexicanSofa::HttpAuth.password = 'password'
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# end
|
7
7
|
module CmsTag
|
8
8
|
|
9
|
-
TOKENIZER_REGEX = /(\{\s*cms:.*?\})|((?:[^\{]|\{(?!\s*cms:.*?\}))+)/
|
9
|
+
TOKENIZER_REGEX = /(\{\{\s*cms:.*?\}\})|((?:[^\{\{]|\{\{(?!\s*cms:.*?\}\}))+)/
|
10
10
|
|
11
11
|
attr_accessor :params,
|
12
12
|
:parent
|
@@ -14,9 +14,9 @@ module CmsTag
|
|
14
14
|
module ClassMethods
|
15
15
|
# Regex that is used to match tags in the content
|
16
16
|
# Example:
|
17
|
-
# /\{\s*?cms:page:(\w+)\}/
|
17
|
+
# /\{\{\s*?cms:page:(\w+)\}\}/
|
18
18
|
# will match tags like these:
|
19
|
-
# {cms:page:my_label}
|
19
|
+
# {{cms:page:my_label}}
|
20
20
|
def regex_tag_signature
|
21
21
|
nil
|
22
22
|
end
|
@@ -1,2 +1,2 @@
|
|
1
1
|
label: Default Layout
|
2
|
-
content: <html>{cms:page:content}</html>
|
2
|
+
content: <html>{{cms:page:content}}</html>
|
@@ -4,11 +4,11 @@ default:
|
|
4
4
|
slug: default
|
5
5
|
parent:
|
6
6
|
content: |-
|
7
|
-
{cms:field:default_field_text:text}
|
7
|
+
{{cms:field:default_field_text:text}}
|
8
8
|
layout_content_a
|
9
|
-
{cms:page:default_page_text:text}
|
9
|
+
{{cms:page:default_page_text:text}}
|
10
10
|
layout_content_b
|
11
|
-
{cms:snippet:default}
|
11
|
+
{{cms:snippet:default}}
|
12
12
|
layout_content_c
|
13
13
|
css: default_css
|
14
14
|
js: default_js
|
@@ -19,8 +19,8 @@ nested:
|
|
19
19
|
slug: nested
|
20
20
|
parent:
|
21
21
|
content: |-
|
22
|
-
{cms:page:header}
|
23
|
-
{cms:page:content}
|
22
|
+
{{cms:page:header}}
|
23
|
+
{{cms:page:content}}
|
24
24
|
css: nested_css
|
25
25
|
js: nested_js
|
26
26
|
|
@@ -30,7 +30,7 @@ child:
|
|
30
30
|
slug: child
|
31
31
|
parent: nested
|
32
32
|
content: |-
|
33
|
-
{cms:page:left_column}
|
34
|
-
{cms:page:right_column}
|
33
|
+
{{cms:page:left_column}}
|
34
|
+
{{cms:page:right_column}}
|
35
35
|
css: child_css
|
36
36
|
js: child_js
|
@@ -9,6 +9,13 @@ class CmsAdmin::LayoutsControllerTest < ActionController::TestCase
|
|
9
9
|
assert_template :index
|
10
10
|
end
|
11
11
|
|
12
|
+
def test_get_index_with_no_layouts
|
13
|
+
CmsLayout.delete_all
|
14
|
+
get :index
|
15
|
+
assert_response :redirect
|
16
|
+
assert_redirected_to :action => :new
|
17
|
+
end
|
18
|
+
|
12
19
|
def test_get_new
|
13
20
|
get :new
|
14
21
|
assert_response :success
|
@@ -38,7 +45,7 @@ class CmsAdmin::LayoutsControllerTest < ActionController::TestCase
|
|
38
45
|
post :create, :cms_layout => {
|
39
46
|
:label => 'Test Layout',
|
40
47
|
:slug => 'test',
|
41
|
-
:content => 'Test
|
48
|
+
:content => 'Test {{cms:page:content}}'
|
42
49
|
}
|
43
50
|
assert_response :redirect
|
44
51
|
layout = CmsLayout.last
|
@@ -61,14 +68,14 @@ class CmsAdmin::LayoutsControllerTest < ActionController::TestCase
|
|
61
68
|
layout = cms_layouts(:default)
|
62
69
|
put :update, :id => layout, :cms_layout => {
|
63
70
|
:label => 'New Label',
|
64
|
-
:content => 'New
|
71
|
+
:content => 'New {{cms:page:content}}'
|
65
72
|
}
|
66
73
|
assert_response :redirect
|
67
74
|
assert_redirected_to :action => :edit, :id => layout
|
68
75
|
assert_equal 'Layout updated', flash[:notice]
|
69
76
|
layout.reload
|
70
77
|
assert_equal 'New Label', layout.label
|
71
|
-
assert_equal 'New
|
78
|
+
assert_equal 'New {{cms:page:content}}', layout.content
|
72
79
|
end
|
73
80
|
|
74
81
|
def test_update_failure
|
@@ -9,6 +9,13 @@ class CmsAdmin::PagesControllerTest < ActionController::TestCase
|
|
9
9
|
assert_template :index
|
10
10
|
end
|
11
11
|
|
12
|
+
def test_get_index_with_no_pages
|
13
|
+
CmsPage.delete_all
|
14
|
+
get :index
|
15
|
+
assert_response :redirect
|
16
|
+
assert_redirected_to :action => :new
|
17
|
+
end
|
18
|
+
|
12
19
|
def test_get_new
|
13
20
|
get :new
|
14
21
|
assert_response :success
|
@@ -20,7 +27,7 @@ class CmsAdmin::PagesControllerTest < ActionController::TestCase
|
|
20
27
|
end
|
21
28
|
|
22
29
|
def test_get_new_with_field_datetime
|
23
|
-
cms_layouts(:default).update_attribute(:content, '{cms:field:test_label:datetime}')
|
30
|
+
cms_layouts(:default).update_attribute(:content, '{{cms:field:test_label:datetime}}')
|
24
31
|
get :new
|
25
32
|
assert_select "input[type='datetime'][name='cms_page[cms_blocks_attributes][][content]']"
|
26
33
|
assert_select "input[type='hidden'][name='cms_page[cms_blocks_attributes][][label]'][value='test_label']"
|
@@ -28,7 +35,7 @@ class CmsAdmin::PagesControllerTest < ActionController::TestCase
|
|
28
35
|
end
|
29
36
|
|
30
37
|
def test_get_new_with_field_integer
|
31
|
-
cms_layouts(:default).update_attribute(:content, '{cms:field:test_label:integer}')
|
38
|
+
cms_layouts(:default).update_attribute(:content, '{{cms:field:test_label:integer}}')
|
32
39
|
get :new
|
33
40
|
assert_select "input[type='number'][name='cms_page[cms_blocks_attributes][][content]']"
|
34
41
|
assert_select "input[type='hidden'][name='cms_page[cms_blocks_attributes][][label]'][value='test_label']"
|
@@ -36,7 +43,7 @@ class CmsAdmin::PagesControllerTest < ActionController::TestCase
|
|
36
43
|
end
|
37
44
|
|
38
45
|
def test_get_new_with_field_string
|
39
|
-
cms_layouts(:default).update_attribute(:content, '{cms:field:test_label}')
|
46
|
+
cms_layouts(:default).update_attribute(:content, '{{cms:field:test_label}}')
|
40
47
|
get :new
|
41
48
|
assert_select "input[type='text'][name='cms_page[cms_blocks_attributes][][content]']"
|
42
49
|
assert_select "input[type='hidden'][name='cms_page[cms_blocks_attributes][][label]'][value='test_label']"
|
@@ -44,7 +51,7 @@ class CmsAdmin::PagesControllerTest < ActionController::TestCase
|
|
44
51
|
end
|
45
52
|
|
46
53
|
def test_get_new_with_field_text
|
47
|
-
cms_layouts(:default).update_attribute(:content, '{cms:field:test_label:text}')
|
54
|
+
cms_layouts(:default).update_attribute(:content, '{{cms:field:test_label:text}}')
|
48
55
|
get :new
|
49
56
|
assert_select "textarea[name='cms_page[cms_blocks_attributes][][content]']"
|
50
57
|
assert_select "input[type='hidden'][name='cms_page[cms_blocks_attributes][][label]'][value='test_label']"
|
@@ -52,7 +59,7 @@ class CmsAdmin::PagesControllerTest < ActionController::TestCase
|
|
52
59
|
end
|
53
60
|
|
54
61
|
def test_get_new_with_page_datetime
|
55
|
-
cms_layouts(:default).update_attribute(:content, '{cms:page:test_label:datetime}')
|
62
|
+
cms_layouts(:default).update_attribute(:content, '{{cms:page:test_label:datetime}}')
|
56
63
|
get :new
|
57
64
|
assert_select "input[type='datetime'][name='cms_page[cms_blocks_attributes][][content]']"
|
58
65
|
assert_select "input[type='hidden'][name='cms_page[cms_blocks_attributes][][label]'][value='test_label']"
|
@@ -60,7 +67,7 @@ class CmsAdmin::PagesControllerTest < ActionController::TestCase
|
|
60
67
|
end
|
61
68
|
|
62
69
|
def test_get_new_with_page_integer
|
63
|
-
cms_layouts(:default).update_attribute(:content, '{cms:page:test_label:integer}')
|
70
|
+
cms_layouts(:default).update_attribute(:content, '{{cms:page:test_label:integer}}')
|
64
71
|
get :new
|
65
72
|
assert_select "input[type='number'][name='cms_page[cms_blocks_attributes][][content]']"
|
66
73
|
assert_select "input[type='hidden'][name='cms_page[cms_blocks_attributes][][label]'][value='test_label']"
|
@@ -68,7 +75,7 @@ class CmsAdmin::PagesControllerTest < ActionController::TestCase
|
|
68
75
|
end
|
69
76
|
|
70
77
|
def test_get_new_with_page_string
|
71
|
-
cms_layouts(:default).update_attribute(:content, '{cms:page:test_label:string}')
|
78
|
+
cms_layouts(:default).update_attribute(:content, '{{cms:page:test_label:string}}')
|
72
79
|
get :new
|
73
80
|
assert_select "input[type='text'][name='cms_page[cms_blocks_attributes][][content]']"
|
74
81
|
assert_select "input[type='hidden'][name='cms_page[cms_blocks_attributes][][label]'][value='test_label']"
|
@@ -76,7 +83,7 @@ class CmsAdmin::PagesControllerTest < ActionController::TestCase
|
|
76
83
|
end
|
77
84
|
|
78
85
|
def test_get_new_with_page_text
|
79
|
-
cms_layouts(:default).update_attribute(:content, '{cms:page:test_label}')
|
86
|
+
cms_layouts(:default).update_attribute(:content, '{{cms:page:test_label}}')
|
80
87
|
get :new
|
81
88
|
assert_select "textarea[name='cms_page[cms_blocks_attributes][][content]']"
|
82
89
|
assert_select "input[type='hidden'][name='cms_page[cms_blocks_attributes][][label]'][value='test_label']"
|
@@ -9,6 +9,13 @@ class CmsAdmin::SitesControllerTest < ActionController::TestCase
|
|
9
9
|
assert_template :index
|
10
10
|
end
|
11
11
|
|
12
|
+
def test_get_index_with_no_sites
|
13
|
+
CmsSite.delete_all
|
14
|
+
get :index
|
15
|
+
assert_response :redirect
|
16
|
+
assert_redirected_to :action => :new
|
17
|
+
end
|
18
|
+
|
12
19
|
def test_get_new
|
13
20
|
get :new
|
14
21
|
assert_response :success
|
@@ -9,6 +9,13 @@ class CmsAdmin::SnippetsControllerTest < ActionController::TestCase
|
|
9
9
|
assert_template :index
|
10
10
|
end
|
11
11
|
|
12
|
+
def test_get_index_with_no_snippets
|
13
|
+
CmsSnippet.delete_all
|
14
|
+
get :index
|
15
|
+
assert_response :redirect
|
16
|
+
assert_redirected_to :action => :new
|
17
|
+
end
|
18
|
+
|
12
19
|
def test_get_new
|
13
20
|
get :new
|
14
21
|
assert_response :success
|
@@ -14,12 +14,6 @@ class SitesTest < ActionDispatch::IntegrationTest
|
|
14
14
|
assert_redirected_to new_cms_admin_site_path
|
15
15
|
end
|
16
16
|
|
17
|
-
def test_get_admin_sites_index_with_no_site
|
18
|
-
CmsSite.delete_all
|
19
|
-
http_auth :get, cms_admin_sites_path
|
20
|
-
assert_response :success
|
21
|
-
end
|
22
|
-
|
23
17
|
def test_get_public_page_for_non_existent_site
|
24
18
|
host! 'bogus.host'
|
25
19
|
get '/'
|
@@ -14,6 +14,28 @@ class CmsLayoutTest < ActiveSupport::TestCase
|
|
14
14
|
assert_has_errors_on layout, [:label, :slug, :content]
|
15
15
|
end
|
16
16
|
|
17
|
+
def test_validation_of_tag_presence
|
18
|
+
layout = CmsLayout.create(:content => 'some text')
|
19
|
+
assert_has_errors_on layout, :content
|
20
|
+
|
21
|
+
layout = CmsLayout.create(:content => '{cms:snippet:blah}')
|
22
|
+
assert_has_errors_on layout, :content
|
23
|
+
|
24
|
+
layout = cms_sites(:default).cms_layouts.new(
|
25
|
+
:label => 'test',
|
26
|
+
:slug => 'test',
|
27
|
+
:content => '{{cms:page:blah}}'
|
28
|
+
)
|
29
|
+
assert layout.valid?
|
30
|
+
|
31
|
+
layout = cms_sites(:default).cms_layouts.new(
|
32
|
+
:label => 'test',
|
33
|
+
:slug => 'test',
|
34
|
+
:content => '{{cms:field:blah}}'
|
35
|
+
)
|
36
|
+
assert layout.valid?
|
37
|
+
end
|
38
|
+
|
17
39
|
def test_options_for_select
|
18
40
|
assert_equal ['Default Layout', 'Nested Layout', '. . Child Layout'],
|
19
41
|
CmsLayout.options_for_select(cms_sites(:default)).collect{|t| t.first}
|
@@ -30,12 +52,12 @@ class CmsLayoutTest < ActiveSupport::TestCase
|
|
30
52
|
def test_merged_content
|
31
53
|
parent_layout = cms_layouts(:nested)
|
32
54
|
layout = cms_layouts(:child)
|
33
|
-
assert_equal "{cms:page:header}\n{cms:page:left_column}\n{cms:page:right_column}", layout.merged_content
|
34
|
-
assert_equal "{cms:page:left_column}\n{cms:page:right_column}", layout.content
|
55
|
+
assert_equal "{{cms:page:header}}\n{{cms:page:left_column}}\n{{cms:page:right_column}}", layout.merged_content
|
56
|
+
assert_equal "{{cms:page:left_column}}\n{{cms:page:right_column}}", layout.content
|
35
57
|
|
36
|
-
parent_layout.update_attribute(:content, '{cms:page:whatever}')
|
58
|
+
parent_layout.update_attribute(:content, '{{cms:page:whatever}}')
|
37
59
|
layout.reload
|
38
|
-
assert_equal "{cms:page:left_column}\n{cms:page:right_column}", layout.merged_content
|
60
|
+
assert_equal "{{cms:page:left_column}}\n{{cms:page:right_column}}", layout.merged_content
|
39
61
|
end
|
40
62
|
|
41
63
|
def test_merged_css
|
@@ -55,12 +77,12 @@ class CmsLayoutTest < ActiveSupport::TestCase
|
|
55
77
|
|
56
78
|
assert layout = CmsLayout.load_from_file(cms_sites(:default), 'default')
|
57
79
|
assert_equal 'Default Layout', layout.label
|
58
|
-
assert_equal '<html>{cms:page:content}</html>', layout.content
|
80
|
+
assert_equal '<html>{{cms:page:content}}</html>', layout.content
|
59
81
|
|
60
82
|
assert layout = CmsLayout.load_from_file(cms_sites(:default), 'nested')
|
61
83
|
assert_equal 'Nested Layout', layout.label
|
62
|
-
assert_equal '<div>{cms:page:content}</div>', layout.content
|
63
|
-
assert_equal '<html><div>{cms:page:content}</div></html>', layout.merged_content
|
84
|
+
assert_equal '<div>{{cms:page:content}}</div>', layout.content
|
85
|
+
assert_equal '<html><div>{{cms:page:content}}</div></html>', layout.merged_content
|
64
86
|
end
|
65
87
|
|
66
88
|
end
|
data/test/unit/cms_tag_test.rb
CHANGED
@@ -5,42 +5,42 @@ class CmsTagTest < ActiveSupport::TestCase
|
|
5
5
|
def test_tokenizer_regex
|
6
6
|
regex = CmsTag::TOKENIZER_REGEX
|
7
7
|
|
8
|
-
tokens = 'content<{cms:some_tag content'.scan(regex)
|
8
|
+
tokens = 'content<{{cms:some_tag content'.scan(regex)
|
9
9
|
assert_equal nil, tokens[0][0]
|
10
|
-
assert_equal 'content<{cms:some_tag content', tokens[0][1]
|
10
|
+
assert_equal 'content<{{cms:some_tag content', tokens[0][1]
|
11
11
|
|
12
|
-
tokens = 'content<{cms some_tag}>content'.scan(regex)
|
12
|
+
tokens = 'content<{{cms some_tag}}>content'.scan(regex)
|
13
13
|
assert_equal nil, tokens[0][0]
|
14
|
-
assert_equal 'content<{cms some_tag}>content', tokens[0][1]
|
14
|
+
assert_equal 'content<{{cms some_tag}}>content', tokens[0][1]
|
15
15
|
|
16
|
-
tokens = 'content<{cms:some_tag}>content'.scan(regex)
|
16
|
+
tokens = 'content<{{cms:some_tag}}>content'.scan(regex)
|
17
17
|
assert_equal nil, tokens[0][0]
|
18
18
|
assert_equal 'content<', tokens[0][1]
|
19
|
-
assert_equal '{cms:some_tag}',
|
19
|
+
assert_equal '{{cms:some_tag}}', tokens[1][0]
|
20
20
|
assert_equal nil, tokens[1][1]
|
21
21
|
assert_equal nil, tokens[2][0]
|
22
22
|
assert_equal '>content', tokens[2][1]
|
23
23
|
|
24
|
-
tokens = 'content<{cms:type:label}>content'.scan(regex)
|
24
|
+
tokens = 'content<{{cms:type:label}}>content'.scan(regex)
|
25
25
|
assert_equal nil, tokens[0][0]
|
26
26
|
assert_equal 'content<', tokens[0][1]
|
27
|
-
assert_equal '{cms:type:label}',
|
27
|
+
assert_equal '{{cms:type:label}}', tokens[1][0]
|
28
28
|
assert_equal nil, tokens[1][1]
|
29
29
|
assert_equal nil, tokens[2][0]
|
30
30
|
assert_equal '>content', tokens[2][1]
|
31
31
|
|
32
|
-
tokens = 'content<{cms:type:label }>content'.scan(regex)
|
32
|
+
tokens = 'content<{{cms:type:label }}>content'.scan(regex)
|
33
33
|
assert_equal nil, tokens[0][0]
|
34
34
|
assert_equal 'content<', tokens[0][1]
|
35
|
-
assert_equal '{cms:type:label }',
|
35
|
+
assert_equal '{{cms:type:label }}', tokens[1][0]
|
36
36
|
assert_equal nil, tokens[1][1]
|
37
37
|
assert_equal nil, tokens[2][0]
|
38
38
|
assert_equal '>content', tokens[2][1]
|
39
39
|
|
40
|
-
tokens = 'content<{ cms:type:la/b el }>content'.scan(regex)
|
40
|
+
tokens = 'content<{{ cms:type:la/b el }}>content'.scan(regex)
|
41
41
|
assert_equal nil, tokens[0][0]
|
42
42
|
assert_equal 'content<', tokens[0][1]
|
43
|
-
assert_equal '{ cms:type:la/b el }',
|
43
|
+
assert_equal '{{ cms:type:la/b el }}',tokens[1][0]
|
44
44
|
assert_equal nil, tokens[1][1]
|
45
45
|
assert_equal nil, tokens[2][0]
|
46
46
|
assert_equal '>content', tokens[2][1]
|
@@ -115,7 +115,7 @@ class CmsTagTest < ActiveSupport::TestCase
|
|
115
115
|
},
|
116
116
|
{
|
117
117
|
:label => 'default_page_text',
|
118
|
-
:content => "new_default_page_text_content\n{cms:snippet:default}",
|
118
|
+
:content => "new_default_page_text_content\n{{cms:snippet:default}}",
|
119
119
|
:type => 'CmsTag::PageText'
|
120
120
|
},
|
121
121
|
{
|
@@ -146,7 +146,7 @@ class CmsTagTest < ActiveSupport::TestCase
|
|
146
146
|
|
147
147
|
def test_content_with_repeated_tags
|
148
148
|
page = cms_pages(:default)
|
149
|
-
page.cms_layout.content << "\n{cms:page:default_page_text:text}"
|
149
|
+
page.cms_layout.content << "\n{{cms:page:default_page_text:text}}"
|
150
150
|
page.cms_layout.save!
|
151
151
|
|
152
152
|
assert_equal rendered_content_formatter(
|
@@ -177,7 +177,7 @@ class CmsTagTest < ActiveSupport::TestCase
|
|
177
177
|
def test_content_with_cyclical_tags
|
178
178
|
page = cms_pages(:default)
|
179
179
|
snippet = cms_snippets(:default)
|
180
|
-
snippet.update_attribute(:content, "infinite {cms:page:default} loop")
|
180
|
+
snippet.update_attribute(:content, "infinite {{cms:page:default}} loop")
|
181
181
|
assert_equal rendered_content_formatter(
|
182
182
|
'
|
183
183
|
layout_content_a
|
@@ -4,8 +4,8 @@ class FieldDateTimeTest < ActiveSupport::TestCase
|
|
4
4
|
|
5
5
|
def test_initialize_tag
|
6
6
|
[
|
7
|
-
'{ cms:field:content:datetime }',
|
8
|
-
'{cms:field:content:datetime}'
|
7
|
+
'{{ cms:field:content:datetime }}',
|
8
|
+
'{{cms:field:content:datetime}}'
|
9
9
|
].each do |tag_signature|
|
10
10
|
assert tag = CmsTag::FieldDateTime.initialize_tag(cms_pages(:default), tag_signature)
|
11
11
|
assert_equal 'content', tag.label
|
@@ -14,17 +14,17 @@ class FieldDateTimeTest < ActiveSupport::TestCase
|
|
14
14
|
|
15
15
|
def test_initialize_tag_failure
|
16
16
|
[
|
17
|
-
'{cms:field:content:not_datetime}',
|
18
|
-
'{cms:field:content}',
|
19
|
-
'{cms:not_field:content}',
|
20
|
-
'not_a_tag'
|
17
|
+
'{{cms:field:content:not_datetime}}',
|
18
|
+
'{{cms:field:content}}',
|
19
|
+
'{{cms:not_field:content}}',
|
20
|
+
'{not_a_tag}'
|
21
21
|
].each do |tag_signature|
|
22
22
|
assert_nil CmsTag::FieldDateTime.initialize_tag(cms_pages(:default), tag_signature)
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
26
|
def test_content_and_render
|
27
|
-
tag = CmsTag::FieldDateTime.initialize_tag(cms_pages(:default), '{cms:field:content:datetime}')
|
27
|
+
tag = CmsTag::FieldDateTime.initialize_tag(cms_pages(:default), '{{cms:field:content:datetime}}')
|
28
28
|
assert tag.content.blank?
|
29
29
|
time = 2.days.ago
|
30
30
|
tag.content = time
|
@@ -4,8 +4,8 @@ class FieldIntegerTest < ActiveSupport::TestCase
|
|
4
4
|
|
5
5
|
def test_initialize_tag
|
6
6
|
[
|
7
|
-
'{ cms:field:content:integer }',
|
8
|
-
'{cms:field:content:integer}'
|
7
|
+
'{{ cms:field:content:integer }}',
|
8
|
+
'{{cms:field:content:integer}}'
|
9
9
|
].each do |tag_signature|
|
10
10
|
assert tag = CmsTag::FieldInteger.initialize_tag(cms_pages(:default), tag_signature)
|
11
11
|
assert_equal 'content', tag.label
|
@@ -14,17 +14,17 @@ class FieldIntegerTest < ActiveSupport::TestCase
|
|
14
14
|
|
15
15
|
def test_initialize_tag_failure
|
16
16
|
[
|
17
|
-
'{cms:field:content:not_integer}',
|
18
|
-
'{cms:field:content}',
|
19
|
-
'{cms:not_field:content}',
|
20
|
-
'not_a_tag'
|
17
|
+
'{{cms:field:content:not_integer}}',
|
18
|
+
'{{cms:field:content}}',
|
19
|
+
'{{cms:not_field:content}}',
|
20
|
+
'{not_a_tag}'
|
21
21
|
].each do |tag_signature|
|
22
22
|
assert_nil CmsTag::FieldInteger.initialize_tag(cms_pages(:default), tag_signature)
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
26
|
def test_content_and_render
|
27
|
-
tag = CmsTag::FieldInteger.initialize_tag(cms_pages(:default), '{cms:field:content:integer}')
|
27
|
+
tag = CmsTag::FieldInteger.initialize_tag(cms_pages(:default), '{{cms:field:content:integer}}')
|
28
28
|
assert tag.content.blank?
|
29
29
|
tag.content = '5'
|
30
30
|
assert_equal 5, tag.content
|
@@ -4,9 +4,9 @@ class FieldStringTest < ActiveSupport::TestCase
|
|
4
4
|
|
5
5
|
def test_initialize_tag
|
6
6
|
[
|
7
|
-
'{ cms:field:content:string }',
|
8
|
-
'{cms:field:content:string}',
|
9
|
-
'{cms:field:content}'
|
7
|
+
'{{ cms:field:content:string }}',
|
8
|
+
'{{cms:field:content:string}}',
|
9
|
+
'{{cms:field:content}}'
|
10
10
|
].each do |tag_signature|
|
11
11
|
assert tag = CmsTag::FieldString.initialize_tag(cms_pages(:default), tag_signature)
|
12
12
|
assert_equal 'content', tag.label
|
@@ -15,16 +15,16 @@ class FieldStringTest < ActiveSupport::TestCase
|
|
15
15
|
|
16
16
|
def test_initialize_tag_failure
|
17
17
|
[
|
18
|
-
'{cms:field:content:not_string}',
|
19
|
-
'{cms:not_field:content}',
|
20
|
-
'not_a_tag'
|
18
|
+
'{{cms:field:content:not_string}}',
|
19
|
+
'{{cms:not_field:content}}',
|
20
|
+
'{not_a_tag}'
|
21
21
|
].each do |tag_signature|
|
22
22
|
assert_nil CmsTag::FieldString.initialize_tag(cms_pages(:default), tag_signature)
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
26
|
def test_content_and_render
|
27
|
-
tag = CmsTag::FieldString.initialize_tag(cms_pages(:default), '{cms:field:content}')
|
27
|
+
tag = CmsTag::FieldString.initialize_tag(cms_pages(:default), '{{cms:field:content}}')
|
28
28
|
assert tag.content.blank?
|
29
29
|
tag.content = 'test_content'
|
30
30
|
assert_equal 'test_content', tag.content
|
@@ -4,8 +4,8 @@ class FieldTextTest < ActiveSupport::TestCase
|
|
4
4
|
|
5
5
|
def test_initialize_tag
|
6
6
|
[
|
7
|
-
'{ cms:field:content:text }',
|
8
|
-
'{cms:field:content:text}'
|
7
|
+
'{{ cms:field:content:text }}',
|
8
|
+
'{{cms:field:content:text}}'
|
9
9
|
].each do |tag_signature|
|
10
10
|
assert tag = CmsTag::FieldText.initialize_tag(cms_pages(:default), tag_signature)
|
11
11
|
assert_equal 'content', tag.label
|
@@ -14,16 +14,16 @@ class FieldTextTest < ActiveSupport::TestCase
|
|
14
14
|
|
15
15
|
def test_initialize_tag_failure
|
16
16
|
[
|
17
|
-
'{cms:field:content:not_text}',
|
18
|
-
'{cms:not_field:content:text}',
|
19
|
-
'not_a_tag'
|
17
|
+
'{{cms:field:content:not_text}}',
|
18
|
+
'{{cms:not_field:content:text}}',
|
19
|
+
'{not_a_tag}'
|
20
20
|
].each do |tag_signature|
|
21
21
|
assert_nil CmsTag::FieldText.initialize_tag(cms_pages(:default), tag_signature)
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
25
|
def test_content_and_render
|
26
|
-
tag = CmsTag::FieldText.initialize_tag(cms_pages(:default), '{cms:field:content:text}')
|
26
|
+
tag = CmsTag::FieldText.initialize_tag(cms_pages(:default), '{{cms:field:content:text}}')
|
27
27
|
assert tag.content.blank?
|
28
28
|
tag.content = 'test_content'
|
29
29
|
assert_equal 'test_content', tag.content
|
@@ -3,31 +3,31 @@ require File.expand_path('../../test_helper', File.dirname(__FILE__))
|
|
3
3
|
class HelperTest < ActiveSupport::TestCase
|
4
4
|
|
5
5
|
def test_initialize_tag
|
6
|
-
assert CmsTag::Helper.initialize_tag(cms_pages(:default), '{ cms:helper:method_name }')
|
6
|
+
assert CmsTag::Helper.initialize_tag(cms_pages(:default), '{{ cms:helper:method_name }}')
|
7
7
|
end
|
8
8
|
|
9
9
|
def test_initialize_tag_with_parameters
|
10
|
-
assert tag = CmsTag::Helper.initialize_tag(cms_pages(:default), '{ cms:helper:method_name:param1:param2 }')
|
10
|
+
assert tag = CmsTag::Helper.initialize_tag(cms_pages(:default), '{{ cms:helper:method_name:param1:param2 }}')
|
11
11
|
assert tag.label = 'method_name'
|
12
12
|
assert tag.params = 'param1:param2'
|
13
13
|
end
|
14
14
|
|
15
15
|
def test_initialize_tag_failure
|
16
16
|
[
|
17
|
-
'{cms:helper}',
|
18
|
-
'{cms:not_helper:method_name}',
|
19
|
-
'not_a_tag'
|
17
|
+
'{{cms:helper}}',
|
18
|
+
'{{cms:not_helper:method_name}}',
|
19
|
+
'{not_a_tag}'
|
20
20
|
].each do |tag_signature|
|
21
21
|
assert_nil CmsTag::Helper.initialize_tag(cms_pages(:default), tag_signature)
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
25
|
def test_content_and_render
|
26
|
-
tag = CmsTag::Helper.initialize_tag(cms_pages(:default), '{cms:helper:method_name}')
|
26
|
+
tag = CmsTag::Helper.initialize_tag(cms_pages(:default), '{{cms:helper:method_name}}')
|
27
27
|
assert_equal "<%= method_name() %>", tag.content
|
28
28
|
assert_equal "<%= method_name() %>", tag.render
|
29
29
|
|
30
|
-
tag = CmsTag::Helper.initialize_tag(cms_pages(:default), '{cms:helper:method_name:param1:param2}')
|
30
|
+
tag = CmsTag::Helper.initialize_tag(cms_pages(:default), '{{cms:helper:method_name:param1:param2}}')
|
31
31
|
assert_equal "<%= method_name('param1', 'param2') %>", tag.content
|
32
32
|
assert_equal "<%= method_name('param1', 'param2') %>", tag.render
|
33
33
|
end
|
@@ -4,8 +4,8 @@ class PageDateTimeTest < ActiveSupport::TestCase
|
|
4
4
|
|
5
5
|
def test_initialize_tag
|
6
6
|
[
|
7
|
-
'{ cms:page:content:datetime }',
|
8
|
-
'{cms:page:content:datetime}'
|
7
|
+
'{{ cms:page:content:datetime }}',
|
8
|
+
'{{cms:page:content:datetime}}'
|
9
9
|
].each do |tag_signature|
|
10
10
|
assert tag = CmsTag::PageDateTime.initialize_tag(cms_pages(:default), tag_signature)
|
11
11
|
assert_equal 'content', tag.label
|
@@ -14,17 +14,17 @@ class PageDateTimeTest < ActiveSupport::TestCase
|
|
14
14
|
|
15
15
|
def test_initialize_tag_failure
|
16
16
|
[
|
17
|
-
'{cms:page:content:not_datetime}',
|
18
|
-
'{cms:page:content}',
|
19
|
-
'{cms:not_page:content}',
|
20
|
-
'not_a_tag'
|
17
|
+
'{{cms:page:content:not_datetime}}',
|
18
|
+
'{{cms:page:content}}',
|
19
|
+
'{{cms:not_page:content}}',
|
20
|
+
'{not_a_tag}'
|
21
21
|
].each do |tag_signature|
|
22
22
|
assert_nil CmsTag::PageDateTime.initialize_tag(cms_pages(:default), tag_signature)
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
26
|
def test_content_and_render
|
27
|
-
tag = CmsTag::PageDateTime.initialize_tag(cms_pages(:default), '{cms:page:content:datetime}')
|
27
|
+
tag = CmsTag::PageDateTime.initialize_tag(cms_pages(:default), '{{cms:page:content:datetime}}')
|
28
28
|
assert tag.content.blank?
|
29
29
|
time = 2.days.ago
|
30
30
|
tag.content = time
|
@@ -4,8 +4,8 @@ class PageIntegerTest < ActiveSupport::TestCase
|
|
4
4
|
|
5
5
|
def test_initialize_tag
|
6
6
|
[
|
7
|
-
'{ cms:page:content:integer }',
|
8
|
-
'{cms:page:content:integer}'
|
7
|
+
'{{ cms:page:content:integer }}',
|
8
|
+
'{{cms:page:content:integer}}'
|
9
9
|
].each do |tag_signature|
|
10
10
|
assert tag = CmsTag::PageInteger.initialize_tag(cms_pages(:default), tag_signature)
|
11
11
|
assert_equal 'content', tag.label
|
@@ -14,17 +14,17 @@ class PageIntegerTest < ActiveSupport::TestCase
|
|
14
14
|
|
15
15
|
def test_initialize_tag_failure
|
16
16
|
[
|
17
|
-
'{cms:page:content:not_integer}',
|
18
|
-
'{cms:page:content}',
|
19
|
-
'{cms:not_page:content}',
|
20
|
-
'not_a_tag'
|
17
|
+
'{{cms:page:content:not_integer}}',
|
18
|
+
'{{cms:page:content}}',
|
19
|
+
'{{cms:not_page:content}}',
|
20
|
+
'{not_a_tag}'
|
21
21
|
].each do |tag_signature|
|
22
22
|
assert_nil CmsTag::PageInteger.initialize_tag(cms_pages(:default), tag_signature)
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
26
|
def test_content_and_render
|
27
|
-
tag = CmsTag::PageInteger.initialize_tag(cms_pages(:default), '{cms:page:content:integer}')
|
27
|
+
tag = CmsTag::PageInteger.initialize_tag(cms_pages(:default), '{{cms:page:content:integer}}')
|
28
28
|
assert tag.content.blank?
|
29
29
|
tag.content = '5'
|
30
30
|
assert_equal 5, tag.content
|
@@ -4,8 +4,8 @@ class PageStringTest < ActiveSupport::TestCase
|
|
4
4
|
|
5
5
|
def test_initialize_tag
|
6
6
|
[
|
7
|
-
'{ cms:page:content:string }',
|
8
|
-
'{cms:page:content:string}'
|
7
|
+
'{{ cms:page:content:string }}',
|
8
|
+
'{{cms:page:content:string}}'
|
9
9
|
].each do |tag_signature|
|
10
10
|
assert tag = CmsTag::PageString.initialize_tag(cms_pages(:default), tag_signature)
|
11
11
|
assert_equal 'content', tag.label
|
@@ -14,17 +14,17 @@ class PageStringTest < ActiveSupport::TestCase
|
|
14
14
|
|
15
15
|
def test_initialize_tag_failure
|
16
16
|
[
|
17
|
-
'{cms:page:content:not_string}',
|
18
|
-
'{cms:page:content}',
|
19
|
-
'{cms:not_page:content}',
|
20
|
-
'not_a_tag'
|
17
|
+
'{{cms:page:content:not_string}}',
|
18
|
+
'{{cms:page:content}}',
|
19
|
+
'{{cms:not_page:content}}',
|
20
|
+
'{not_a_tag}'
|
21
21
|
].each do |tag_signature|
|
22
22
|
assert_nil CmsTag::PageString.initialize_tag(cms_pages(:default), tag_signature)
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
26
|
def test_content_and_render
|
27
|
-
tag = CmsTag::PageString.initialize_tag(cms_pages(:default), '{cms:page:content:string}')
|
27
|
+
tag = CmsTag::PageString.initialize_tag(cms_pages(:default), '{{cms:page:content:string}}')
|
28
28
|
assert tag.content.blank?
|
29
29
|
tag.content = 'test_content'
|
30
30
|
assert_equal 'test_content', tag.content
|
@@ -4,10 +4,9 @@ class PageTextTest < ActiveSupport::TestCase
|
|
4
4
|
|
5
5
|
def test_initialize_tag
|
6
6
|
[
|
7
|
-
'
|
8
|
-
'{cms:page:content}',
|
9
|
-
'{cms:page:content}'
|
10
|
-
'{cms:page:content:text}'
|
7
|
+
'{{ cms:page:content:text }}',
|
8
|
+
'{{cms:page:content}}',
|
9
|
+
'{{cms:page:content:text}}'
|
11
10
|
].each do |tag_signature|
|
12
11
|
assert tag = CmsTag::PageText.initialize_tag(cms_pages(:default), tag_signature)
|
13
12
|
assert_equal 'content', tag.label
|
@@ -16,16 +15,16 @@ class PageTextTest < ActiveSupport::TestCase
|
|
16
15
|
|
17
16
|
def test_initialize_tag_failure
|
18
17
|
[
|
19
|
-
'{cms:page:content:not_text}',
|
20
|
-
'{cms:not_page:content}',
|
21
|
-
'not_a_tag'
|
18
|
+
'{{cms:page:content:not_text}}',
|
19
|
+
'{{cms:not_page:content}}',
|
20
|
+
'{not_a_tag}'
|
22
21
|
].each do |tag_signature|
|
23
22
|
assert_nil CmsTag::PageText.initialize_tag(cms_pages(:default), tag_signature)
|
24
23
|
end
|
25
24
|
end
|
26
25
|
|
27
26
|
def test_content_and_render
|
28
|
-
tag = CmsTag::PageText.initialize_tag(cms_pages(:default), '{cms:page:content}')
|
27
|
+
tag = CmsTag::PageText.initialize_tag(cms_pages(:default), '{{cms:page:content}}')
|
29
28
|
assert tag.content.blank?
|
30
29
|
tag.content = 'test_content'
|
31
30
|
assert_equal 'test_content', tag.content
|
@@ -4,35 +4,35 @@ class PartialTest < ActiveSupport::TestCase
|
|
4
4
|
|
5
5
|
def test_initialize_tag
|
6
6
|
[
|
7
|
-
'{ cms:partial:partial_name }',
|
8
|
-
'{cms:partial:path/to/partial}'
|
7
|
+
'{{ cms:partial:partial_name }}',
|
8
|
+
'{{cms:partial:path/to/partial}}'
|
9
9
|
].each do |tag_signature|
|
10
10
|
assert tag = CmsTag::Partial.initialize_tag(cms_pages(:default), tag_signature)
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
14
|
def test_initialize_tag_with_parameters
|
15
|
-
assert tag = CmsTag::Partial.initialize_tag(cms_pages(:default), '{cms:partial:path/to/partial:param1:param2}')
|
15
|
+
assert tag = CmsTag::Partial.initialize_tag(cms_pages(:default), '{{cms:partial:path/to/partial:param1:param2}}')
|
16
16
|
assert tag.label = 'path/to/partial'
|
17
17
|
assert tag.params = 'param1:param2'
|
18
18
|
end
|
19
19
|
|
20
20
|
def test_initialize_tag_failure
|
21
21
|
[
|
22
|
-
'{cms:partial}',
|
23
|
-
'{cms:not_partial:label}',
|
24
|
-
'not_a_tag'
|
22
|
+
'{{cms:partial}}',
|
23
|
+
'{{cms:not_partial:label}}',
|
24
|
+
'{not_a_tag}'
|
25
25
|
].each do |tag_signature|
|
26
26
|
assert_nil CmsTag::Partial.initialize_tag(cms_pages(:default), tag_signature)
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
30
|
def test_content_and_render
|
31
|
-
tag = CmsTag::Partial.initialize_tag(cms_pages(:default), '{cms:partial:path/to/partial}')
|
31
|
+
tag = CmsTag::Partial.initialize_tag(cms_pages(:default), '{{cms:partial:path/to/partial}}')
|
32
32
|
assert_equal "<%= render :partial => 'path/to/partial' %>", tag.content
|
33
33
|
assert_equal "<%= render :partial => 'path/to/partial' %>", tag.render
|
34
34
|
|
35
|
-
tag = CmsTag::Partial.initialize_tag(cms_pages(:default), '{cms:partial:path/to/partial:param1:param2}')
|
35
|
+
tag = CmsTag::Partial.initialize_tag(cms_pages(:default), '{{cms:partial:path/to/partial:param1:param2}}')
|
36
36
|
assert_equal "<%= render :partial => 'path/to/partial', :locals => {:param_1 => 'param1', :param_2 => 'param2'} %>", tag.content
|
37
37
|
assert_equal "<%= render :partial => 'path/to/partial', :locals => {:param_1 => 'param1', :param_2 => 'param2'} %>", tag.render
|
38
38
|
end
|
@@ -4,8 +4,8 @@ class SnippetTest < ActiveSupport::TestCase
|
|
4
4
|
|
5
5
|
def test_initialize_tag
|
6
6
|
[
|
7
|
-
'{ cms:snippet:label }',
|
8
|
-
'{cms:snippet:label}'
|
7
|
+
'{{ cms:snippet:label }}',
|
8
|
+
'{{cms:snippet:label}}'
|
9
9
|
].each do |tag_signature|
|
10
10
|
assert tag = CmsTag::Snippet.initialize_tag(cms_pages(:default), tag_signature)
|
11
11
|
assert_equal 'label', tag.slug
|
@@ -14,20 +14,20 @@ class SnippetTest < ActiveSupport::TestCase
|
|
14
14
|
|
15
15
|
def test_initialize_tag_failure
|
16
16
|
[
|
17
|
-
'{cms:snippet}',
|
18
|
-
'{cms:not_snippet:label}',
|
19
|
-
'not_a_tag'
|
17
|
+
'{{cms:snippet}}',
|
18
|
+
'{{cms:not_snippet:label}}',
|
19
|
+
'{not_a_tag}'
|
20
20
|
].each do |tag_signature|
|
21
21
|
assert_nil CmsTag::Snippet.initialize_tag(cms_pages(:default), tag_signature)
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
25
|
def test_content_and_render
|
26
|
-
tag = CmsTag::Snippet.initialize_tag(cms_pages(:default), '{cms:snippet:default}')
|
26
|
+
tag = CmsTag::Snippet.initialize_tag(cms_pages(:default), '{{cms:snippet:default}}')
|
27
27
|
assert_equal 'default_snippet_content', tag.content
|
28
28
|
assert_equal 'default_snippet_content', tag.render
|
29
29
|
|
30
|
-
tag = CmsTag::Snippet.initialize_tag(cms_pages(:default), "{cms:snippet:doesnot_exist}")
|
30
|
+
tag = CmsTag::Snippet.initialize_tag(cms_pages(:default), "{{cms:snippet:doesnot_exist}}")
|
31
31
|
assert_equal nil, tag.content
|
32
32
|
assert_equal '', tag.render
|
33
33
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: comfortable_mexican_sofa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 1
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 1.0.
|
9
|
+
- 11
|
10
|
+
version: 1.0.11
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Oleg Khabarov
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2010-
|
19
|
+
date: 2010-11-01 00:00:00 -04:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|