alchemy_cms 3.1.3 → 3.2.0.beta

Sign up to get free protection for your applications and to get access to all the features.
Files changed (110) hide show
  1. checksums.yaml +4 -4
  2. data/.editorconfig +2 -2
  3. data/.hound.yml +2 -0
  4. data/.rubocop.yml +1063 -0
  5. data/.travis.yml +14 -10
  6. data/Gemfile +4 -7
  7. data/README.md +16 -8
  8. data/alchemy_cms.gemspec +8 -7
  9. data/app/assets/javascripts/alchemy/alchemy.base.js.coffee +10 -11
  10. data/app/assets/javascripts/alchemy/alchemy.js +1 -1
  11. data/app/assets/stylesheets/alchemy/{admin.css.scss → admin.scss} +1 -0
  12. data/app/assets/stylesheets/alchemy/{icon-font.css.scss → icon-font.scss} +0 -0
  13. data/app/assets/stylesheets/alchemy/{menubar.css.scss → menubar.scss} +0 -0
  14. data/app/assets/stylesheets/alchemy/{print.css.scss → print.scss} +0 -0
  15. data/app/assets/stylesheets/alchemy/selects.scss +0 -6
  16. data/app/controllers/alchemy/admin/contents_controller.rb +3 -4
  17. data/app/controllers/alchemy/admin/pictures_controller.rb +0 -2
  18. data/app/controllers/alchemy/api/contents_controller.rb +1 -1
  19. data/app/controllers/alchemy/api/elements_controller.rb +2 -2
  20. data/app/controllers/alchemy/api/pages_controller.rb +1 -1
  21. data/app/controllers/alchemy/elements_controller.rb +0 -6
  22. data/app/controllers/alchemy/pages_controller.rb +17 -13
  23. data/app/controllers/alchemy/pictures_controller.rb +1 -0
  24. data/app/helpers/alchemy/admin/navigation_helper.rb +1 -1
  25. data/app/models/alchemy/element.rb +41 -17
  26. data/app/models/alchemy/page/page_naming.rb +16 -29
  27. data/bin/alchemy +1 -1
  28. data/config/routes.rb +1 -2
  29. data/db/migrate/20130827094554_alchemy_two_point_six.rb +0 -17
  30. data/lib/alchemy/capistrano.rb +3 -4
  31. data/lib/alchemy/controller_actions.rb +2 -1
  32. data/lib/alchemy/engine.rb +1 -0
  33. data/lib/alchemy/errors.rb +7 -0
  34. data/lib/alchemy/essence.rb +4 -4
  35. data/lib/alchemy/permissions.rb +1 -1
  36. data/lib/alchemy/shell.rb +26 -11
  37. data/lib/alchemy/test_support/controller_requests.rb +48 -12
  38. data/lib/alchemy/upgrader.rb +1 -0
  39. data/lib/alchemy/upgrader/three_point_one.rb +0 -1
  40. data/lib/alchemy/upgrader/three_point_two.rb +39 -0
  41. data/lib/alchemy/version.rb +1 -1
  42. data/lib/rails/templates/alchemy.rb +2 -2
  43. data/lib/tasks/alchemy/install.rake +2 -1
  44. data/spec/controllers/admin/attachments_controller_spec.rb +14 -14
  45. data/spec/controllers/admin/clipboard_controller_spec.rb +5 -5
  46. data/spec/controllers/admin/contents_controller_spec.rb +8 -14
  47. data/spec/controllers/admin/dashboard_controller_spec.rb +12 -12
  48. data/spec/controllers/admin/elements_controller_spec.rb +30 -31
  49. data/spec/controllers/admin/essence_files_controller_spec.rb +6 -6
  50. data/spec/controllers/admin/essence_pictures_controller_spec.rb +17 -17
  51. data/spec/controllers/admin/languages_controller_spec.rb +3 -3
  52. data/spec/controllers/admin/layoutpages_controller_spec.rb +3 -3
  53. data/spec/controllers/admin/pages_controller_spec.rb +48 -48
  54. data/spec/controllers/admin/pictures_controller_spec.rb +19 -19
  55. data/spec/controllers/admin/resources_controller_spec.rb +2 -2
  56. data/spec/controllers/admin/trash_controller_spec.rb +5 -5
  57. data/spec/controllers/alchemy/admin/tags_controller_spec.rb +5 -5
  58. data/spec/controllers/alchemy/api/contents_controller_spec.rb +46 -11
  59. data/spec/controllers/alchemy/api/elements_controller_spec.rb +42 -14
  60. data/spec/controllers/alchemy/api/pages_controller_spec.rb +26 -16
  61. data/spec/controllers/attachments_controller_spec.rb +7 -7
  62. data/spec/controllers/elements_controller_spec.rb +16 -19
  63. data/spec/controllers/messages_controller_spec.rb +15 -15
  64. data/spec/controllers/pages_controller_spec.rb +16 -25
  65. data/spec/controllers/pictures_controller_spec.rb +75 -49
  66. data/spec/dummy/Rakefile +1 -1
  67. data/spec/dummy/app/assets/stylesheets/application.css +5 -3
  68. data/spec/dummy/config/application.rb +11 -1
  69. data/spec/dummy/config/boot.rb +1 -1
  70. data/spec/dummy/config/environment.rb +1 -1
  71. data/spec/dummy/config/environments/development.rb +14 -2
  72. data/spec/dummy/config/environments/production.rb +18 -21
  73. data/spec/dummy/config/environments/test.rb +9 -4
  74. data/spec/dummy/config/initializers/assets.rb +11 -0
  75. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  76. data/spec/dummy/config/initializers/mime_types.rb +0 -1
  77. data/spec/dummy/config/initializers/session_store.rb +1 -1
  78. data/spec/dummy/config/secrets.yml +22 -0
  79. data/spec/dummy/db/migrate/20130827094554_alchemy_two_point_six.rb +380 -0
  80. data/spec/dummy/db/migrate/20130828121054_remove_do_not_index_from_alchemy_essence_texts.rb +5 -0
  81. data/spec/dummy/db/migrate/20130828121120_remove_do_not_index_from_alchemy_essence_richtexts.rb +5 -0
  82. data/spec/dummy/db/migrate/20130918201742_add_published_at_to_alchemy_pages.rb +5 -0
  83. data/spec/dummy/db/migrate/20150122213511_acts_as_taggable_on_migration.acts_as_taggable_on_engine.rb +31 -0
  84. 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
  85. 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
  86. 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
  87. data/spec/dummy/db/schema.rb +27 -31
  88. data/spec/dummy/public/404.html +20 -11
  89. data/spec/dummy/public/422.html +20 -11
  90. data/spec/dummy/public/500.html +19 -10
  91. data/spec/features/admin/page_creation_feature_spec.rb +2 -2
  92. data/spec/libraries/resource_spec.rb +1 -1
  93. data/spec/libraries/shell_spec.rb +2 -0
  94. data/spec/models/page_spec.rb +1 -13
  95. data/spec/spec_helper.rb +6 -4
  96. data/spec/support/rspec-activemodel-mocks_patch.rb +8 -0
  97. metadata +63 -56
  98. data/app/controllers/alchemy/contents_controller.rb +0 -18
  99. data/spec/controllers/contents_controller_spec.rb +0 -22
  100. data/spec/dummy/app/models/dummy_model.rb +0 -3
  101. data/spec/dummy/db/migrate/20130827094554_alchemy_two_point_six.rb +0 -1
  102. data/spec/dummy/db/migrate/20130828121054_remove_do_not_index_from_alchemy_essence_texts.rb +0 -1
  103. data/spec/dummy/db/migrate/20130828121120_remove_do_not_index_from_alchemy_essence_richtexts.rb +0 -1
  104. data/spec/dummy/db/migrate/20130918201742_add_published_at_to_alchemy_pages.rb +0 -1
  105. data/spec/dummy/db/migrate/20140107192720_add_missing_unique_indices_to_tags_and_taggings.rb +0 -1
  106. data/spec/dummy/db/migrate/20140701160159_add_taggings_counter_cache_to_tags.rb +0 -1
  107. data/spec/dummy/db/migrate/20140701160225_add_missing_taggable_index.rb +0 -1
  108. data/spec/dummy/db/migrate/20150412103152_create_dummy_model.rb +0 -7
  109. data/spec/dummy/spec/javascripts +0 -1
  110. data/spec/models/dummy_model_spec.rb +0 -11
