constructor-cms 0.6.1 → 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -1
  3. data/Guardfile +1 -3
  4. data/constructor-cms.gemspec +1 -0
  5. data/core/app/controllers/constructor_core/users_controller.rb +0 -2
  6. data/core/app/views/constructor_core/sessions/new.html.haml +5 -5
  7. data/core/app/views/constructor_core/users/profile.haml +3 -3
  8. data/core/app/views/layouts/constructor_core/application.haml +12 -12
  9. data/core/config/routes.rb +1 -1
  10. data/core/lib/constructor_core/version.rb +1 -1
  11. data/lib/constructor-cms/engine.rb +1 -1
  12. data/pages/app/controllers/constructor_pages/pages_controller.rb +11 -6
  13. data/pages/app/controllers/constructor_pages/templates_controller.rb +2 -1
  14. data/pages/app/helpers/constructor_pages/move_helper.rb +2 -2
  15. data/pages/app/helpers/constructor_pages/pages_helper.rb +2 -0
  16. data/pages/app/helpers/constructor_pages/templates_helper.rb +2 -0
  17. data/pages/app/helpers/constructor_pages/treeview_helper.rb +33 -0
  18. data/pages/app/models/constructor_pages/page.rb +4 -2
  19. data/pages/app/views/constructor_pages/fields/_form.haml +10 -10
  20. data/pages/app/views/constructor_pages/fields/types/_html.haml +1 -1
  21. data/pages/app/views/constructor_pages/fields/types/_image.haml +1 -1
  22. data/pages/app/views/constructor_pages/fields/types/_integer.haml +1 -1
  23. data/pages/app/views/constructor_pages/fields/types/_string.haml +1 -1
  24. data/pages/app/views/constructor_pages/fields/types/_text.haml +1 -1
  25. data/pages/app/views/constructor_pages/pages/_breadcrumbs.haml +2 -2
  26. data/pages/app/views/constructor_pages/pages/_form.haml +30 -30
  27. data/pages/app/views/constructor_pages/pages/index.haml +35 -45
  28. data/pages/app/views/constructor_pages/partials/_arrow_buttons.haml +6 -0
  29. data/pages/app/views/constructor_pages/templates/_form.haml +23 -18
  30. data/pages/app/views/constructor_pages/templates/index.haml +11 -30
  31. data/pages/config/locales/en.yml +1 -0
  32. data/pages/config/locales/ru.yml +1 -0
  33. data/pages/config/routes.rb +16 -21
  34. data/pages/spec/features/constructor_pages/pages_controller_spec.rb +280 -0
  35. data/pages/spec/models/constructor_pages/field_model_spec.rb +12 -16
  36. data/pages/spec/models/constructor_pages/page_model_spec.rb +2 -1
  37. data/pages/spec/models/constructor_pages/template_model_spec.rb +1 -1
  38. data/spec/dummy/config/environment.rb +0 -2
  39. data/spec/spec_helper.rb +5 -0
  40. metadata +23 -7
  41. data/pages/spec/requests/constructor_pages/pages_controller_spec.rb +0 -12
@@ -2,51 +2,41 @@
2
2
  =t :structure
3
3
 
4
4
  - content_for :actions do
5
- .span4.clearfix.text-right
6
- = link_to "<i class='icon-plus icon-white'></i> #{t :new_page}".html_safe, pages.new_page_path, :class => "btn btn-large btn-link"
5
+ - if @template_exists
6
+ .span4.clearfix.text-right
7
+ = link_to pages.new_page_path, class: 'btn btn-large btn-link' do
8
+ %i.icon-plus
9
+ =t :new_page
7
10
 
8
11
  %section.b-tree.span12
9
12
  %ul
