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.
Files changed (48) hide show
  1. data/README.md +34 -27
  2. data/VERSION +1 -1
  3. data/app/controllers/cms_admin/layouts_controller.rb +1 -0
  4. data/app/controllers/cms_admin/pages_controller.rb +1 -0
  5. data/app/controllers/cms_admin/sites_controller.rb +1 -0
  6. data/app/controllers/cms_admin/snippets_controller.rb +1 -0
  7. data/app/models/cms_layout.rb +14 -1
  8. data/app/models/cms_page.rb +2 -1
  9. data/app/views/cms_admin/layouts/_form.html.erb +6 -2
  10. data/app/views/cms_admin/pages/_form.html.erb +12 -4
  11. data/comfortable_mexican_sofa.gemspec +2 -2
  12. data/config/initializers/comfortable_mexican_sofa.rb +1 -2
  13. data/lib/comfortable_mexican_sofa/cms_tag.rb +3 -3
  14. data/lib/comfortable_mexican_sofa/cms_tag/field_datetime.rb +1 -1
  15. data/lib/comfortable_mexican_sofa/cms_tag/field_integer.rb +1 -1
  16. data/lib/comfortable_mexican_sofa/cms_tag/field_string.rb +1 -1
  17. data/lib/comfortable_mexican_sofa/cms_tag/field_text.rb +1 -1
  18. data/lib/comfortable_mexican_sofa/cms_tag/helper.rb +1 -1
  19. data/lib/comfortable_mexican_sofa/cms_tag/page_datetime.rb +1 -1
  20. data/lib/comfortable_mexican_sofa/cms_tag/page_integer.rb +1 -1
  21. data/lib/comfortable_mexican_sofa/cms_tag/page_string.rb +1 -1
  22. data/lib/comfortable_mexican_sofa/cms_tag/page_text.rb +1 -1
  23. data/lib/comfortable_mexican_sofa/cms_tag/partial.rb +1 -1
  24. data/lib/comfortable_mexican_sofa/cms_tag/snippet.rb +1 -1
  25. data/test/cms_seeds/test.host/layouts/default.yml +1 -1
  26. data/test/cms_seeds/test.host/layouts/nested.yml +1 -1
  27. data/test/cms_seeds/test.host/pages/child/subchild.yml +1 -1
  28. data/test/fixtures/cms_blocks.yml +1 -1
  29. data/test/fixtures/cms_layouts.yml +7 -7
  30. data/test/functional/cms_admin/layouts_controller_test.rb +10 -3
  31. data/test/functional/cms_admin/pages_controller_test.rb +15 -8
  32. data/test/functional/cms_admin/sites_controller_test.rb +7 -0
  33. data/test/functional/cms_admin/snippets_controller_test.rb +7 -0
  34. data/test/integration/sites_test.rb +0 -6
  35. data/test/unit/cms_layout_test.rb +29 -7
  36. data/test/unit/cms_tag_test.rb +15 -15
  37. data/test/unit/cms_tags/field_datetime_test.rb +7 -7
  38. data/test/unit/cms_tags/field_integer_test.rb +7 -7
  39. data/test/unit/cms_tags/field_string_test.rb +7 -7
  40. data/test/unit/cms_tags/field_text_test.rb +6 -6
  41. data/test/unit/cms_tags/helper_test.rb +7 -7
  42. data/test/unit/cms_tags/page_datetime_test.rb +7 -7
  43. data/test/unit/cms_tags/page_integer_test.rb +7 -7
  44. data/test/unit/cms_tags/page_string_test.rb +7 -7
  45. data/test/unit/cms_tags/page_text_test.rb +7 -8
  46. data/test/unit/cms_tags/partial_test.rb +8 -8
  47. data/test/unit/cms_tags/snippet_test.rb +7 -7
  48. 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
- Comfortable Mexican Sofa is a Content Management System with an obnoxious name. Also it's a Rails 3 Engine. This means that you can use it as a stand-alone application and also as an Engine for your existing application.
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 CmsHttpAuthentication
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
- <cms:page:content>
46
+ {{ cms:page:content }}
53
47
  </body>
54
48
  </html>
55
49
 
56
- 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.
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
- *Page Blocks* are pieces of content that will be output on the page:
52
+ #### Page Blocks
53
+ pieces of content that will be output on the page:
59
54
 