@@ -8,33 +8,45 @@ end
8
8
  module Alchemy
9
9
  describe PicturesController do
10
10
 
11
- let(:public_page) { FactoryGirl.create(:public_page, restricted: false) }
12
- let(:restricted_page) { FactoryGirl.create(:public_page, restricted: true) }
13
- let(:element) { FactoryGirl.create(:element, page: public_page, name: 'bild', create_contents_after_create: true) }
14
- let(:restricted_element) { FactoryGirl.create(:element, page: restricted_page, name: 'bild', create_contents_after_create: true) }
15
- let(:picture) { Picture.create(image_file: fixture_file_upload(File.expand_path('../../fixtures/image.png', __FILE__), 'image/png')) }
11
+ let(:public_page) { create(:public_page, restricted: false) }
12
+ let(:restricted_page) { create(:public_page, restricted: true) }
13
+ let(:element) { create(:element, page: public_page, name: 'bild', create_contents_after_create: true) }
14
+ let(:restricted_element) { create(:element, page: restricted_page, name: 'bild', create_contents_after_create: true) }
15
+ let(:picture) { create(:picture, image_file: fixture_file_upload(File.expand_path('../../fixtures/image.png', __FILE__), 'image/png')) }
16
16
 
17
17
  describe '#zoom' do
18
- let(:picture) { Picture.create(image_file: fixture_file_upload(File.expand_path('../../fixtures/80x60.png', __FILE__), 'image/png')) }
18
+ let(:picture) do
19
+ create(:picture, image_file: fixture_file_upload(File.expand_path('../../fixtures/80x60.png', __FILE__), 'image/png'))
20
+ end
19
21
 
20
22
  before { sign_in(editor_user) }
21
23
 
22
24
  it "renders the original image without any resizing" do
23
- get :zoom, id: picture.id, format: :png, sh: picture.security_token
25
+ alchemy_get :zoom, id: picture.id, name: picture.urlname, format: :png, sh: picture.security_token
24
26
  expect(response.body[0x10..0x18].unpack('NN')).to eq([80, 60])
25
27
  end
26
28
  end
27
29
 
30
+ describe '#show' do
31
+ it "skips the session cookie" do
32
+ expect {
33
+ alchemy_get :show, id: picture.id, name: picture.urlname, format: :png, sh: picture.security_token
34
+ }.to change {
35
+ request.session_options.fetch(:skip) { false }
36
+ }.to(true)
37
+ end
38
+ end
39
+
28
40
  context "Requesting a picture with tempared security token" do
29
41
  it "should render status 400" do
30
- get :show, id: picture.id, format: :png, sh: '14m4b4dh4ck3r'
42
+ alchemy_get :show, id: picture.id, name: picture.urlname, format: :png, sh: '14m4b4dh4ck3r'
31
43
  expect(response.status).to eq(400)
32
44
  end
33
45
  end
34
46
 
35
47
  context "Requesting a picture with another format then the original image" do
36
48
  it "should convert the picture format" do
37
- get :show, id: picture.id, format: :jpeg, sh: picture.security_token
49
+ alchemy_get :show, id: picture.id, name: picture.urlname, format: :jpeg, sh: picture.security_token
38
50
  expect(response.content_type).to eq('image/jpeg')
39
51
  end
40
52
  end
@@ -42,47 +54,49 @@ module Alchemy
42
54
  context "Requesting a picture with not allowed format" do
43
55
  it "should raise error" do
44
56
  expect {
45
- get :show, id: picture.id, format: :wim, sh: picture.security_token
57
+ alchemy_get :show, id: picture.id, name: picture.urlname, format: :wim, sh: picture.security_token
46
58
  }.to raise_error(ActionController::UnknownFormat)
47
59
  end
48
60
  end
49
61
 
50
62
  describe '#thumbnail' do