10
- - @roots.each do |root|
11
- - level = root.level
12
- - last_page = nil
13
-
14
- - root.self_and_descendants.each do |page|
15
- - if page.level > level
16
- <ul>
17
- - elsif page.level < level
18
- </li>
19
- = raw "</ul></li>" * (level-page.level)
20
- - elsif !page.root?
21
- </li>
22
-
23
- <li>
24
- - if page.published?
25
- = link_to page.name, page.full_url, class: 'btn btn-link'
26
- - else
27
- %button.btn.disabled= page.name
28
-
29
- .b-tree__buttons
30
- .btn-group
31
- - if not page.right_sibling.nil? and page.move_possible?(page.right_sibling)
32
- = link_to "<i class='icon-arrow-down'></i>".html_safe, page_move_down_path(page), :method => :post, :class => "btn btn-mini"
33
- - if not page.left_sibling.nil? and page.move_possible?(page.left_sibling)
34
- = link_to "<i class='icon-arrow-up'></i>".html_safe, page_move_up_path(page), :method => :post, :class => "btn btn-mini"
35
-
36
- = link_to "<i class='icon-pencil'></i> #{t :edit} #{page.template.name.downcase}".html_safe, edit_page_path(page), :class => "btn btn-primary btn-mini"
37
-
38
- - unless page.template.nil?
39
- - if page.template.child_id.nil?
40
- - if !page.template.leaf?
41
- = link_to "<i class='icon-chevron-down'></i> #{t :add} #{page.template.descendants.first.name.downcase}".html_safe, new_child_page_path(page), :class => "btn btn-success btn-mini"
42
- - else
43
- = link_to "<i class='icon-chevron-down'></i> #{t :add} #{ConstructorPages::Template.find(page.template.child_id).name.downcase}".html_safe, new_child_page_path(page), :class => "btn btn-success btn-mini"
44
-
45
- = link_to "<i class='icon-remove'></i> #{t :delete}".html_safe, page_path(page), method: :delete, class: 'btn btn-danger btn-mini pull-right', data: {confirm: t(:are_you_sure?)}
46
-
47
-
48
-
49
- - level = page.level
50
- - last_page = page
51
- </li>
52
- = raw "</ul></li>" * last_page.level
13
+ = render_tree @roots do |page|
14
+ - if page.published?
15
+ = link_to page.name, page.full_url, class: 'btn btn-link'
16
+ - else
17
+ %button.btn.disabled= page.name
18
+
19
+ .b-tree__buttons
20
+ = render partial: 'constructor_pages/partials/arrow_buttons', locals: {item: page}
21
+
22
+ = link_to edit_page_path(page), class: 'btn btn-primary btn-mini' do
23
+ %i.icon-pencil
24
+ =t :edit
25
+ = page.template.name.downcase
26
+
27
+ - unless page.template.nil?
28
+ - if page.template.child_id.nil?
29
+ - if !page.template.leaf?
30
+ = link_to new_child_page_path(page), class: 'btn btn-success btn-mini' do
31
+ %i.icon-chevron-down
32
+ =t :add
33
+ = page.template.descendants.first.name.downcase
34
+ - else
35
+ = link_to new_child_page_path(page), class: 'btn btn-success btn-mini' do
36
+ %i.icon-chevron-down
37
+ =t :add
38
+ = ConstructorPages::Template.find(page.template.child_id).name.downcase
39
+
40
+ = link_to page_path(page), method: :delete, class: 'btn btn-danger btn-mini pull-right', data: {confirm: t(:are_you_sure?)} do
41
+ %i.icon-remove
42
+ =t :delete
@@ -0,0 +1,6 @@
1
+ .btn-group
2
+ - {down: :right, up: :left}.each_pair do |a, b|
3
+ - sibling = item.send(b.to_s+'_sibling')
4
+ - if sibling and item.move_possible?(sibling)
5
+ = link_to "/admin/#{item.class.to_s.demodulize.downcase.pluralize}/move/#{a}/#{item.id}", class: 'btn btn-mini' do
6
+ %i{class: "icon-arrow-#{a}"}
@@ -1,47 +1,52 @@
1
1
  = form_for @template do |f|
2
2
  - if @template.errors.any?
3
3
  .alert.alert-error.fade.in.span12
4
- = link_to "×", "#", :class => "close", 'data-dismiss' => 'alert'
4
+ = link_to '×', '#', class: 'close', 'data-dismiss' => 'alert'
5
5
  - @template.errors.full_messages.each do |m|
6
6
  = m
7
7
 
8
8
  .form-horizontal
9
9
  .control-group
10
- = f.label :name, :class => 'control-label'
11
- .controls= f.text_field :name, :class => "span4"
10
+ = f.label :name, class: 'control-label'
11
+ .controls= f.text_field :name, class: 'span4'
12
12
 
13
13
  .control-group
14
- = f.label :code_name, :class => 'control-label'
15
- .controls= f.text_field :code_name, :class => "span4"
14
+ = f.label :code_name, class: 'control-label'
15
+ .controls= f.text_field :code_name, class: 'span4'
16
16
 
17
17
  .control-group
18
- = f.label :parent, :class => 'control-label'
18
+ = f.label :parent, class: 'control-label'
19
19
  .controls
20
- = f.select :parent_id, options_for_select(for_select(@roots), :selected => @template.parent_id), :include_blank => t(:no)
20
+ = f.select :parent_id, options_for_select(for_select(@roots), selected: @template.parent_id), disabled: @template.self_and_descendants.map(&:id), include_blank: t(:no)
21
21
 
22
22
  .control-group
23
- = f.label :child, :class => 'control-label'
23
+ = f.label :child, class: 'control-label'
24
24
  .controls
25
- = f.select :child_id, options_for_select(for_select(@roots), :selected => @template.child_id), :include_blank => t(:no)
25
+ = f.select :child_id, options_for_select(for_select(@roots), selected: @template.child_id), include_blank: t(:no)
26
26
 
27
27
  - unless @template.new_record?
28
28
  .control-group
29
29
  .controls
30
- = link_to "<i class='icon-plus icon-white'></i> #{t :new_field}".html_safe, new_field_path(@template.id), :class => "btn btn-mini btn-link"
30
+ = link_to new_field_path(@template.id), class: 'btn btn-mini btn-link' do
31
+ %i.icon-plus
32
+ =t :new_field
31
33
 
32
34
  - @template.fields.each do |field|
33
35
  .control-group
34
- = label_tag "", field.name, :class => 'control-label'
36
+ = label_tag '', field.name, class: 'control-label'
35
37
  .controls
36
- = link_to "<i class='icon-arrow-down'></i>".html_safe, field_move_down_path(field), :class => "btn btn-mini #{"disabled" if field.last?}"
37
- = link_to "<i class='icon-arrow-up'></i>".html_safe, field_move_up_path(field), :class => "btn btn-mini #{"disabled" if field.first?}"
38
-
39
- = link_to "<i class='icon-pencil icon-white'></i>".html_safe, edit_field_path(field, field.template), :class => "btn btn-mini btn-primary"
40
- = link_to "<i class='icon-remove icon-white'></i>".html_safe, field_path(field), method: :delete, data: {confirm: t(:are_you_sure?)}, class: 'btn btn-mini btn-danger'
38
+ = link_to field_move_down_path(field), class: "btn btn-mini #{'disabled' if field.last?}" do
39
+ %i.icon-arrow-down
40
+ = link_to field_move_up_path(field), class: "btn btn-mini #{'disabled' if field.first?}" do
41
+ %i.icon-arrow-up
42
+ = link_to edit_field_path(field, field.template), class: 'btn btn-mini btn-primary' do
43
+ %i.icon-pencil
44
+ = link_to field_path(field), method: :delete, data: {confirm: t(:are_you_sure?)}, class: 'btn btn-mini btn-danger' do
45
+ %i.icon-remove
41
46
 
42
47
  .row-fluid
43
48
  .span12
44
49
  .form-actions
45
- = f.submit :class => "btn btn-primary"
46
- = link_to t(:cancel), templates_url, :class => "btn"
50
+ = f.submit class: 'btn btn-primary'
51
+ = link_to t(:cancel), templates_url, class: 'btn'
47
52
  = link_to t(:delete_template), @template, method: :delete, data: {confirm: t(:are_you_sure?)}, class: 'btn btn-danger pull-right' unless @template.new_record?
@@ -3,37 +3,18 @@
3
3
 
4
4
  - content_for :actions do
5
5
  .span4.clearfix.text-right
6
- = link_to "<i class='icon-plus icon-white'></i> #{t :new_template}".html_safe, new_template_path, :class => "btn btn-link btn-large"
6
+ = link_to new_template_path, class: 'btn btn-link btn-large' do
7
+ %i.icon-plus
8
+ =t :new_template
7
9
 
8
10
  %section.b-tree.span12
9
- %ul
10
- - @roots.each do |root|
11
- - level = root.level
12
- - last_template = nil
11
+ = render_tree(@roots) do |template|
12
+ %button.btn.btn-link.disabled= template.name
13
13
 
14
- - root.self_and_descendants.each do |template|
15
- - if template.level > level
16
- <ul>
17
- - elsif template.level < level
18
- </li>
19
- = raw "</ul></li>" * (level-template.level)
20
- - elsif !template.root?
21
- </li>
14
+ .b-tree__buttons
15
+ = render partial: 'constructor_pages/partials/arrow_buttons', locals: {item: template}
22
16
 
23
- <li>
24
- %button.btn.btn-link.disabled= template.name
25
-
26
- .b-tree__buttons
27
- .btn-group
28
- - if not template.right_sibling.nil? and template.move_possible?(template.right_sibling)
29
- = link_to "<i class='icon-arrow-down'></i>".html_safe, template_move_down_path(template), :method => :post, :class => "btn btn-mini"
30
- - if not template.left_sibling.nil? and template.move_possible?(template.left_sibling)
31
- = link_to "<i class='icon-arrow-up'></i>".html_safe, template_move_up_path(template), :method => :post, :class => "btn btn-mini"
32
-
33
- = link_to "<i class='icon-pencil'></i> #{t :edit} #{ t(:template).downcase}".html_safe, edit_template_path(template), :class => "btn btn-primary btn-mini"
34
-
35
-
36
- - level = template.level
37
- - last_template = template
38
- </li>
39
- = raw "</ul></li>" * last_template.level
17
+ = link_to edit_template_path(template), class: 'btn btn-primary btn-mini' do
18
+ %i.icon-pencil
19
+ =t :edit
20
+ = t(:template).downcase
@@ -8,6 +8,7 @@ en:
8
8
  display_in: 'Display in'
9
9
  help: 'Help'
10
10
  edit: 'Edit'
11
+ delete: 'Delete'
11
12
 
12
13
  new_field: 'New field'
13
14
 
@@ -7,6 +7,7 @@ ru:
7
7
  seo: 'Поисковая оптимизация'
8
8
  are_you_sure?: 'Вы уверены?'
9
9
  display_in: 'Отображать в'
10
+ delete: 'Удалить'
10
11
 
11
12
  menu: 'Меню'
12
13
  breadcrumbs: 'Хлебные крошки'
@@ -1,32 +1,27 @@
1
1
  ConstructorPages::Engine.routes.draw do
2
2
  scope '/admin' do
3
- resources :pages, :except => [:show]
4
- resources :templates, :except => [:show]
5
- resources :fields, :except => [:show, :new, :edit]
3
+ resources :pages, except: [:show]
4
+ resources :templates, except: [:show]
5
+ resources :fields, except: [:show, :new, :edit]
6
6
 
7
- scope '/fields' do
8
- get ':template_id/new/' => 'fields#new', :as => :new_field
9
- get ':id/:template_id/edit/' => 'fields#edit', :as => :edit_field
10
-
11
- get 'move/up/:id' => "fields#move_up", :as => :field_move_up
12
- get 'move/down/:id' => "fields#move_down", :as => :field_move_down
7
+ %w{page template field}.each do |c|
8
+ %w{up down}.each do |d|
9
+ get "#{c.pluralize}/move/#{d}/:id" => "#{c.pluralize}#move_#{d}", as: "#{c}_move_#{d}"
10
+ end
13
11
  end
14
12
 
15
- scope '/pages' do
16
- post 'move/up/:id' => "pages#move_up", :as => :page_move_up
17
- post 'move/down/:id' => "pages#move_down", :as => :page_move_down
18
-
19
- get ':page/new' => "pages#new", :as => :new_child_page
13
+ scope '/fields' do
14
+ get ':template_id/new/' => 'fields#new', as: :new_field
15
+ get ':id/:template_id/edit/' => 'fields#edit', as: :edit_field
20
16
  end
21
17
 
22
- scope '/templates' do
23
- post 'move/up/:id' => "templates#move_up", :as => :template_move_up
24
- post 'move/down/:id' => "templates#move_down", :as => :template_move_down
18
+ scope '/pages' do
19
+ get ':page/new' => 'pages#new', as: :new_child_page
25
20
  end
26
21
  end
27
22
 
28
- root :to => "pages#show"
29
- get '*all/search/:what_search' => "pages#search", :format => false
30
- get '*all.:format' => "pages#show"
31
- get '*all' => "pages#show"
23
+ root :to => 'pages#show'
24
+ get '*all/search/:what_search' => 'pages#search', format: false
25
+ get '*all.:format' => 'pages#show'
26
+ get '*all' => 'pages#show'
32
27
  end
@@ -0,0 +1,280 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ module ConstructorPages
6
+ describe 'Pages Controller' do
7
+ before :all do
8
+ @user = ConstructorCore::User.create email: 'ivanzotov@gmail.com', password: '123qweASD'
9
+ @template = Template.create name: 'Page', code_name: 'page'
10
+ end
11
+
12
+ before :each do
13
+ Page.delete_all
14
+ Field.delete_all
15
+
16
+ Field::TYPES.each do |t|
17
+ "constructor_pages/types/#{t}_type".classify.constantize.delete_all
18
+ end
19
+
20
+ login_as @user
21
+ end
22
+
23
+ describe 'Index' do
24
+ context 'Access' do
25
+ it 'should be accessed by pages_path if loggen in' do
26
+ visit pages.pages_path
27
+ current_path.should == pages.pages_path
28
+ status_code.should == 200
29
+ end
30
+
31
+ it 'should not be accessed by pages_path if not loggen in' do
32
+ logout
33
+ visit pages.pages_path
34
+ current_path.should == '/'
35
+ end
36
+ end
37
+
38
+ it 'should notice if no template exists' do
39
+ Template.delete_all
40
+ visit pages.pages_path
41
+ page.should_not have_link 'New page'
42
+ page.should have_content 'Create at least one template'
43
+ end
44
+
45
+ it 'should not notice if template exists' do
46
+ visit pages.pages_path
47
+ page.should have_link 'New page'
48
+ page.should_not have_text 'Create at least one template'
49
+ end
50
+
51
+ it 'should has pages list' do
52
+ Page.create name: 'Zanussi'
53
+ visit pages.pages_path
54
+ page.should have_selector 'ul li'
55
+ page.should have_link 'Zanussi'
56
+ end
57
+
58
+ it 'should has new page link' do
59
+ visit pages.pages_path
60
+ page.should have_link 'New page', pages.new_page_path
61
+ end
62
+
63
+ it 'should has edit_page link' do
64
+ _page = Page.create name: 'Zanussi'
65
+ visit pages.pages_path
66
+ page.should have_link 'Edit page', pages.edit_page_path(_page)
67
+ end
68
+
69
+ it 'should has delete_page link' do
70
+ _page = Page.create name: 'Zanussi'
71
+ visit pages.pages_path
72
+ page.should have_link 'Delete', pages.page_path(_page)
73
+ end
74
+
75
+ it 'should has Add child' do
76
+ _template = Template.create name: 'Child', code_name: 'child_page', parent: @template
77
+ _page = Page.create name: 'Zanussi', template: @template
78
+ visit pages.pages_path
79
+ page.should have_link 'Add child', pages.new_child_page_path(_page)
80
+ end
81
+ end
82
+
83
+ describe 'Moving' do
84
+ it 'should move up' do
85
+ _page_first = Page.create name: 'First'
86
+ _page_second = Page.create name: 'Second'
87
+ _page_third = Page.create name: 'Third'
88
+
89
+ # test
90
+ _page_first.lft.should == 1
91
+ _page_first.rgt.should == 2
92
+
93
+ _page_second.lft.should == 3
94
+ _page_second.rgt.should == 4
95
+
96
+ _page_third.lft.should == 5
97
+ _page_third.rgt.should == 6
98
+
99
+
100
+ # test
101
+
102
+ _page_first.left_sibling.should be_nil
103
+ _page_first.right_sibling.should == _page_second
104
+
105
+ _page_second.left_sibling.should == _page_first
106
+ _page_second.right_sibling.should == _page_third
107
+
108
+ _page_third.left_sibling.should == _page_second
109
+ _page_third.right_sibling.should be_nil
110
+ end
111
+ end
112
+
113
+ describe 'New page' do
114
+ it 'should be accessed by new_page_path if logged in' do
115
+ visit pages.new_page_path
116
+ current_path.should == pages.new_page_path
117
+ status_code.should == 200
118
+ end
119
+
120
+ it 'should not be accessed by new_page_path if not logged in' do
121
+ logout
122
+ visit pages.new_page_path
123
+ current_path.should == '/'
124
+ end
125
+
126
+ it 'should has child template of parent page' do
127
+ _template = Template.create name: 'Child', code_name: 'child_page', parent: @template
128
+ _page = Page.create name: 'Zanussi', template: @template
129
+ visit pages.pages_path
130
+ click_link 'Add child'
131
+ current_path.should == pages.new_child_page_path(_page)
132
+ page.should have_select 'Template', selected: '-- Child'
133
+ end
134
+
135
+ it 'should has published checkbox' do
136
+ visit pages.new_page_path
137
+ page.should have_checked_field 'Active'
138
+ end
139
+
140
+ it 'should has name field' do
141
+ visit pages.new_page_path
142
+ page.should have_field 'Name'
143
+ end
144
+
145
+ it 'should has not delete link' do
146
+ visit pages.new_page_path
147
+ page.should_not have_link 'Delete'
148
+ end
149
+
150
+ it 'should has create button' do
151
+ visit pages.new_page_path
152
+ page.should have_button 'Create Page'
153
+ end
154
+
155
+ it 'should save new page' do
156
+ visit pages.new_page_path
157
+ fill_in 'Name', with: 'Hello world'
158
+ Page.count.should == 0
159
+ page.click_button 'Create Page'
160
+ Page.count.should == 1
161
+ _page = Page.first
162
+ _page.name.should == 'Hello world'
163
+ _page.url.should == 'hello-world'
164
+ current_path.should == pages.pages_path
165
+ end
166
+ end
167
+
168
+ describe 'Edit page' do
169
+ before :each do
170
+ @page = Page.create name: 'Hello world'
171
+ end
172
+
173
+ it 'should be accessed by edit_page_path if logged in' do
174
+ visit pages.edit_page_path(@page)
175
+ status_code.should == 200
176
+ end
177
+
178
+ it 'should not be accessed by edit_page_path if not logged in' do
179
+ logout
180
+ visit pages.edit_page_path(@page)
181
+ current_path.should == '/'
182
+ end
183
+
184
+ it 'should has delete link' do
185
+ visit pages.edit_page_path(@page)
186
+ page.should have_link 'Delete'
187
+ end
188
+
189
+ it 'should edit page' do
190
+ visit pages.edit_page_path(@page)
191
+ fill_in 'Name', with: 'Zanussi'
192
+ fill_in 'Title', with: 'Zanussi conditioners'
193
+ fill_in 'Keywords', with: 'Zanussi, conditioners, Voronezh'
194
+ fill_in 'Description', with: 'Zanussi conditioners Voronezh'
195
+ @page.name.should == 'Hello world'
196
+ click_button 'Update Page'
197
+ @page.reload
198
+ @page.name.should == 'Zanussi'
199
+ @page.url.should == 'zanussi'
200
+ @page.title.should == 'Zanussi conditioners'
201
+ @page.keywords.should == 'Zanussi, conditioners, Voronezh'
202
+ @page.description.should == 'Zanussi conditioners Voronezh'
203
+ end
204
+ end
205
+
206
+ describe 'Delete page' do
207
+ it 'should delete from pages index' do
208
+ Page.create name: 'Page'
209
+ visit pages.pages_path
210
+ Page.count.should == 1
211
+ click_link 'Delete'
212
+ Page.count.should == 0
213
+ end
214
+
215
+ it 'should delete from page' do
216
+ _page = Page.create name: 'Page'
217
+ visit pages.edit_page_path(_page)
218
+ Page.count.should == 1
219
+ click_link 'Delete'
220
+ Page.count.should == 0
221
+ end
222
+ end
223
+
224
+ describe 'Fields' do
225
+ it 'should create fields after create page' do
226
+ Field.create name: 'Short description', code_name: 'short_description', template: @template, type_value: 'text'
227
+ Field.create name: 'Long description', code_name: 'long_description', template: @template, type_value: 'html'
228
+
229
+ visit pages.new_page_path
230
+ fill_in 'Name', with: 'Page'
231
+ click_button 'Create Page'
232
+ page.should have_content 'added successfully'
233
+
234
+ _page = Page.first
235
+ _page.short_description.should == ''
236
+
237
+ visit pages.edit_page_path(_page)
238
+
239
+ fill_in 'Short description', with: 'This is short description'
240
+ fill_in 'Long description', with: 'This is long description'
241
+
242
+ click_button 'Update Page'
243
+
244
+ _page.reload
245
+ _page.short_description.should == 'This is short description'
246
+ end
247
+
248
+ it 'should change fields if template change' do
249
+ Field.create name: 'Price', code_name: 'price', template: @template, type_value: 'float'
250
+ _template = Template.create name: 'Brand', code_name: 'brand'
251
+ Field.create name: 'Amount', code_name: 'amount', template: _template, type_value: 'integer'
252
+
253
+ visit pages.new_page_path
254
+ fill_in 'Name', with: 'Simple page'
255
+ click_button 'Create Page'
256
+ _page = Page.first
257
+ visit pages.edit_page_path(_page)
258
+ page.should have_selector('#fields_price')
259
+ fill_in 'Price', with: '250.20'
260
+ click_button 'Update Page'
261
+ _page.reload
262
+ _page.price.should == 250.2
263
+ visit pages.edit_page_path(_page)
264
+ select 'Brand', from: 'Template'
265
+ click_button 'Update Page'
266
+ _page.reload
267
+ _page.template.should == _template
268
+ _page.price.should be_nil
269
+ _page.amount.should == 0
270
+ visit pages.edit_page_path(_page)
271
+ page.should_not have_selector('#fields_price')
272
+ page.should have_selector('#fields_amount')
273
+ fill_in 'Amount', with: 200
274
+ click_button 'Update Page'
275
+ _page.reload
276
+ _page.amount.should == 200
277
+ end
278
+ end
279
+ end
280
+ end