60
- <cms:page:some_label:text> # same as <cms:page:some_label>, will render a text area during page creation
61
- <cms:page:some_label:string> # will render a text field during page creation
62
- <cms:page:some_label:datetime> # datetime select widget
63
- <cms:page:some_label:integer> # a number field
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
- *Page Fields* are pieces of content that are not rendered. They are useful for hidden values you want to use inside your app.
72
+ {{ cms:snippet:snippet_slug }}
66
73
 
67
- <cms:field:some_label:text> # text area for the page creation form
68
- <cms:field:some_label:string> # same as <cms:field:some_label>, this is a text field
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
- *Snippets* bits of reusable content that can be used in pages and layouts
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
- *Partials* are exactly that. You don't want to do IRB inside CMS so there's a handy tag:
80
+ #### Partials
81
+ are exactly that. You don't want to do IRB inside CMS so there's a handy tag:
77
82
 
78
- <cms:partial:path/to/partial>
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.10
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
 
@@ -6,6 +6,7 @@ class CmsAdmin::SitesController < CmsAdmin::BaseController
6
6
  before_filter :load_cms_site, :only => [:edit, :update, :destroy]
7
7
 
8
8
  def index
9
+ return redirect_to :action => :new if CmsSite.count == 0
9
10
  @cms_sites = CmsSite.all
10
11
  end
11
12
 
@@ -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
 
@@ -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
@@ -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 = [[ "#{spacer*depth}#{current_page.label}", current_page.id ]]
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
- <%= form.select :parent_id, CmsLayout.options_for_select(@cms_site, @cms_layout), :include_blank => true %>
4
- <%= form.select :app_layout, CmsLayout.app_layouts_for_select, :include_blank => true %>
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
- <%= form.text_field :slug, :id => 'slug' %>
5
- <%= form.select :cms_layout_id, CmsLayout.options_for_select(@cms_site), {}, 'data-page-id' => @cms_page.id.to_i, :label => 'Layout' %>
6
- <%= form.select :parent_id, CmsPage.options_for_select(@cms_site, @cms_page) %>
7
- <%= form.select :target_page_id, CmsPage.options_for_select(@cms_site, @cms_page, nil, 0, false), :include_blank => true, :label => 'Redirect To Page' %>
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.10"
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-10-28}
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 CmsHttpAuthentication
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
@@ -4,7 +4,7 @@ class CmsTag::FieldDateTime < CmsBlock
4
4
 
5
5
  def self.regex_tag_signature(label = nil)
6
6
  label ||= /\w+/