51
- let(:picture) { Picture.create(image_file: fixture_file_upload(File.expand_path('../../fixtures/500x500.png', __FILE__), 'image/png')) }
63
+ let(:picture) do
64
+ create(:picture, image_file: fixture_file_upload(File.expand_path('../../fixtures/500x500.png', __FILE__), 'image/png'))
65
+ end
52
66
 
53
67
  before { sign_in(author_user) }
54
68
 
55
69
  context 'with size param set to small' do
56
70
  it "resizes the image to 80x60 while maintaining aspect ratio" do
57
- get :thumbnail, id: picture.id, size: 'small', format: :png, sh: picture.security_token(size: 'small')
71
+ alchemy_get :thumbnail, id: picture.id, name: picture.urlname, size: 'small', format: :png, sh: picture.security_token(size: 'small')
58
72
  expect(response.body[0x10..0x18].unpack('NN')).to eq([60, 60])
59
73
  end
60
74
  end
61
75
 
62
76
  context 'with size param set to medium' do
63
77
  it "resizes the image to 160x120 while maintaining aspect ratio" do
64
- get :thumbnail, id: picture.id, size: 'medium', format: :png, sh: picture.security_token(size: 'medium')
78
+ alchemy_get :thumbnail, id: picture.id, name: picture.urlname, size: 'medium', format: :png, sh: picture.security_token(size: 'medium')
65
79
  expect(response.body[0x10..0x18].unpack('NN')).to eq([120, 120])
66
80
  end
67
81
  end
68
82
 
69
83
  context 'with size param set to large' do
70
84
  it "resizes the image to 240x180 while maintaining aspect ratio" do
71
- get :thumbnail, id: picture.id, size: 'large', format: :png, sh: picture.security_token(size: 'large')
85
+ alchemy_get :thumbnail, id: picture.id, name: picture.urlname, size: 'large', format: :png, sh: picture.security_token(size: 'large')
72
86
  expect(response.body[0x10..0x18].unpack('NN')).to eq([180, 180])
73
87
  end
74
88
  end
75
89
 
76
90
  context 'with size param set to nil' do
77
91
  it "resizes the image to 111x93 while maintaining aspect ratio" do
78
- get :thumbnail, id: picture.id, format: :png, sh: picture.security_token
92
+ alchemy_get :thumbnail, id: picture.id, name: picture.urlname, format: :png, sh: picture.security_token
79
93
  expect(response.body[0x10..0x18].unpack('NN')).to eq([93, 93])
80
94
  end
81
95
  end
82
96
 
83
97
  context 'with size param set to another value' do
84
98
  it "resizes the image to the given size while maintaining aspect ratio" do
85
- get :thumbnail, id: picture.id, size: '33x33', format: :png, sh: picture.security_token(size: '33x33')
99
+ alchemy_get :thumbnail, id: picture.id, name: picture.urlname, size: '33x33', format: :png, sh: picture.security_token(size: '33x33')
86
100
  expect(response.body[0x10..0x18].unpack('NN')).to eq([33, 33])
87
101
  end
88
102
  end
@@ -96,16 +110,18 @@ module Alchemy
96
110
 
97
111
  it "raises missing file error" do
98
112
  expect {
99
- get :show, id: picture.id, format: :png, sh: picture.security_token
113
+ alchemy_get :show, id: picture.id, name: picture.urlname, format: :png, sh: picture.security_token
100
114
  }.to raise_error(Alchemy::MissingImageFileError)
101
115
  end
102
116
  end
103
117
 
104
118
  context "Requesting a picture with crop_from and crop_size parameters" do
105
- let(:picture) { Picture.create(image_file: fixture_file_upload(File.expand_path('../../fixtures/500x500.png', __FILE__), 'image/png')) }
119
+ let(:picture) do
120
+ create(:picture, image_file: fixture_file_upload(File.expand_path('../../fixtures/500x500.png', __FILE__), 'image/png'))
121
+ end
106
122
 
107
123
  it "renders the cropped picture" do
108
- get :show, id: picture.id, crop: 'crop', size: '123x44', crop_size: '123x44',
124
+ alchemy_get :show, id: picture.id, name: picture.urlname, crop: 'crop', size: '123x44', crop_size: '123x44',
109
125
  crop_from: '0x0', format: :png,
110
126
  sh: picture.security_token(crop_size: '123x44', crop_from: '0x0', crop: true, size: '123x44')
111
127
  expect(response.body[0x10..0x18].unpack('NN')).to eq([123, 44])
@@ -113,11 +129,14 @@ module Alchemy
113
129
  end
114
130
 
115
131
  context "Requesting a picture with crop_from and crop_size parameters with different size param" do
116
- let(:picture) { Picture.create(image_file: fixture_file_upload(File.expand_path('../../fixtures/500x500.png', __FILE__), 'image/png')) }
132
+ let(:picture) do
133
+ create(:picture, image_file: fixture_file_upload(File.expand_path('../../fixtures/500x500.png', __FILE__), 'image/png'))
134
+ end
117
135
 
118
136
  it "renders the cropped picture" do
119
- get :show,
137
+ alchemy_get :show,
120
138
  id: picture.id,
139
+ name: picture.urlname,
121
140
  crop: 'crop',
122
141
  size: '100x100',
123
142
  crop_size: '200x200',
@@ -134,11 +153,14 @@ module Alchemy
134
153
  end
135
154
 
136
155
  context "Requesting a picture with crop_from and crop_size parameters with larger size param" do
137
- let(:picture) { Picture.create(image_file: fixture_file_upload(File.expand_path('../../fixtures/500x500.png', __FILE__), 'image/png')) }
156
+ let(:picture) do
157
+ create(:picture, image_file: fixture_file_upload(File.expand_path('../../fixtures/500x500.png', __FILE__), 'image/png'))
158
+ end
138
159
 
139
160
  it "renders the cropped picture without upsampling" do
140
- get :show,
161
+ alchemy_get :show,
141
162
  id: picture.id,
163
+ name: picture.urlname,
142
164
  crop: 'crop',
143
165
  size: '400x400',
144
166
  crop_size: '200x200',
@@ -155,11 +177,14 @@ module Alchemy
155
177
  end
156
178
 
157
179
  context "Requesting a picture with crop_from and crop_size parameters with larger size param and upsample set" do
158
- let(:picture) { Picture.create(image_file: fixture_file_upload(File.expand_path('../../fixtures/500x500.png', __FILE__), 'image/png')) }
180
+ let(:picture) do
181
+ create(:picture, image_file: fixture_file_upload(File.expand_path('../../fixtures/500x500.png', __FILE__), 'image/png'))
182
+ end
159
183
 
160
184
  it "renders the cropped picture with upsampling" do
161
- get :show,
185
+ alchemy_get :show,
162
186
  id: picture.id,
187
+ name: picture.urlname,
163
188
  crop: 'crop',
164
189
  size: '400x400',
165
190
  crop_size: '200x200',
@@ -179,7 +204,7 @@ module Alchemy
179
204
 
180
205
  context "Requesting a picture that is not assigned with any page" do
181
206
  it "should render the picture" do
182
- get :show, id: picture.id, format: :png, sh: picture.security_token
207
+ alchemy_get :show, id: picture.id, name: picture.urlname, format: :png, sh: picture.security_token
183
208
  expect(response.status).to eq(200)
184
209
  end
185
210
  end
@@ -197,7 +222,7 @@ module Alchemy
197
222
 
198
223
  context "as guest user" do
199
224
  it "should render the picture" do
200
- get :show, id: picture.id, format: :png, sh: picture.security_token
225
+ alchemy_get :show, id: picture.id, name: picture.urlname, format: :png, sh: picture.security_token
201
226
  expect(response.status).to eq(200)
202
227
  end
203
228
  end
@@ -212,7 +237,7 @@ module Alchemy
212
237
 
213
238
  context "as guest user" do
214
239
  it "should not render the picture, but redirect to login path" do
215
- get :show, id: picture.id, sh: picture.security_token
240
+ alchemy_get :show, id: picture.id, name: picture.urlname, format: :png, sh: picture.security_token
216
241
  expect(response.status).to eq(302)
217
242
  expect(response).to redirect_to(Alchemy.login_path)
218
243
  end
@@ -224,14 +249,16 @@ module Alchemy
224
249
  end
225
250
 
226
251
  it "should render the picture" do
227
- get :show, id: picture.id, format: :png, sh: picture.security_token
252
+ alchemy_get :show, id: picture.id, name: picture.urlname, format: :png, sh: picture.security_token
228
253
  expect(response.status).to eq(200)
229
254
  end
230
255
  end
231
256
  end
232
257
 
233
258
  describe 'Picture processing' do
234
- let(:big_picture) { Picture.create(:image_file => fixture_file_upload(File.expand_path('../../fixtures/80x60.png', __FILE__), 'image/png')) }
259
+ let(:big_picture) do
260
+ create(:picture, image_file: fixture_file_upload(File.expand_path('../../fixtures/80x60.png', __FILE__), 'image/png'))
261
+ end
235
262
 
236
263
  context "with crop and size parameters" do
237
264
  it "should return a cropped image." do
@@ -240,20 +267,20 @@ module Alchemy
240
267
  size: '10x10',
241
268
  format: 'png'
242
269
  }
243
- get :show, options.merge(id: big_picture.id, sh: big_picture.security_token(options))
270
+ alchemy_get :show, options.merge(id: big_picture.id, name: big_picture.urlname, sh: big_picture.security_token(options))
244
271
  expect(response.body[0x10..0x18].unpack('NN')).to eq([10,10])
245
272
  end
246
273
 
247
274
  context "without a full size specification" do
248
275
  it "should raise an error" do
249
276
  options = {
250
- :crop => 'crop',
251
- :size => '10',
252
- :format => 'png'
277
+ crop: 'crop',
278
+ size: '10',
279
+ format: 'png'
253
280
  }
254
- expect do
255
- get :show, options.merge(:id => big_picture.id, :sh => big_picture.security_token(options))
256
- end.to raise_error ArgumentError
281
+ expect {
282
+ alchemy_get :show, options.merge(id: big_picture.id, name: big_picture.urlname, sh: big_picture.security_token(options))
283
+ }.to raise_error ArgumentError
257
284
  end
258
285
  end
259
286
 
@@ -264,7 +291,7 @@ module Alchemy
264
291
  size: '10x10',
265
292
  format: 'png'
266
293
  }
267
- get :show, options.merge(id: picture.id, sh: picture.security_token(options))
294
+ alchemy_get :show, options.merge(id: picture.id, name: big_picture.urlname, sh: picture.security_token(options))
268
295
  expect(response.body[0x10..0x18].unpack('NN')).to eq([1,1])
269
296
  end
270
297
  end
@@ -277,7 +304,7 @@ module Alchemy
277
304
  upsample: 'true',
278
305
  format: 'png'
279
306
  }
280
- get :show, options.merge(id: picture.id, sh: picture.security_token(options))
307
+ alchemy_get :show, options.merge(id: picture.id, name: big_picture.urlname, sh: picture.security_token(options))
281
308
  expect(response.body[0x10..0x18].unpack('NN')).to eq([10,10])
282
309
  end
283
310
  end
@@ -286,32 +313,31 @@ module Alchemy
286
313
  context "without crop but with size parameter" do
287
314
  it "should resize the image preserving aspect ratio" do
288
315
  options = {
289
- :size => '40x40',
290
- :format => 'png'
316
+ size: '40x40',
317
+ format: 'png'
291
318
  }
292
- get :show, options.merge(:id => big_picture.id, :sh => big_picture.security_token(options))
319
+ alchemy_get :show, options.merge(id: big_picture.id, name: big_picture.urlname, sh: big_picture.security_token(options))
293
320
  expect(response.body[0x10..0x18].unpack('NN')).to eq([40,30])
294
321
  end
295
322
 
296
323
  it "should resize the image inferring the height if not given" do
297
324
  options = {
298
- :size => '40x',
299
- :format => 'png'
325
+ size: '40x',
326
+ format: 'png'
300
327
  }
301
- get :show, options.merge(:id => big_picture.id, :sh => big_picture.security_token(options))
328
+ alchemy_get :show, options.merge(id: big_picture.id, name: big_picture.urlname, sh: big_picture.security_token(options))
302
329
  expect(response.body[0x10..0x18].unpack('NN')).to eq([40,30])
303
330
  end
304
331
 
305
332
  it "should resize the image inferring the width if not given" do
306
333
  options = {
307
- :size => 'x30',
308
- :format => 'png'
334
+ size: 'x30',
335
+ format: 'png'
309
336
  }
310
- get :show, options.merge(:id => big_picture.id, :sh => big_picture.security_token(options))
337
+ alchemy_get :show, options.merge(id: big_picture.id, name: big_picture.urlname, sh: big_picture.security_token(options))
311
338
  expect(response.body[0x10..0x18].unpack('NN')).to eq([40,30])
312
339
  end
313
340
  end
314
341
  end
315
-
316
342
  end
317
343
  end
@@ -3,4 +3,4 @@
3
3
 
4
4
  require File.expand_path('../config/application', __FILE__)
5
5
 
6
- Dummy::Application.load_tasks
6
+ Rails.application.load_tasks
@@ -5,9 +5,11 @@
5
5
  * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6
6
  * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
7
7
  *
8
- * You're free to add application-wide styles to this file and they'll appear at the top of the
9
- * compiled file, but it's generally better to create a new file per style scope.
8
+ * You're free to add application-wide styles to this file and they'll appear at the bottom of the
9
+ * compiled file so the styles you add here take precedence over styles defined in any styles
10
+ * defined in the other CSS/SCSS files in this directory. It is generally better to create a new
11
+ * file per style scope.
10
12
  *
11
- *= require_self
12
13
  *= require_tree .
14
+ *= require_self
13
15
  */
@@ -1,6 +1,12 @@
1
1
  require File.expand_path('../boot', __FILE__)
2
2
 
3
- require 'rails/all'
3
+ # Pick the frameworks you want:
4
+ require "active_record/railtie"
5
+ require "action_controller/railtie"
6
+ require "action_mailer/railtie"
7
+ require "action_view/railtie"
8
+ require "sprockets/railtie"
9
+ # require "rails/test_unit/railtie"
4
10
 
5
11
  Bundler.require(*Rails.groups)
6
12
  require "alchemy_cms"
@@ -18,5 +24,9 @@ module Dummy
18
24
  # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
19
25
  # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
20
26
  # config.i18n.default_locale = :de
27
+
28
+ # Do not swallow errors in after_commit/after_rollback callbacks.
29
+ config.active_record.raise_in_transactional_callbacks = true
21
30
  end
22
31
  end
32
+
@@ -1,5 +1,5 @@
1
1
  # Set up gems listed in the Gemfile.
2
2
  ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../../../Gemfile', __FILE__)
3
3
 
4
- require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE'])
4
+ require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
5
5
  $LOAD_PATH.unshift File.expand_path('../../../../lib', __FILE__)
@@ -2,4 +2,4 @@
2
2
  require File.expand_path('../application', __FILE__)
3
3
 
4
4
  # Initialize the Rails application.
5
- Dummy::Application.initialize!
5
+ Rails.application.initialize!
@@ -1,4 +1,4 @@
1
- Dummy::Application.configure do
1
+ Rails.application.configure do
2
2
  # Settings specified here will take precedence over those in config/application.rb.
3
3
 
4
4
  # In the development environment your application's code is reloaded on
@@ -19,11 +19,23 @@ Dummy::Application.configure do
19
19
  # Print deprecation notices to the Rails logger.
20
20
  config.active_support.deprecation = :log
21
21
 
22
- # Raise an error on page load if there are pending migrations
22
+ # Raise an error on page load if there are pending migrations.
23
23
  config.active_record.migration_error = :page_load
24
24
 
25
25
  # Debug mode disables concatenation and preprocessing of assets.
26
26
  # This option may cause significant delays in view rendering with a large
27
27
  # number of complex assets.
28
28
  config.assets.debug = true
29
+
30
+ # Asset digests allow you to set far-future HTTP expiration dates on all assets,
31
+ # yet still be able to expire them through the digest params.
32
+ config.assets.digest = true
33
+
34
+ # Adds additional error checking when serving assets at runtime.
35
+ # Checks for improperly declared sprockets dependencies.
36
+ # Raises helpful error messages.
37
+ config.assets.raise_runtime_errors = true
38
+
39
+ # Raises error for missing translations
40
+ # config.action_view.raise_on_missing_translations = true
29
41
  end
@@ -1,11 +1,11 @@
1
- Dummy::Application.configure do
1
+ Rails.application.configure do
2
2
  # Settings specified here will take precedence over those in config/application.rb.
3
3
 
4
4
  # Code is not reloaded between requests.
5
5
  config.cache_classes = true
6
6
 
7
7
  # Eager load code on boot. This eager loads most of Rails and
8
- # your application in memory, allowing both thread web servers
8
+ # your application in memory, allowing both threaded web servers
9
9
  # and those relying on copy on write to perform better.
10
10
  # Rake tasks automatically ignore this option for performance.
11
11
  config.eager_load = true
@@ -16,11 +16,12 @@ Dummy::Application.configure do
16
16
 
17
17
  # Enable Rack::Cache to put a simple HTTP cache in front of your application
18
18
  # Add `rack-cache` to your Gemfile before enabling this.
19
- # For large-scale production use, consider using a caching reverse proxy like nginx, varnish or squid.
19
+ # For large-scale production use, consider using a caching reverse proxy like
20
+ # NGINX, varnish or squid.
20
21
  # config.action_dispatch.rack_cache = true
21
22
 
22
- # Disable Rails's static asset server (Apache or nginx will already do this).
23
- config.serve_static_assets = false
23
+ # Disable Rails's static asset server (Apache or NGINX will already do this).
24
+ config.serve_static_files = false
24
25
 
25
26
  # Compress JavaScripts and CSS.
26
27
  config.assets.js_compressor = :uglifier
@@ -29,21 +30,21 @@ Dummy::Application.configure do
29
30
  # Do not fallback to assets pipeline if a precompiled asset is missed.
30
31
  config.assets.compile = true
31
32
 
32
- # Generate digests for assets URLs.
33
+ # Asset digests allow you to set far-future HTTP expiration dates on all assets,
34
+ # yet still be able to expire them through the digest params.
33
35
  config.assets.digest = true
34
36
 
35
- # Version of your assets, change this if you want to expire all your assets.
36
- config.assets.version = '1.0'
37
+ # `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb
37
38
 
38
39
  # Specifies the header that your server uses for sending files.
39
- # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
40
- # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx
40
+ # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache
41
+ # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX
41
42
 
42
43
  # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
43
44
  # config.force_ssl = true
44
45
 
45
- # Set to :debug to see everything in the log.
46
- config.log_level = :info
46
+ # Decrease the log volume.
47
+ # config.log_level = :info
47
48
 
48
49
  # Prepend all log lines with the following tags.
49
50
  # config.log_tags = [ :subdomain, :uuid ]
@@ -55,26 +56,22 @@ Dummy::Application.configure do
55
56
  # config.cache_store = :mem_cache_store
56
57
 
57
58
  # Enable serving of images, stylesheets, and JavaScripts from an asset server.
58
- # config.action_controller.asset_host = "http://assets.example.com"
59
-
60
- # Precompile additional assets.
61
- # application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
62
- # config.assets.precompile += %w( search.js )
59
+ # config.action_controller.asset_host = 'http://assets.example.com'
63
60
 
64
61
  # Ignore bad email addresses and do not raise email delivery errors.
65
62
  # Set this to true and configure the email server for immediate delivery to raise delivery errors.
66
63
  # config.action_mailer.raise_delivery_errors = false
67
64
 
68
65
  # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
69
- # the I18n.default_locale when a translation can not be found).
66
+ # the I18n.default_locale when a translation cannot be found).
70
67
  config.i18n.fallbacks = true
71
68
 
72
69
  # Send deprecation notices to registered listeners.
73
70
  config.active_support.deprecation = :notify
74
71
 
75
- # Disable automatic flushing of the log to improve performance.
76
- # config.autoflush_log = false
77
-
78
72
  # Use default logging formatter so that PID and timestamp are not suppressed.
79
73
  config.log_formatter = ::Logger::Formatter.new
74
+
75
+ # Do not dump schema after migrations.
76
+ config.active_record.dump_schema_after_migration = false
80
77
  end