alchemy_cms 3.1.3 → 3.2.0.beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.editorconfig +2 -2
- data/.hound.yml +2 -0
- data/.rubocop.yml +1063 -0
- data/.travis.yml +14 -10
- data/Gemfile +4 -7
- data/README.md +16 -8
- data/alchemy_cms.gemspec +8 -7
- data/app/assets/javascripts/alchemy/alchemy.base.js.coffee +10 -11
- data/app/assets/javascripts/alchemy/alchemy.js +1 -1
- data/app/assets/stylesheets/alchemy/{admin.css.scss → admin.scss} +1 -0
- data/app/assets/stylesheets/alchemy/{icon-font.css.scss → icon-font.scss} +0 -0
- data/app/assets/stylesheets/alchemy/{menubar.css.scss → menubar.scss} +0 -0
- data/app/assets/stylesheets/alchemy/{print.css.scss → print.scss} +0 -0
- data/app/assets/stylesheets/alchemy/selects.scss +0 -6
- data/app/controllers/alchemy/admin/contents_controller.rb +3 -4
- data/app/controllers/alchemy/admin/pictures_controller.rb +0 -2
- data/app/controllers/alchemy/api/contents_controller.rb +1 -1
- data/app/controllers/alchemy/api/elements_controller.rb +2 -2
- data/app/controllers/alchemy/api/pages_controller.rb +1 -1
- data/app/controllers/alchemy/elements_controller.rb +0 -6
- data/app/controllers/alchemy/pages_controller.rb +17 -13
- data/app/controllers/alchemy/pictures_controller.rb +1 -0
- data/app/helpers/alchemy/admin/navigation_helper.rb +1 -1
- data/app/models/alchemy/element.rb +41 -17
- data/app/models/alchemy/page/page_naming.rb +16 -29
- data/bin/alchemy +1 -1
- data/config/routes.rb +1 -2
- data/db/migrate/20130827094554_alchemy_two_point_six.rb +0 -17
- data/lib/alchemy/capistrano.rb +3 -4
- data/lib/alchemy/controller_actions.rb +2 -1
- data/lib/alchemy/engine.rb +1 -0
- data/lib/alchemy/errors.rb +7 -0
- data/lib/alchemy/essence.rb +4 -4
- data/lib/alchemy/permissions.rb +1 -1
- data/lib/alchemy/shell.rb +26 -11
- data/lib/alchemy/test_support/controller_requests.rb +48 -12
- data/lib/alchemy/upgrader.rb +1 -0
- data/lib/alchemy/upgrader/three_point_one.rb +0 -1
- data/lib/alchemy/upgrader/three_point_two.rb +39 -0
- data/lib/alchemy/version.rb +1 -1
- data/lib/rails/templates/alchemy.rb +2 -2
- data/lib/tasks/alchemy/install.rake +2 -1
- data/spec/controllers/admin/attachments_controller_spec.rb +14 -14
- data/spec/controllers/admin/clipboard_controller_spec.rb +5 -5
- data/spec/controllers/admin/contents_controller_spec.rb +8 -14
- data/spec/controllers/admin/dashboard_controller_spec.rb +12 -12
- data/spec/controllers/admin/elements_controller_spec.rb +30 -31
- data/spec/controllers/admin/essence_files_controller_spec.rb +6 -6
- data/spec/controllers/admin/essence_pictures_controller_spec.rb +17 -17
- data/spec/controllers/admin/languages_controller_spec.rb +3 -3
- data/spec/controllers/admin/layoutpages_controller_spec.rb +3 -3
- data/spec/controllers/admin/pages_controller_spec.rb +48 -48
- data/spec/controllers/admin/pictures_controller_spec.rb +19 -19
- data/spec/controllers/admin/resources_controller_spec.rb +2 -2
- data/spec/controllers/admin/trash_controller_spec.rb +5 -5
- data/spec/controllers/alchemy/admin/tags_controller_spec.rb +5 -5
- data/spec/controllers/alchemy/api/contents_controller_spec.rb +46 -11
- data/spec/controllers/alchemy/api/elements_controller_spec.rb +42 -14
- data/spec/controllers/alchemy/api/pages_controller_spec.rb +26 -16
- data/spec/controllers/attachments_controller_spec.rb +7 -7
- data/spec/controllers/elements_controller_spec.rb +16 -19
- data/spec/controllers/messages_controller_spec.rb +15 -15
- data/spec/controllers/pages_controller_spec.rb +16 -25
- data/spec/controllers/pictures_controller_spec.rb +75 -49
- data/spec/dummy/Rakefile +1 -1
- data/spec/dummy/app/assets/stylesheets/application.css +5 -3
- data/spec/dummy/config/application.rb +11 -1
- data/spec/dummy/config/boot.rb +1 -1
- data/spec/dummy/config/environment.rb +1 -1
- data/spec/dummy/config/environments/development.rb +14 -2
- data/spec/dummy/config/environments/production.rb +18 -21
- data/spec/dummy/config/environments/test.rb +9 -4
- data/spec/dummy/config/initializers/assets.rb +11 -0
- data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/spec/dummy/config/initializers/mime_types.rb +0 -1
- data/spec/dummy/config/initializers/session_store.rb +1 -1
- data/spec/dummy/config/secrets.yml +22 -0
- data/spec/dummy/db/migrate/20130827094554_alchemy_two_point_six.rb +380 -0
- data/spec/dummy/db/migrate/20130828121054_remove_do_not_index_from_alchemy_essence_texts.rb +5 -0
- data/spec/dummy/db/migrate/20130828121120_remove_do_not_index_from_alchemy_essence_richtexts.rb +5 -0
- data/spec/dummy/db/migrate/20130918201742_add_published_at_to_alchemy_pages.rb +5 -0
- data/spec/dummy/db/migrate/20150122213511_acts_as_taggable_on_migration.acts_as_taggable_on_engine.rb +31 -0
- data/{db/migrate/20140107192720_add_missing_unique_indices_to_tags_and_taggings.rb → spec/dummy/db/migrate/20150122213512_add_missing_unique_indices.acts_as_taggable_on_engine.rb} +5 -6
- data/{db/migrate/20140701160159_add_taggings_counter_cache_to_tags.rb → spec/dummy/db/migrate/20150122213513_add_taggings_counter_cache_to_tags.acts_as_taggable_on_engine.rb} +2 -1
- data/{db/migrate/20140701160225_add_missing_taggable_index.rb → spec/dummy/db/migrate/20150122213514_add_missing_taggable_index.acts_as_taggable_on_engine.rb} +1 -0
- data/spec/dummy/db/schema.rb +27 -31
- data/spec/dummy/public/404.html +20 -11
- data/spec/dummy/public/422.html +20 -11
- data/spec/dummy/public/500.html +19 -10
- data/spec/features/admin/page_creation_feature_spec.rb +2 -2
- data/spec/libraries/resource_spec.rb +1 -1
- data/spec/libraries/shell_spec.rb +2 -0
- data/spec/models/page_spec.rb +1 -13
- data/spec/spec_helper.rb +6 -4
- data/spec/support/rspec-activemodel-mocks_patch.rb +8 -0
- metadata +63 -56
- data/app/controllers/alchemy/contents_controller.rb +0 -18
- data/spec/controllers/contents_controller_spec.rb +0 -22
- data/spec/dummy/app/models/dummy_model.rb +0 -3
- data/spec/dummy/db/migrate/20130827094554_alchemy_two_point_six.rb +0 -1
- data/spec/dummy/db/migrate/20130828121054_remove_do_not_index_from_alchemy_essence_texts.rb +0 -1
- data/spec/dummy/db/migrate/20130828121120_remove_do_not_index_from_alchemy_essence_richtexts.rb +0 -1
- data/spec/dummy/db/migrate/20130918201742_add_published_at_to_alchemy_pages.rb +0 -1
- data/spec/dummy/db/migrate/20140107192720_add_missing_unique_indices_to_tags_and_taggings.rb +0 -1
- data/spec/dummy/db/migrate/20140701160159_add_taggings_counter_cache_to_tags.rb +0 -1
- data/spec/dummy/db/migrate/20140701160225_add_missing_taggable_index.rb +0 -1
- data/spec/dummy/db/migrate/20150412103152_create_dummy_model.rb +0 -7
- data/spec/dummy/spec/javascripts +0 -1
- data/spec/models/dummy_model_spec.rb +0 -11
|
@@ -18,13 +18,13 @@ module Alchemy
|
|
|
18
18
|
|
|
19
19
|
describe "#insert" do
|
|
20
20
|
it "should hold element ids" do
|
|
21
|
-
|
|
21
|
+
alchemy_xhr :post, :insert, {remarkable_type: 'elements', remarkable_id: element.id}
|
|
22
22
|
expect(session[:alchemy_clipboard]['elements']).to eq([{'id' => element.id.to_s, 'action' => 'copy'}])
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
it "should not have the same element twice" do
|
|
26
26
|
session[:alchemy_clipboard]['elements'] = [{'id' => element.id.to_s, 'action' => 'copy'}]
|
|
27
|
-
|
|
27
|
+
alchemy_xhr :post, :insert, {remarkable_type: 'elements', remarkable_id: element.id}
|
|
28
28
|
expect(session[:alchemy_clipboard]['elements'].collect { |e| e['id'] }).not_to eq([element.id, element.id])
|
|
29
29
|
end
|
|
30
30
|
end
|
|
@@ -33,7 +33,7 @@ module Alchemy
|
|
|
33
33
|
it "should remove element ids from clipboard" do
|
|
34
34
|
session[:alchemy_clipboard]['elements'] = [{'id' => element.id.to_s, 'action' => 'copy'}]
|
|
35
35
|
session[:alchemy_clipboard]['elements'] << {'id' => another_element.id.to_s, 'action' => 'copy'}
|
|
36
|
-
|
|
36
|
+
alchemy_xhr :delete, :remove, {remarkable_type: 'elements', remarkable_id: another_element.id}
|
|
37
37
|
expect(session[:alchemy_clipboard]['elements']).to eq([{'id' => element.id.to_s, 'action' => 'copy'}])
|
|
38
38
|
end
|
|
39
39
|
end
|
|
@@ -43,7 +43,7 @@ module Alchemy
|
|
|
43
43
|
context "with elements as remarkable_type" do
|
|
44
44
|
it "should clear the elements clipboard" do
|
|
45
45
|
session[:alchemy_clipboard]['elements'] = [{'id' => element.id.to_s}]
|
|
46
|
-
|
|
46
|
+
alchemy_xhr :delete, :clear, {remarkable_type: 'elements'}
|
|
47
47
|
expect(session[:alchemy_clipboard]['elements']).to be_empty
|
|
48
48
|
end
|
|
49
49
|
end
|
|
@@ -51,7 +51,7 @@ module Alchemy
|
|
|
51
51
|
context "with pages as remarkable_type" do
|
|
52
52
|
it "should clear the pages clipboard" do
|
|
53
53
|
session[:alchemy_clipboard]['pages'] = [{'id' => public_page.id.to_s}]
|
|
54
|
-
|
|
54
|
+
alchemy_xhr :delete, :clear, {remarkable_type: 'pages'}
|
|
55
55
|
expect(session[:alchemy_clipboard]['pages']).to be_empty
|
|
56
56
|
end
|
|
57
57
|
end
|
|
@@ -19,12 +19,12 @@ module Alchemy
|
|
|
19
19
|
|
|
20
20
|
it "creates a content from name" do
|
|
21
21
|
expect(Content).to receive(:create_from_scratch).and_return(content)
|
|
22
|
-
|
|
22
|
+
alchemy_xhr :post, :create, {content: {element_id: element.id, name: 'headline'}}
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
it "creates a content from essence_type" do
|
|
26
26
|
expect(Content).to receive(:create_from_scratch).and_return(content)
|
|
27
|
-
|
|
27
|
+
alchemy_xhr :post, :create, {content: {element_id: element.id, essence_type: 'EssencePicture'}}
|
|
28
28
|
end
|
|
29
29
|
end
|
|
30
30
|
|
|
@@ -34,14 +34,14 @@ module Alchemy
|
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
it "adds it into the gallery editor" do
|
|
37
|
-
|
|
37
|
+
alchemy_xhr :post, :create, attributes
|
|
38
38
|
expect(assigns(:content_dom_id)).to eq("#add_picture_#{element.id}")
|
|
39
39
|
end
|
|
40
40
|
|
|
41
41
|
context 'with picture_id given' do
|
|
42
42
|
it "assigns the picture" do
|
|
43
43
|
expect_any_instance_of(Content).to receive(:update_essence).with(picture_id: '1')
|
|
44
|
-
|
|
44
|
+
alchemy_xhr :post, :create, attributes.merge(picture_id: '1')
|
|
45
45
|
end
|
|
46
46
|
end
|
|
47
47
|
end
|
|
@@ -54,23 +54,17 @@ module Alchemy
|
|
|
54
54
|
|
|
55
55
|
it "should update a content via ajax" do
|
|
56
56
|
expect(content.essence).to receive(:update).with('ingredient' => 'Peters Petshop')
|
|
57
|
-
|
|
57
|
+
alchemy_xhr :post, :update, {id: content.id, content: {ingredient: 'Peters Petshop'}}
|
|
58
58
|
end
|
|
59
59
|
end
|
|
60
60
|
|
|
61
61
|
describe "#order" do
|
|
62
62
|
context "with content_ids in params" do
|
|
63
|
-
let(:element) do
|
|
64
|
-
create(:element, name: 'all_you_can_eat', create_contents_after_create: true)
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
let(:content_ids) { element.contents.pluck(:id).shuffle }
|
|
68
|
-
|
|
69
63
|
it "should reorder the contents" do
|
|
70
|
-
|
|
71
|
-
|
|
64
|
+
content_ids = element.contents.essence_texts.pluck(:id)
|
|
65
|
+
alchemy_xhr :post, :order, {content_ids: content_ids.reverse}
|
|
72
66
|
expect(response.status).to eq(200)
|
|
73
|
-
expect(element.contents
|
|
67
|
+
expect(element.contents.essence_texts.pluck(:id)).to eq(content_ids.reverse)
|
|
74
68
|
end
|
|
75
69
|
end
|
|
76
70
|
end
|
|
@@ -13,12 +13,12 @@ module Alchemy
|
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
it "assigns @last_edited_pages" do
|
|
16
|
-
|
|
16
|
+
alchemy_get :index
|
|
17
17
|
expect(assigns(:last_edited_pages)).to eq([])
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
it "assigns @locked_pages" do
|
|
21
|
-
|
|
21
|
+
alchemy_get :index
|
|
22
22
|
expect(assigns(:locked_pages)).to eq([])
|
|
23
23
|
end
|
|
24
24
|
|
|
@@ -31,14 +31,14 @@ module Alchemy
|
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
it "assigns @online_users" do
|
|
34
|
-
|
|
34
|
+
alchemy_get :index
|
|
35
35
|
expect(assigns(:online_users)).to eq([another_user])
|
|
36
36
|
end
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
context 'without other users online' do
|
|
40
40
|
it "does not assign @online_users" do
|
|
41
|
-
|
|
41
|
+
alchemy_get :index
|
|
42
42
|
expect(assigns(:online_users)).to eq([])
|
|
43
43
|
end
|
|
44
44
|
end
|
|
@@ -51,20 +51,20 @@ module Alchemy
|
|
|
51
51
|
end
|
|
52
52
|
|
|
53
53
|
it "assigns @first_time" do
|
|
54
|
-
|
|
54
|
+
alchemy_get :index
|
|
55
55
|
expect(assigns(:first_time)).to eq(false)
|
|
56
56
|
end
|
|
57
57
|
end
|
|
58
58
|
|
|
59
59
|
it "assigns @sites" do
|
|
60
|
-
|
|
60
|
+
alchemy_get :index
|
|
61
61
|
expect(assigns(:sites)).to eq(Site.all)
|
|
62
62
|
end
|
|
63
63
|
end
|
|
64
64
|
|
|
65
65
|
describe '#info' do
|
|
66
66
|
it "assigns @alchemy_version with the current Alchemy version" do
|
|
67
|
-
|
|
67
|
+
alchemy_get :info
|
|
68
68
|
expect(assigns(:alchemy_version)).to eq(Alchemy.version)
|
|
69
69
|
end
|
|
70
70
|
end
|
|
@@ -77,7 +77,7 @@ module Alchemy
|
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
it "should render 'false'" do
|
|
80
|
-
|
|
80
|
+
alchemy_get :update_check
|
|
81
81
|
expect(response.body).to eq('false')
|
|
82
82
|
end
|
|
83
83
|
end
|
|
@@ -89,7 +89,7 @@ module Alchemy
|
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
it "should render 'true'" do
|
|
92
|
-
|
|
92
|
+
alchemy_get :update_check
|
|
93
93
|
expect(response.body).to eq('true')
|
|
94
94
|
end
|
|
95
95
|
end
|
|
@@ -103,7 +103,7 @@ module Alchemy
|
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
it "should have response code of 200" do
|
|
106
|
-
|
|
106
|
+
alchemy_get :update_check
|
|
107
107
|
expect(response.code).to eq('200')
|
|
108
108
|
end
|
|
109
109
|
end
|
|
@@ -117,7 +117,7 @@ module Alchemy
|
|
|
117
117
|
}
|
|
118
118
|
|
|
119
119
|
it "should have response code of 200" do
|
|
120
|
-
|
|
120
|
+
alchemy_get :update_check
|
|
121
121
|
expect(response.code).to eq('200')
|
|
122
122
|
end
|
|
123
123
|
end
|
|
@@ -130,7 +130,7 @@ module Alchemy
|
|
|
130
130
|
}
|
|
131
131
|
|
|
132
132
|
it "should have status code 503" do
|
|
133
|
-
|
|
133
|
+
alchemy_get :update_check
|
|
134
134
|
expect(response.code).to eq('503')
|
|
135
135
|
end
|
|
136
136
|
end
|
|
@@ -25,7 +25,7 @@ module Alchemy
|
|
|
25
25
|
|
|
26
26
|
it "groups elements by cell" do
|
|
27
27
|
expect(alchemy_page).to receive(:elements_grouped_by_cells)
|
|
28
|
-
|
|
28
|
+
alchemy_get :index, {page_id: alchemy_page.id}
|
|
29
29
|
expect(assigns(:cells)).to eq([cell])
|
|
30
30
|
end
|
|
31
31
|
end
|
|
@@ -37,25 +37,24 @@ module Alchemy
|
|
|
37
37
|
|
|
38
38
|
it "assigns page elements" do
|
|
39
39
|
expect(alchemy_page).to receive(:elements).and_return(double(not_trashed: []))
|
|
40
|
-
|
|
40
|
+
alchemy_get :index, {page_id: alchemy_page.id}
|
|
41
41
|
end
|
|
42
42
|
end
|
|
43
43
|
end
|
|
44
44
|
|
|
45
45
|
describe '#list' do
|
|
46
|
-
let(:alchemy_page) { build_stubbed(:page) }
|
|
47
|
-
|
|
48
46
|
context 'without page_id, but with page_urlname' do
|
|
49
47
|
it "loads page from urlname" do
|
|
50
|
-
expect
|
|
51
|
-
|
|
48
|
+
expect {
|
|
49
|
+
alchemy_xhr :get, :list, {page_urlname: alchemy_page.urlname}
|
|
50
|
+
}.to_not raise_error
|
|
52
51
|
end
|
|
53
52
|
|
|
54
53
|
describe 'view' do
|
|
55
54
|
render_views
|
|
56
55
|
|
|
57
56
|
it "should return a select tag with elements" do
|
|
58
|
-
|
|
57
|
+
alchemy_xhr :get, :list, {page_urlname: alchemy_page.urlname}
|
|
59
58
|
expect(response.body).to match(/select(.*)elements_from_page_selector(.*)option/)
|
|
60
59
|
end
|
|
61
60
|
end
|
|
@@ -63,7 +62,7 @@ module Alchemy
|
|
|
63
62
|
|
|
64
63
|
context 'with page_id' do
|
|
65
64
|
it "loads page from urlname" do
|
|
66
|
-
|
|
65
|
+
alchemy_xhr :get, :list, {page_id: alchemy_page.id}
|
|
67
66
|
expect(assigns(:page_id)).to eq(alchemy_page.id.to_s)
|
|
68
67
|
end
|
|
69
68
|
end
|
|
@@ -76,7 +75,7 @@ module Alchemy
|
|
|
76
75
|
let(:element_ids) { [element_1.id, element_3.id, element_2.id] }
|
|
77
76
|
|
|
78
77
|
it "sets new position for given element ids" do
|
|
79
|
-
|
|
78
|
+
alchemy_xhr :post, :order, element_ids: element_ids
|
|
80
79
|
expect(Element.all.pluck(:id)).to eq(element_ids)
|
|
81
80
|
end
|
|
82
81
|
|
|
@@ -89,24 +88,24 @@ module Alchemy
|
|
|
89
88
|
end
|
|
90
89
|
|
|
91
90
|
it "sets a list of trashed element ids" do
|
|
92
|
-
|
|
91
|
+
alchemy_xhr :post, :order, element_ids: [trashed_element.id]
|
|
93
92
|
expect(assigns(:trashed_elements).to_a).to eq [trashed_element.id]
|
|
94
93
|
end
|
|
95
94
|
|
|
96
95
|
it "sets a new position to the element" do
|
|
97
|
-
|
|
96
|
+
alchemy_xhr :post, :order, element_ids: [trashed_element.id]
|
|
98
97
|
trashed_element.reload
|
|
99
98
|
expect(trashed_element.position).to_not be_nil
|
|
100
99
|
end
|
|
101
100
|
|
|
102
101
|
it "should assign the (new) page_id to the element" do
|
|
103
|
-
|
|
102
|
+
alchemy_xhr :post, :order, element_ids: [trashed_element.id], page_id: 1, cell_id: nil
|
|
104
103
|
trashed_element.reload
|
|
105
104
|
expect(trashed_element.page_id).to be 1
|
|
106
105
|
end
|
|
107
106
|
|
|
108
107
|
it "should assign the (new) cell_id to the element" do
|
|
109
|
-
|
|
108
|
+
alchemy_xhr :post, :order, element_ids: [trashed_element.id], page_id: 1, cell_id: 5
|
|
110
109
|
trashed_element.reload
|
|
111
110
|
expect(trashed_element.cell_id).to be 5
|
|
112
111
|
end
|
|
@@ -122,7 +121,7 @@ module Alchemy
|
|
|
122
121
|
|
|
123
122
|
it "assign variable for all available element definitions" do
|
|
124
123
|
expect(alchemy_page).to receive(:available_element_definitions)
|
|
125
|
-
|
|
124
|
+
alchemy_get :new, {page_id: alchemy_page.id}
|
|
126
125
|
end
|
|
127
126
|
|
|
128
127
|
context "with elements in clipboard" do
|
|
@@ -132,7 +131,7 @@ module Alchemy
|
|
|
132
131
|
|
|
133
132
|
it "should load all elements from clipboard" do
|
|
134
133
|
expect(Element).to receive(:all_from_clipboard_for_page).and_return(clipboard_items)
|
|
135
|
-
|
|
134
|
+
alchemy_get :new, {page_id: alchemy_page.id}
|
|
136
135
|
expect(assigns(:clipboard_items)).to eq(clipboard_items)
|
|
137
136
|
end
|
|
138
137
|
end
|
|
@@ -143,7 +142,7 @@ module Alchemy
|
|
|
143
142
|
before { element }
|
|
144
143
|
|
|
145
144
|
it "should insert the element at bottom of list" do
|
|
146
|
-
|
|
145
|
+
alchemy_xhr :post, :create, {element: {name: 'news', page_id: alchemy_page.id}}
|
|
147
146
|
expect(alchemy_page.elements.count).to eq(2)
|
|
148
147
|
expect(alchemy_page.elements.last.name).to eq('news')
|
|
149
148
|
end
|
|
@@ -158,7 +157,7 @@ module Alchemy
|
|
|
158
157
|
end
|
|
159
158
|
|
|
160
159
|
it "should insert the element at top of list" do
|
|
161
|
-
|
|
160
|
+
alchemy_xhr :post, :create, {element: {name: 'news', page_id: alchemy_page.id}}
|
|
162
161
|
expect(alchemy_page.elements.count).to eq(2)
|
|
163
162
|
expect(alchemy_page.elements.first.name).to eq('news')
|
|
164
163
|
end
|
|
@@ -184,14 +183,14 @@ module Alchemy
|
|
|
184
183
|
end
|
|
185
184
|
|
|
186
185
|
it "should put the element in the correct cell" do
|
|
187
|
-
|
|
186
|
+
alchemy_xhr :post, :create, {element: {name: "article#header", page_id: page.id}}
|
|
188
187
|
expect(cell.elements.first).to be_an_instance_of(Element)
|
|
189
188
|
end
|
|
190
189
|
end
|
|
191
190
|
|
|
192
191
|
context "and no cell name in element name" do
|
|
193
192
|
it "should put the element in the main cell" do
|
|
194
|
-
|
|
193
|
+
alchemy_xhr :post, :create, {element: {name: "article", page_id: page.id}}
|
|
195
194
|
expect(page.elements.not_in_cell.first).to be_an_instance_of(Element)
|
|
196
195
|
end
|
|
197
196
|
end
|
|
@@ -217,7 +216,7 @@ module Alchemy
|
|
|
217
216
|
end
|
|
218
217
|
|
|
219
218
|
it "should create the element in the correct cell" do
|
|
220
|
-
|
|
219
|
+
alchemy_xhr :post, :create, {element: {page_id: page.id}, paste_from_clipboard: "#{element_in_clipboard.id}##{cell.name}"}
|
|
221
220
|
expect(cell.elements.first).to be_an_instance_of(Element)
|
|
222
221
|
end
|
|
223
222
|
|
|
@@ -227,7 +226,7 @@ module Alchemy
|
|
|
227
226
|
end
|
|
228
227
|
|
|
229
228
|
it "should set the correct position for the element" do
|
|
230
|
-
|
|
229
|
+
alchemy_xhr :post, :create, {element: {page_id: page.id}, paste_from_clipboard: "#{element_in_clipboard.id}##{cell.name}"}
|
|
231
230
|
expect(cell.elements.last.position).to eq(cell.elements.count)
|
|
232
231
|
end
|
|
233
232
|
end
|
|
@@ -235,7 +234,7 @@ module Alchemy
|
|
|
235
234
|
|
|
236
235
|
context "and no cell name in element name" do
|
|
237
236
|
it "should create the element in the nil cell" do
|
|
238
|
-
|
|
237
|
+
alchemy_xhr :post, :create, {element: {page_id: page.id}, paste_from_clipboard: "#{element_in_clipboard.id}"}
|
|
239
238
|
expect(page.elements.first.cell).to eq(nil)
|
|
240
239
|
end
|
|
241
240
|
end
|
|
@@ -263,7 +262,7 @@ module Alchemy
|
|
|
263
262
|
end
|
|
264
263
|
|
|
265
264
|
it "should insert the element at top of list" do
|
|
266
|
-
|
|
265
|
+
alchemy_xhr :post, :create, {element: {name: 'news', page_id: alchemy_page.id}, paste_from_clipboard: "#{element_in_clipboard.id}##{cell.name}"}
|
|
267
266
|
expect(cell.elements.count).to eq(2)
|
|
268
267
|
expect(cell.elements.first.name).to eq('news')
|
|
269
268
|
expect(cell.elements.first).not_to eq(element)
|
|
@@ -280,21 +279,21 @@ module Alchemy
|
|
|
280
279
|
end
|
|
281
280
|
|
|
282
281
|
it "should create an element from clipboard" do
|
|
283
|
-
|
|
282
|
+
alchemy_xhr :post, :create, {paste_from_clipboard: element_in_clipboard.id, element: {page_id: alchemy_page.id}}
|
|
284
283
|
expect(response.status).to eq(200)
|
|
285
284
|
expect(response.body).to match(/Successfully added new element/)
|
|
286
285
|
end
|
|
287
286
|
|
|
288
287
|
context "and with cut as action parameter" do
|
|
289
288
|
it "should also remove the element id from clipboard" do
|
|
290
|
-
|
|
289
|
+
alchemy_xhr :post, :create, {paste_from_clipboard: element_in_clipboard.id, element: {page_id: alchemy_page.id}}
|
|
291
290
|
expect(session[:alchemy_clipboard]['elements'].detect { |item| item['id'] == element_in_clipboard.id.to_s }).to be_nil
|
|
292
291
|
end
|
|
293
292
|
end
|
|
294
293
|
end
|
|
295
294
|
|
|
296
295
|
context 'if element could not be saved' do
|
|
297
|
-
subject {
|
|
296
|
+
subject { alchemy_post :create, {element: {page_id: alchemy_page.id}} }
|
|
298
297
|
|
|
299
298
|
before do
|
|
300
299
|
expect_any_instance_of(Element).to receive(:save).and_return false
|
|
@@ -376,20 +375,20 @@ module Alchemy
|
|
|
376
375
|
|
|
377
376
|
it "updates all contents in element" do
|
|
378
377
|
expect(element).to receive(:update_contents).with(contents_parameters)
|
|
379
|
-
|
|
378
|
+
alchemy_xhr :put, :update, {id: element.id}
|
|
380
379
|
end
|
|
381
380
|
|
|
382
381
|
it "updates the element" do
|
|
383
382
|
expect(controller).to receive(:element_params).and_return(element_parameters)
|
|
384
383
|
expect(element).to receive(:update_contents).and_return(true)
|
|
385
384
|
expect(element).to receive(:update_attributes!).with(element_parameters).and_return(true)
|
|
386
|
-
|
|
385
|
+
alchemy_xhr :put, :update, {id: element.id}
|
|
387
386
|
end
|
|
388
387
|
|
|
389
388
|
context "failed validations" do
|
|
390
389
|
it "displays validation failed notice" do
|
|
391
390
|
expect(element).to receive(:update_contents).and_return(false)
|
|
392
|
-
|
|
391
|
+
alchemy_xhr :put, :update, {id: element.id}
|
|
393
392
|
expect(assigns(:element_validated)).to be_falsey
|
|
394
393
|
end
|
|
395
394
|
end
|
|
@@ -430,7 +429,7 @@ module Alchemy
|
|
|
430
429
|
end
|
|
431
430
|
|
|
432
431
|
describe '#trash' do
|
|
433
|
-
subject {
|
|
432
|
+
subject { alchemy_xhr :delete, :trash, {id: element.id} }
|
|
434
433
|
|
|
435
434
|
let(:element) { build_stubbed(:element) }
|
|
436
435
|
|
|
@@ -443,7 +442,7 @@ module Alchemy
|
|
|
443
442
|
end
|
|
444
443
|
|
|
445
444
|
describe '#fold' do
|
|
446
|
-
subject {
|
|
445
|
+
subject { alchemy_xhr :post, :fold, {id: element.id} }
|
|
447
446
|
|
|
448
447
|
let(:element) { build_stubbed(:element) }
|
|
449
448
|
|
|
@@ -18,12 +18,12 @@ module Alchemy
|
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
it "assigns @essence_file with the EssenceFile found by id" do
|
|
21
|
-
|
|
21
|
+
alchemy_get :edit, id: essence_file.id
|
|
22
22
|
expect(assigns(:essence_file)).to eq(essence_file)
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
it "should assign @content with essence_file's content" do
|
|
26
|
-
|
|
26
|
+
alchemy_get :edit, id: essence_file.id
|
|
27
27
|
expect(assigns(:content)).to eq(content)
|
|
28
28
|
end
|
|
29
29
|
end
|
|
@@ -36,7 +36,7 @@ module Alchemy
|
|
|
36
36
|
end
|
|
37
37
|
|
|
38
38
|
it "should update the attributes of essence_file" do
|
|
39
|
-
|
|
39
|
+
alchemy_xhr :put, :update, id: essence_file.id, essence_file: {title: 'new title', css_class: 'left'}
|
|
40
40
|
expect(essence_file.title).to eq 'new title'
|
|
41
41
|
expect(essence_file.css_class).to eq 'left'
|
|
42
42
|
end
|
|
@@ -52,18 +52,18 @@ module Alchemy
|
|
|
52
52
|
end
|
|
53
53
|
|
|
54
54
|
it "should assign @attachment with the Attachment found by attachment_id" do
|
|
55
|
-
|
|
55
|
+
alchemy_xhr :put, :assign, content_id: content.id, attachment_id: attachment.id
|
|
56
56
|
expect(assigns(:attachment)).to eq(attachment)
|
|
57
57
|
end
|
|
58
58
|
|
|
59
59
|
it "should assign @content.essence.attachment with the attachment found by id" do
|
|
60
60
|
expect(content.essence).to receive(:attachment=).with(attachment)
|
|
61
|
-
|
|
61
|
+
alchemy_xhr :put, :assign, content_id: content.id, attachment_id: attachment.id
|
|
62
62
|
end
|
|
63
63
|
|
|
64
64
|
it "updates the @content.updated_at column" do
|
|
65
65
|
expect {
|
|
66
|
-
|
|
66
|
+
alchemy_xhr :put, :assign, content_id: content.id, attachment_id: attachment.id
|
|
67
67
|
}.to change(content, :updated_at)
|
|
68
68
|
end
|
|
69
69
|
end
|