7
- /\{\s*cms:field:(#{label}):datetime\s*\}/
7
+ /\{\{\s*cms:field:(#{label}):datetime\s*\}\}/
8
8
  end
9
9
 
10
10
  def regex_tag_signature
@@ -4,7 +4,7 @@ class CmsTag::FieldInteger < CmsBlock
4
4
 
5
5
  def self.regex_tag_signature(label = nil)
6
6
  label ||= /\w+/
7
- /\{\s*cms:field:(#{label}):integer\s*\}/
7
+ /\{\{\s*cms:field:(#{label}):integer\s*\}\}/
8
8
  end
9
9
 
10
10
  def regex_tag_signature
@@ -4,7 +4,7 @@ class CmsTag::FieldString < CmsBlock
4
4
 
5
5
  def self.regex_tag_signature(label = nil)
6
6
  label ||= /\w+/
7
- /\{\s*cms:field:(#{label}):?(?:string)?\s*\}/
7
+ /\{\{\s*cms:field:(#{label}):?(?:string)?\s*\}\}/
8
8
  end
9
9
 
10
10
  def regex_tag_signature
@@ -4,7 +4,7 @@ class CmsTag::FieldText < CmsBlock
4
4
 
5
5
  def self.regex_tag_signature(label = nil)
6
6
  label ||= /\w+/
7
- /\{\s*cms:field:(#{label}):?(?:text)?\s*?\}/
7
+ /\{\{\s*cms:field:(#{label}):?(?:text)?\s*?\}\}/
8
8
  end
9
9
 
10
10
  def regex_tag_signature
@@ -6,7 +6,7 @@ class CmsTag::Helper
6
6
 
7
7
  def self.regex_tag_signature(label = nil)
8
8
  label ||= /\w+/
9
- /\{\s*cms:helper:(#{label}):?(.*?)\s*\}/
9
+ /\{\{\s*cms:helper:(#{label}):?(.*?)\s*\}\}/
10
10
  end
11
11
 
12
12
  def regex_tag_signature
@@ -4,7 +4,7 @@ class CmsTag::PageDateTime < CmsBlock
4
4
 
5
5
  def self.regex_tag_signature(label = nil)
6
6
  label ||= /\w+/
7
- /\{\s*cms:page:(#{label}):datetime\s*\}/
7
+ /\{\{\s*cms:page:(#{label}):datetime\s*\}\}/
8
8
  end
9
9
 
10
10
  def regex_tag_signature
@@ -4,7 +4,7 @@ class CmsTag::PageInteger < CmsBlock
4
4
 
5
5
  def self.regex_tag_signature(label = nil)
6
6
  label ||= /\w+/
7
- /\{\s*cms:page:(#{label}):integer\s*\}/
7
+ /\{\{\s*cms:page:(#{label}):integer\s*\}\}/
8
8
  end
9
9
 
10
10
  def regex_tag_signature
@@ -4,7 +4,7 @@ class CmsTag::PageString < CmsBlock
4
4
 
5
5
  def self.regex_tag_signature(label = nil)
6
6
  label ||= /\w+/
7
- /\{\s*cms:page:(#{label}):string\s*\}/
7
+ /\{\{\s*cms:page:(#{label}):string\s*\}\}/
8
8
  end
9
9
 
10
10
  def regex_tag_signature
@@ -4,7 +4,7 @@ class CmsTag::PageText < CmsBlock
4
4
 
5
5
  def self.regex_tag_signature(label = nil)
6
6
  label ||= /\w+/
7
- /\{\s*cms:page:(#{label}):?(?:text)?\s*\}/
7
+ /\{\{\s*cms:page:(#{label}):?(?:text)?\s*\}\}/
8
8
  end
9
9
 
10
10
  def regex_tag_signature
@@ -6,7 +6,7 @@ class CmsTag::Partial
6
6
 
7
7
  def self.regex_tag_signature(label = nil)
8
8
  label ||= /[\w\/]+/
9
- /\{\s*cms:partial:(#{label}):?(.*?)\s*\}/
9
+ /\{\{\s*cms:partial:(#{label}):?(.*?)\s*\}\}/
10
10
  end
11
11
 
12
12
  def regex_tag_signature
@@ -10,7 +10,7 @@ class CmsTag::Snippet < CmsSnippet
10
10
 
11
11
  def self.regex_tag_signature(label = nil)
12
12
  label ||= /\w+/
13
- /\{\s*cms:snippet:(#{label})\s*\}/
13
+ /\{\{\s*cms:snippet:(#{label})\s*\}\}/
14
14
  end
15
15
 
16
16
  def regex_tag_signature
@@ -1,2 +1,2 @@
1
1
  label: Default Layout
2
- content: <html>{cms:page:content}</html>
2
+ content: <html>{{cms:page:content}}</html>
@@ -1,3 +1,3 @@
1
1
  label: Nested Layout
2
2
  parent: default
3
- content: <div>{cms:page:content}</div>
3
+ content: <div>{{cms:page:content}}</div>
@@ -7,4 +7,4 @@ cms_blocks_attributes:
7
7
  label: content
8
8
  type: CmsTag::PageText
9
9
  content: |-
10
- Sub Child Page Content {cms:snippet:default}
10
+ Sub Child Page Content {{cms:snippet:default}}
@@ -10,5 +10,5 @@ default_page_text:
10
10
  label: default_page_text
11
11
  content_text: |-
12
12
  default_page_text_content_a
13
- {cms:snippet:default}
13
+ {{cms:snippet:default}}
14
14
  default_page_text_content_b
@@ -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 Content'
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 Content'
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 Content', layout.content
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
@@ -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}', tokens[1][0]
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}', tokens[1][0]
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 }', tokens[1][0]
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 }', tokens[1][0]
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
- ' {cms:page:content:text} ',
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: 3
4
+ hash: 1
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
- - 10
10
- version: 1.0.10
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-10-28 00:00:00 -04:00
19
+ date: 2010-11-01 00:00:00 -04:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency