alchemy_cms 3.3.0.rc1 → 3.3.0.rc2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (269) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +3 -2
  3. data/Gemfile +1 -0
  4. data/alchemy_cms.gemspec +6 -6
  5. data/app/assets/javascripts/alchemy/alchemy.base.js.coffee +0 -7
  6. data/app/assets/javascripts/alchemy/alchemy.dialog.js.coffee +4 -4
  7. data/app/assets/javascripts/alchemy/alchemy.element_editors.js.coffee +51 -5
  8. data/app/assets/javascripts/alchemy/alchemy.sitemap.js.coffee +0 -2
  9. data/app/assets/stylesheets/alchemy/elements.scss +2 -2
  10. data/app/controllers/alchemy/admin/elements_controller.rb +2 -0
  11. data/app/controllers/alchemy/admin/pages_controller.rb +11 -3
  12. data/app/controllers/alchemy/admin/pictures_controller.rb +1 -0
  13. data/app/models/alchemy/element.rb +3 -1
  14. data/app/models/alchemy/element/element_contents.rb +2 -7
  15. data/app/models/alchemy/element/presenters.rb +11 -4
  16. data/app/models/alchemy/page.rb +3 -1
  17. data/app/views/alchemy/admin/attachments/archive_overlay.js.erb +0 -1
  18. data/app/views/alchemy/admin/contents/create.js.erb +0 -1
  19. data/app/views/alchemy/admin/elements/_element_header.html.erb +3 -1
  20. data/app/views/alchemy/admin/elements/order.js.erb +25 -10
  21. data/app/views/alchemy/admin/elements/update.js.erb +1 -2
  22. data/app/views/alchemy/admin/essence_files/assign.js.erb +0 -1
  23. data/app/views/alchemy/admin/essence_pictures/assign.js.erb +0 -1
  24. data/app/views/alchemy/admin/legacy_page_urls/create.js.erb +0 -1
  25. data/app/views/alchemy/admin/pages/destroy.js.erb +0 -1
  26. data/app/views/alchemy/admin/pages/update.js.erb +6 -4
  27. data/app/views/alchemy/admin/pictures/_filter_and_size_bar.html.erb +2 -1
  28. data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +1 -7
  29. data/app/views/alchemy/admin/pictures/archive_overlay.js.erb +0 -1
  30. data/bin/alchemy +1 -1
  31. data/bin/rspec +3 -2
  32. data/bin/spring +6 -6
  33. data/config/alchemy/config.yml +6 -1
  34. data/lib/alchemy/seeder.rb +9 -3
  35. data/lib/alchemy/version.rb +1 -1
  36. metadata +6 -471
  37. data/spec/controllers/alchemy/admin/attachments_controller_spec.rb +0 -193
  38. data/spec/controllers/alchemy/admin/base_controller_spec.rb +0 -87
  39. data/spec/controllers/alchemy/admin/clipboard_controller_spec.rb +0 -60
  40. data/spec/controllers/alchemy/admin/contents_controller_spec.rb +0 -78
  41. data/spec/controllers/alchemy/admin/dashboard_controller_spec.rb +0 -144
  42. data/spec/controllers/alchemy/admin/elements_controller_spec.rb +0 -496
  43. data/spec/controllers/alchemy/admin/essence_files_controller_spec.rb +0 -76
  44. data/spec/controllers/alchemy/admin/essence_pictures_controller_spec.rb +0 -202
  45. data/spec/controllers/alchemy/admin/languages_controller_spec.rb +0 -73
  46. data/spec/controllers/alchemy/admin/layoutpages_controller_spec.rb +0 -21
  47. data/spec/controllers/alchemy/admin/pages_controller_spec.rb +0 -639
  48. data/spec/controllers/alchemy/admin/pictures_controller_spec.rb +0 -383
  49. data/spec/controllers/alchemy/admin/resources_controller_spec.rb +0 -81
  50. data/spec/controllers/alchemy/admin/tags_controller_spec.rb +0 -63
  51. data/spec/controllers/alchemy/admin/trash_controller_spec.rb +0 -67
  52. data/spec/controllers/alchemy/api/contents_controller_spec.rb +0 -125
  53. data/spec/controllers/alchemy/api/elements_controller_spec.rb +0 -124
  54. data/spec/controllers/alchemy/api/pages_controller_spec.rb +0 -167
  55. data/spec/controllers/alchemy/attachments_controller_spec.rb +0 -64
  56. data/spec/controllers/alchemy/base_controller_spec.rb +0 -106
  57. data/spec/controllers/alchemy/elements_controller_spec.rb +0 -48
  58. data/spec/controllers/alchemy/messages_controller_spec.rb +0 -204
  59. data/spec/controllers/alchemy/on_page_layout_mixin_spec.rb +0 -330
  60. data/spec/controllers/alchemy/pages_controller_spec.rb +0 -343
  61. data/spec/controllers/alchemy/pictures_controller_spec.rb +0 -415
  62. data/spec/dummy/Rakefile +0 -6
  63. data/spec/dummy/app/assets/javascripts/application.js +0 -13
  64. data/spec/dummy/app/assets/stylesheets/application.css +0 -15
  65. data/spec/dummy/app/controllers/admin/events_controller.rb +0 -3
  66. data/spec/dummy/app/controllers/application_controller.rb +0 -15
  67. data/spec/dummy/app/controllers/login_controller.rb +0 -5
  68. data/spec/dummy/app/helpers/application_helper.rb +0 -2
  69. data/spec/dummy/app/mailers/.gitkeep +0 -0
  70. data/spec/dummy/app/models/ability.rb +0 -9
  71. data/spec/dummy/app/models/dummy_model.rb +0 -3
  72. data/spec/dummy/app/models/dummy_user.rb +0 -15
  73. data/spec/dummy/app/models/event.rb +0 -10
  74. data/spec/dummy/app/models/location.rb +0 -3
  75. data/spec/dummy/app/views/alchemy/elements/_all_you_can_eat_editor.html.erb +0 -11
  76. data/spec/dummy/app/views/alchemy/elements/_all_you_can_eat_view.html.erb +0 -31
  77. data/spec/dummy/app/views/alchemy/elements/_article_editor.html.erb +0 -6
  78. data/spec/dummy/app/views/alchemy/elements/_article_view.html.erb +0 -10
  79. data/spec/dummy/app/views/alchemy/elements/_bild_editor.html.erb +0 -3
  80. data/spec/dummy/app/views/alchemy/elements/_bild_view.html.erb +0 -5
  81. data/spec/dummy/app/views/alchemy/elements/_contactform_editor.html.erb +0 -6
  82. data/spec/dummy/app/views/alchemy/elements/_contactform_view.html.erb +0 -16
  83. data/spec/dummy/app/views/alchemy/elements/_download_editor.html.erb +0 -3
  84. data/spec/dummy/app/views/alchemy/elements/_download_view.html.erb +0 -5
  85. data/spec/dummy/app/views/alchemy/elements/_erb_element_editor.html.erb +0 -3
  86. data/spec/dummy/app/views/alchemy/elements/_erb_element_view.html.erb +0 -5
  87. data/spec/dummy/app/views/alchemy/elements/_header_editor.html.erb +0 -3
  88. data/spec/dummy/app/views/alchemy/elements/_header_view.html.erb +0 -5
  89. data/spec/dummy/app/views/alchemy/elements/_headline_editor.html.erb +0 -1
  90. data/spec/dummy/app/views/alchemy/elements/_headline_view.html.erb +0 -1
  91. data/spec/dummy/app/views/alchemy/elements/_news_editor.html.erb +0 -5
  92. data/spec/dummy/app/views/alchemy/elements/_news_view.html.erb +0 -11
  93. data/spec/dummy/app/views/alchemy/elements/_search_editor.html.erb +0 -1
  94. data/spec/dummy/app/views/alchemy/elements/_search_view.html.erb +0 -4
  95. data/spec/dummy/app/views/alchemy/elements/_slide_editor.html.erb +0 -3
  96. data/spec/dummy/app/views/alchemy/elements/_slide_view.html.erb +0 -5
  97. data/spec/dummy/app/views/alchemy/elements/_slider_editor.html.erb +0 -2
  98. data/spec/dummy/app/views/alchemy/elements/_slider_view.html.erb +0 -4
  99. data/spec/dummy/app/views/alchemy/elements/_text_editor.html.erb +0 -3
  100. data/spec/dummy/app/views/alchemy/elements/_text_view.html.erb +0 -5
  101. data/spec/dummy/app/views/alchemy/page_layouts/_standard.html.erb +0 -15
  102. data/spec/dummy/app/views/layouts/application.html.erb +0 -17
  103. data/spec/dummy/bin/bundle +0 -3
  104. data/spec/dummy/bin/rails +0 -4
  105. data/spec/dummy/bin/rake +0 -4
  106. data/spec/dummy/config.ru +0 -4
  107. data/spec/dummy/config/alchemy/cells.yml +0 -5
  108. data/spec/dummy/config/alchemy/elements.yml +0 -109
  109. data/spec/dummy/config/alchemy/page_layouts.yml +0 -32
  110. data/spec/dummy/config/application.rb +0 -32
  111. data/spec/dummy/config/boot.rb +0 -5
  112. data/spec/dummy/config/database.yml +0 -32
  113. data/spec/dummy/config/environment.rb +0 -5
  114. data/spec/dummy/config/environments/development.rb +0 -41
  115. data/spec/dummy/config/environments/production.rb +0 -77
  116. data/spec/dummy/config/environments/test.rb +0 -43
  117. data/spec/dummy/config/initializers/alchemy.rb +0 -3
  118. data/spec/dummy/config/initializers/assets.rb +0 -11
  119. data/spec/dummy/config/initializers/backtrace_silencers.rb +0 -7
  120. data/spec/dummy/config/initializers/cookies_serializer.rb +0 -3
  121. data/spec/dummy/config/initializers/filter_parameter_logging.rb +0 -4
  122. data/spec/dummy/config/initializers/inflections.rb +0 -16
  123. data/spec/dummy/config/initializers/mime_types.rb +0 -4
  124. data/spec/dummy/config/initializers/secret_token.rb +0 -12
  125. data/spec/dummy/config/initializers/session_store.rb +0 -3
  126. data/spec/dummy/config/initializers/wrap_parameters.rb +0 -14
  127. data/spec/dummy/config/locales/kl.yml +0 -2
  128. data/spec/dummy/config/routes.rb +0 -12
  129. data/spec/dummy/config/secrets.yml +0 -22
  130. data/spec/dummy/db/migrate/20121026104128_create_events.rb +0 -20
  131. data/spec/dummy/db/migrate/20130328101418_create_locations.rb +0 -9
  132. data/spec/dummy/db/migrate/20130827094554_alchemy_two_point_six.rb +0 -1
  133. data/spec/dummy/db/migrate/20130828121054_remove_do_not_index_from_alchemy_essence_texts.rb +0 -1
  134. data/spec/dummy/db/migrate/20130828121120_remove_do_not_index_from_alchemy_essence_richtexts.rb +0 -1
  135. data/spec/dummy/db/migrate/20130918201742_add_published_at_to_alchemy_pages.rb +0 -1
  136. data/spec/dummy/db/migrate/20131209225243_create_dummy_users.rb +0 -9
  137. data/spec/dummy/db/migrate/20150122213511_acts_as_taggable_on_migration.acts_as_taggable_on_engine.rb +0 -31
  138. data/spec/dummy/db/migrate/20150122213512_add_missing_unique_indices.acts_as_taggable_on_engine.rb +0 -20
  139. data/spec/dummy/db/migrate/20150122213513_add_taggings_counter_cache_to_tags.acts_as_taggable_on_engine.rb +0 -15
  140. data/spec/dummy/db/migrate/20150122213514_add_missing_taggable_index.acts_as_taggable_on_engine.rb +0 -10
  141. data/spec/dummy/db/migrate/20150412103152_create_dummy_model.rb +0 -7
  142. data/spec/dummy/db/migrate/20150608204610_add_parent_element_id_to_alchemy_elements.rb +0 -1
  143. data/spec/dummy/db/migrate/20150729151825_add_link_text_to_alchemy_essence_files.rb +0 -1
  144. data/spec/dummy/db/migrate/20150906195818_add_locale_to_alchemy_languages.rb +0 -1
  145. data/spec/dummy/db/schema.rb +0 -326
  146. data/spec/dummy/db/seeds.rb +0 -1
  147. data/spec/dummy/lib/assets/.gitkeep +0 -0
  148. data/spec/dummy/public/404.html +0 -67
  149. data/spec/dummy/public/422.html +0 -67
  150. data/spec/dummy/public/500.html +0 -66
  151. data/spec/dummy/public/favicon.ico +0 -0
  152. data/spec/dummy/spec/javascripts +0 -1
  153. data/spec/factories.rb +0 -13
  154. data/spec/features/admin/admin_layout_spec.rb +0 -14
  155. data/spec/features/admin/dashboard_spec.rb +0 -81
  156. data/spec/features/admin/edit_elements_feature_spec.rb +0 -36
  157. data/spec/features/admin/language_tree_feature_spec.rb +0 -32
  158. data/spec/features/admin/languages_features_spec.rb +0 -65
  159. data/spec/features/admin/legacy_page_url_management_spec.rb +0 -62
  160. data/spec/features/admin/link_overlay_spec.rb +0 -53
  161. data/spec/features/admin/locale_select_feature_spec.rb +0 -25
  162. data/spec/features/admin/modules_integration_spec.rb +0 -23
  163. data/spec/features/admin/navigation_feature_spec.rb +0 -22
  164. data/spec/features/admin/page_creation_feature_spec.rb +0 -51
  165. data/spec/features/admin/page_editing_feature_spec.rb +0 -135
  166. data/spec/features/admin/picture_library_integration_spec.rb +0 -62
  167. data/spec/features/admin/resources_integration_spec.rb +0 -128
  168. data/spec/features/admin/site_select_feature_spec.rb +0 -31
  169. data/spec/features/admin/tinymce_feature_spec.rb +0 -33
  170. data/spec/features/navigation_spec.rb +0 -9
  171. data/spec/features/page_feature_spec.rb +0 -186
  172. data/spec/features/page_redirects_spec.rb +0 -358
  173. data/spec/features/picture_security_spec.rb +0 -29
  174. data/spec/features/security_spec.rb +0 -24
  175. data/spec/features/translation_integration_spec.rb +0 -51
  176. data/spec/fixtures/500x500.png +0 -0
  177. data/spec/fixtures/80x60.png +0 -0
  178. data/spec/fixtures/animated.gif +0 -0
  179. data/spec/fixtures/image with spaces.png +0 -0
  180. data/spec/fixtures/image.png +0 -0
  181. data/spec/fixtures/image2.PNG +0 -0
  182. data/spec/fixtures/image3.jpeg +0 -0
  183. data/spec/helpers/alchemy/admin/attachments_helper_spec.rb +0 -15
  184. data/spec/helpers/alchemy/admin/base_helper_spec.rb +0 -280
  185. data/spec/helpers/alchemy/admin/contents_helper_spec.rb +0 -46
  186. data/spec/helpers/alchemy/admin/elements_helper_spec.rb +0 -314
  187. data/spec/helpers/alchemy/admin/essences_helper_spec.rb +0 -201
  188. data/spec/helpers/alchemy/admin/navigation_helper_spec.rb +0 -294
  189. data/spec/helpers/alchemy/admin/pages_helper_spec.rb +0 -63
  190. data/spec/helpers/alchemy/admin/pictures_helper_spec.rb +0 -28
  191. data/spec/helpers/alchemy/admin/tags_helper_spec.rb +0 -111
  192. data/spec/helpers/alchemy/base_helper_spec.rb +0 -44
  193. data/spec/helpers/alchemy/elements_block_helper_spec.rb +0 -135
  194. data/spec/helpers/alchemy/elements_helper_spec.rb +0 -326
  195. data/spec/helpers/alchemy/essences_helper_spec.rb +0 -85
  196. data/spec/helpers/alchemy/pages_helper_spec.rb +0 -499
  197. data/spec/helpers/alchemy/picture_url_helpers_spec.rb +0 -78
  198. data/spec/helpers/alchemy/url_helper_spec.rb +0 -200
  199. data/spec/javascripts/alchemy/dialog_spec.coffee +0 -82
  200. data/spec/javascripts/alchemy/link_overlay_spec.coffee +0 -25
  201. data/spec/javascripts/alchemy_integration_spec.coffee +0 -3
  202. data/spec/javascripts/fixtures/select.html +0 -3
  203. data/spec/javascripts/helpers/mock-ajax.js +0 -199
  204. data/spec/javascripts/helpers/test_responses/test_responses.js +0 -1
  205. data/spec/javascripts/support/jasmine.yml +0 -29
  206. data/spec/libraries/auth_accessors_spec.rb +0 -40
  207. data/spec/libraries/config_spec.rb +0 -111
  208. data/spec/libraries/controller_actions_spec.rb +0 -133
  209. data/spec/libraries/i18n_spec.rb +0 -37
  210. data/spec/libraries/kaminari/scoped_pagination_url_helper_spec.rb +0 -30
  211. data/spec/libraries/modules_spec.rb +0 -67
  212. data/spec/libraries/mount_point_spec.rb +0 -77
  213. data/spec/libraries/page_layout_spec.rb +0 -150
  214. data/spec/libraries/paths_spec.rb +0 -15
  215. data/spec/libraries/permissions_spec.rb +0 -260
  216. data/spec/libraries/resource_spec.rb +0 -344
  217. data/spec/libraries/resources_helper_spec.rb +0 -193
  218. data/spec/libraries/shell_spec.rb +0 -121
  219. data/spec/libraries/template_tracker_spec.rb +0 -85
  220. data/spec/libraries/tinymce_spec.rb +0 -111
  221. data/spec/libraries/userstamp_spec.rb +0 -10
  222. data/spec/mailers/alchemy/messages_spec.rb +0 -21
  223. data/spec/models/alchemy/attachment_spec.rb +0 -250
  224. data/spec/models/alchemy/cell_spec.rb +0 -101
  225. data/spec/models/alchemy/content_spec.rb +0 -513
  226. data/spec/models/alchemy/element_spec.rb +0 -862
  227. data/spec/models/alchemy/element_to_page_spec.rb +0 -13
  228. data/spec/models/alchemy/essence_boolean_spec.rb +0 -10
  229. data/spec/models/alchemy/essence_date_spec.rb +0 -28
  230. data/spec/models/alchemy/essence_file_spec.rb +0 -40
  231. data/spec/models/alchemy/essence_html_spec.rb +0 -18
  232. data/spec/models/alchemy/essence_link_spec.rb +0 -10
  233. data/spec/models/alchemy/essence_picture_spec.rb +0 -255
  234. data/spec/models/alchemy/essence_richtext_spec.rb +0 -23
  235. data/spec/models/alchemy/essence_select_spec.rb +0 -10
  236. data/spec/models/alchemy/essence_text_spec.rb +0 -110
  237. data/spec/models/alchemy/language_spec.rb +0 -243
  238. data/spec/models/alchemy/legacy_page_url_spec.rb +0 -21
  239. data/spec/models/alchemy/message_spec.rb +0 -55
  240. data/spec/models/alchemy/page_spec.rb +0 -2108
  241. data/spec/models/alchemy/picture_spec.rb +0 -418
  242. data/spec/models/alchemy/site_spec.rb +0 -168
  243. data/spec/models/alchemy/tag_spec.rb +0 -29
  244. data/spec/models/dummy_model_spec.rb +0 -10
  245. data/spec/requests/alchemy/admin/resources_requests_spec.rb +0 -26
  246. data/spec/requests/alchemy/admin/site_requests_spec.rb +0 -19
  247. data/spec/requests/alchemy/site_requests_spec.rb +0 -18
  248. data/spec/requests/alchemy/sitemap_spec.rb +0 -56
  249. data/spec/routing/api_routing_spec.rb +0 -150
  250. data/spec/routing/routing_spec.rb +0 -340
  251. data/spec/spec_helper.rb +0 -90
  252. data/spec/support/ci/install_phantomjs +0 -7
  253. data/spec/support/hint_examples.rb +0 -28
  254. data/spec/support/test_tweaks.rb +0 -31
  255. data/spec/support/transformation_examples.rb +0 -179
  256. data/spec/tasks/helpers_spec.rb +0 -217
  257. data/spec/views/admin/pictures/show_spec.rb +0 -43
  258. data/spec/views/essences/essence_boolean_editor_spec.rb +0 -32
  259. data/spec/views/essences/essence_boolean_view_spec.rb +0 -23
  260. data/spec/views/essences/essence_date_view_spec.rb +0 -38
  261. data/spec/views/essences/essence_file_editor_spec.rb +0 -59
  262. data/spec/views/essences/essence_file_view_spec.rb +0 -77
  263. data/spec/views/essences/essence_html_view_spec.rb +0 -22
  264. data/spec/views/essences/essence_link_view_spec.rb +0 -41
  265. data/spec/views/essences/essence_picture_editor_spec.rb +0 -80
  266. data/spec/views/essences/essence_picture_view_spec.rb +0 -128
  267. data/spec/views/essences/essence_richtext_view_spec.rb +0 -32
  268. data/spec/views/essences/essence_select_view_spec.rb +0 -11
  269. data/spec/views/essences/essence_text_view_spec.rb +0 -51
@@ -1,383 +0,0 @@
1
- require 'spec_helper'
2
-
3
- RSpec.shared_examples :redirecting_to_picture_library do
4
- let(:params) do
5
- {
6
- filter: 'latest',
7
- page: 2,
8
- q: {name_cont: 'kitten'},
9
- size: 'small',
10
- tagged_with: 'cat'
11
- }
12
- end
13
-
14
- it 'redirects to index keeping all query, filter and page params' do
15
- is_expected.to redirect_to admin_pictures_path(params)
16
- end
17
- end
18
-
19
- module Alchemy
20
- describe Admin::PicturesController do
21
- before do
22
- authorize_user(:as_admin)
23
- end
24
-
25
- describe '#index' do
26
- context 'with search params' do
27
- let!(:picture_1) { create(:alchemy_picture, name: 'cute kitten') }
28
- let!(:picture_2) { create(:alchemy_picture, name: 'nice beach') }
29
-
30
- it 'assigns @pictures with filtered pictures' do
31
- alchemy_get :index, q: {name_cont: 'kitten'}
32
- expect(assigns(:pictures)).to include(picture_1)
33
- expect(assigns(:pictures)).to_not include(picture_2)
34
- end
35
- end
36
-
37
- context 'with filter params' do
38
- let!(:picture_1) { create(:alchemy_picture) }
39
- let!(:picture_2) { create(:alchemy_picture, tag_list: %w(kitten)) }
40
-
41
- it 'assigns @pictures with filtered pictures' do
42
- alchemy_get :index, filter: 'without_tag'
43
- expect(assigns(:pictures)).to include(picture_1)
44
- expect(assigns(:pictures)).to_not include(picture_2)
45
- end
46
- end
47
-
48
- context 'with tag params' do
49
- let!(:picture_1) { create(:alchemy_picture, tag_list: %w(water)) }
50
- let!(:picture_2) { create(:alchemy_picture, tag_list: %w(kitten)) }
51
-
52
- it 'assigns @pictures with filtered pictures' do
53
- alchemy_get :index, tagged_with: 'water'
54
- expect(assigns(:pictures)).to include(picture_1)
55
- expect(assigns(:pictures)).to_not include(picture_2)
56
- end
57
- end
58
-
59
- it 'assigns @size to default value' do
60
- alchemy_get :index
61
- expect(assigns(:size)).to eq('medium')
62
- end
63
-
64
- context "with params[:size] set to 'large'" do
65
- it 'assigns @size to large' do
66
- alchemy_get :index, size: 'large'
67
- expect(assigns(:size)).to eq('large')
68
- end
69
- end
70
-
71
- context "when params[:element_id]" do
72
- context "is set" do
73
- before do
74
- allow(Element).to \
75
- receive(:find).with('1', {select: 'id'}).and_return(mock_model(Element))
76
- end
77
-
78
- it "for html requests it renders the archive_overlay partial" do
79
- alchemy_get :index, {element_id: 1}
80
- expect(response).to render_template(partial: '_archive_overlay')
81
- end
82
-
83
- it "for ajax requests it renders the archive_overlay template" do
84
- alchemy_xhr :get, :index, {element_id: 1}
85
- expect(response).to render_template(:archive_overlay)
86
- end
87
- end
88
-
89
- context "is not set" do
90
- it "should render the default index view" do
91
- alchemy_get :index
92
- expect(response).to render_template(:index)
93
- end
94
- end
95
- end
96
- end
97
-
98
- describe '#create' do
99
- subject { alchemy_post :create, params }
100
-
101
- let(:params) { {picture: {name: ''}} }
102
- let(:picture) { mock_model('Picture', humanized_name: 'Cute kittens', to_jq_upload: {}) }
103
-
104
- context 'with passing validations' do
105
- before do
106
- expect(Picture).to receive(:new).and_return(picture)
107
- expect(picture).to receive(:name=).and_return('Cute kittens')
108
- expect(picture).to receive(:name).and_return('Cute kittens')
109
- expect(picture).to receive(:save).and_return(true)
110
- end
111
-
112
- it "renders json response with success message" do
113
- subject
114
- expect(response.content_type).to eq('application/json')
115
- expect(response.status).to eq(201)
116
- json = JSON.parse(response.body)
117
- expect(json).to have_key('growl_message')
118
- expect(json).to have_key('files')
119
- end
120
- end
121
-
122
- context 'without passing validations' do
123
- it "renders json response with error message" do
124
- subject
125
- expect(response.content_type).to eq('application/json')
126
- expect(response.status).to eq(422)
127
- json = JSON.parse(response.body)
128
- expect(json).to have_key('growl_message')
129
- expect(json).to have_key('files')
130
- end
131
- end
132
- end
133
-
134
- describe '#show' do
135
- let(:picture) { create(:alchemy_picture, name: 'kitten') }
136
-
137
- it 'assigns @picture' do
138
- alchemy_get :show, id: picture.id
139
- expect(assigns(:picture).id).to eq(picture.id)
140
- end
141
-
142
- context 'with assignments' do
143
- let!(:page) { create(:alchemy_page) }
144
- let!(:element) { create(:alchemy_element, page: page) }
145
- let!(:content) { create(:alchemy_content, element: element) }
146
- let!(:essence) { create(:alchemy_essence_picture, content: content, picture: picture) }
147
-
148
- it 'assigns @pages to assignments grouped by page' do
149
- alchemy_get :show, id: picture.id
150
- expect(assigns(:pages)).to eq({page => [essence]})
151
- end
152
- end
153
-
154
- context 'with previous picture existing' do
155
- let!(:previous) { create(:alchemy_picture, name: 'abraham') }
156
-
157
- it 'assigns @previous to previous picture' do
158
- alchemy_get :show, id: picture.id
159
- expect(assigns(:previous).id).to eq(previous.id)
160
- end
161
- end
162
-
163
- context 'with next picture existing' do
164
- let!(:next_picture) { create(:alchemy_picture, name: 'zebra') }
165
-
166
- it 'assigns @next to next picture' do
167
- alchemy_get :show, id: picture.id
168
- expect(assigns(:next).id).to eq(next_picture.id)
169
- end
170
- end
171
- end
172
-
173
- describe '#edit_multiple' do
174
- let(:pictures) { [mock_model('Picture', tag_list: 'kitten')] }
175
- before { expect(Picture).to receive(:where).and_return(pictures) }
176
-
177
- it 'assigns pictures instance variable' do
178
- alchemy_get :edit_multiple
179
- expect(assigns(:pictures)).to eq(pictures)
180
- end
181
-
182
- it 'assigns tags instance variable' do
183
- alchemy_get :edit_multiple
184
- expect(assigns(:tags)).to include('kitten')
185
- end
186
- end
187
-
188
- describe '#update' do
189
- subject { alchemy_xhr :put, :update, {id: 1, picture: {name: ''}} }
190
-
191
- let(:picture) { build_stubbed(:alchemy_picture, name: 'Cute kitten') }
192
-
193
- before do
194
- expect(Picture).to receive(:find).and_return(picture)
195
- end
196
-
197
- context 'with passing validations' do
198
- before do
199
- expect(picture).to receive(:update).and_return(true)
200
- end
201
-
202
- it "sets success notice" do
203
- subject
204
- expect(assigns(:message)[:body]).to \
205
- eq(Alchemy.t(:picture_updated_successfully, name: picture.name))
206
- expect(assigns(:message)[:type]).to eq('notice')
207
- end
208
- end
209
-
210
- context 'with failing validations' do
211
- before do
212
- expect(picture).to receive(:update).and_return(false)
213
- end
214
-
215
- it "sets error notice" do
216
- subject
217
- expect(assigns(:message)[:body]).to eq(Alchemy.t(:picture_update_failed))
218
- expect(assigns(:message)[:type]).to eq('error')
219
- end
220
- end
221
- end
222
-
223
- describe '#update_multiple' do
224
- let(:picture) { build_stubbed(:alchemy_picture) }
225
- let(:pictures) { [picture] }
226
-
227
- before do
228
- expect(Picture).to receive(:find).and_return(pictures)
229
- expect(picture).to receive(:save!).and_return(true)
230
- end
231
-
232
- it "loads and assigns pictures" do
233
- alchemy_post :update_multiple
234
- expect(assigns(:pictures)).to eq(pictures)
235
- end
236
-
237
- it_behaves_like :redirecting_to_picture_library do
238
- let(:subject) { alchemy_post(:update_multiple, params) }
239
- end
240
- end
241
-
242
- describe "#delete_multiple" do
243
- subject { alchemy_delete :delete_multiple, picture_ids: picture_ids }
244
-
245
- it_behaves_like :redirecting_to_picture_library do
246
- let(:subject) do
247
- alchemy_delete :delete_multiple, {
248
- picture_ids: %w(1 2)
249
- }.merge(params)
250
- end
251
- end
252
-
253
- let(:deletable_picture) do
254
- mock_model('Picture', name: 'pic of the pig', deletable?: true)
255
- end
256
-
257
- let(:not_deletable_picture) do
258
- mock_model('Picture', name: 'pic of the chick', deletable?: false)
259
- end
260
-
261
- context "no picture_ids given" do
262
- let(:picture_ids) { '' }
263
-
264
- it "should give a warning about not deleting any pictures" do
265
- subject
266
- expect(flash[:warn]).to match('Could not delete Pictures')
267
- end
268
- end
269
-
270
- context "picture_ids given" do
271
- context "all are deletable" do
272
- let(:picture_ids) { deletable_picture.id.to_s }
273
-
274
- before do
275
- allow(Picture).to receive(:find).and_return([deletable_picture])
276
- end
277
-
278
- it "should delete the pictures give a notice about deleting them" do
279
- subject
280
- expect(flash[:notice]).to match('successfully')
281
- end
282
- end
283
-
284
- context "deletable and not deletable" do
285
- let(:picture_ids) { "#{deletable_picture.id},#{not_deletable_picture.id}" }
286
-
287
- before do
288
- allow(Picture).to receive(:find).and_return([deletable_picture, not_deletable_picture])
289
- end
290
-
291
- it "should give a warning for the non deletable pictures and delete the others" do
292
- expect(deletable_picture).to receive(:destroy)
293
- subject
294
- expect(flash[:warn]).to match('could not be deleted')
295
- end
296
- end
297
-
298
- context 'with error happening' do
299
- let(:picture_ids) { deletable_picture.id.to_s }
300
-
301
- before do
302
- expect(Picture).to receive(:find).and_raise('yada')
303
- end
304
-
305
- it "sets error message" do
306
- subject
307
- expect(flash[:error]).not_to be_blank
308
- end
309
-
310
- it "redirects to index" do
311
- subject
312
- expect(response).to redirect_to admin_pictures_path
313
- end
314
- end
315
- end
316
- end
317
-
318
- describe '#destroy' do
319
- let(:picture) { build_stubbed(:alchemy_picture, name: 'Cute kitten') }
320
-
321
- before do
322
- expect(Picture).to receive(:find).and_return(picture)
323
- end
324
-
325
- it "destroys the picture and sets and success message" do
326
- expect(picture).to receive(:destroy)
327
- alchemy_delete :destroy, id: picture.id
328
- expect(assigns(:picture)).to eq(picture)
329
- expect(flash[:notice]).not_to be_blank
330
- end
331
-
332
- context 'if an error happens' do
333
- before do
334
- expect(picture).to receive(:destroy).and_raise('yada')
335
- end
336
-
337
- it "shows error notice" do
338
- alchemy_delete :destroy, id: picture.id
339
- expect(flash[:error]).not_to be_blank
340
- end
341
-
342
- it "redirects to index" do
343
- alchemy_delete :destroy, id: picture.id
344
- expect(response).to redirect_to admin_pictures_path
345
- end
346
- end
347
-
348
- it_behaves_like :redirecting_to_picture_library do
349
- let(:subject) { alchemy_delete :destroy, {id: picture.id}.merge(params) }
350
- end
351
- end
352
-
353
- describe '#flush' do
354
- it "removes the complete pictures cache" do
355
- expect(FileUtils).to receive(:rm_rf).with(Rails.root.join('public', '', 'pictures'))
356
- alchemy_xhr :post, :flush
357
- end
358
- end
359
-
360
- describe '#pictures_per_page_for_size' do
361
- subject { controller.send(:pictures_per_page_for_size, size) }
362
-
363
- before do
364
- expect(controller).to receive(:in_overlay?).and_return(true)
365
- end
366
-
367
- context 'with params[:size] set to medium' do
368
- let(:size) { 'medium' }
369
- it { is_expected.to eq(9) }
370
- end
371
-
372
- context 'with params[:size] set to small' do
373
- let(:size) { 'small' }
374
- it { is_expected.to eq(25) }
375
- end
376
-
377
- context 'with params[:size] set to large' do
378
- let(:size) { 'large' }
379
- it { is_expected.to eq(4) }
380
- end
381
- end
382
- end
383
- end
@@ -1,81 +0,0 @@
1
- require "spec_helper"
2
-
3
- class Admin::EventsController < Alchemy::Admin::ResourcesController
4
- end
5
-
6
- describe Admin::EventsController do
7
- it "should include ResourcesHelper" do
8
- expect(controller.respond_to?(:resource_window_size)).to be_truthy
9
- end
10
-
11
- describe '#index' do
12
- let(:params) { Hash.new }
13
- let!(:peter) { Event.create(name: 'Peter') }
14
- let!(:lustig) { Event.create(name: 'Lustig') }
15
-
16
- before do
17
- authorize_user(:as_admin)
18
- end
19
-
20
- it "returns all records" do
21
- get :index, params
22
- expect(assigns(:events)).to include(peter)
23
- expect(assigns(:events)).to include(lustig)
24
- end
25
-
26
- context 'with search query given' do
27
- let(:params) { {q: {name_or_hidden_name_or_location_name_cont: "PeTer"}} }
28
-
29
- it "returns only matching records" do
30
- get :index, params
31
- expect(assigns(:events)).to include(peter)
32
- expect(assigns(:events)).not_to include(lustig)
33
- end
34
-
35
- context "but searching for record with certain association" do
36
- let(:bauwagen) { Location.create(name: 'Bauwagen') }
37
- let(:params) { {q: {name_or_hidden_name_or_location_name_cont: "Bauwagen"}} }
38
-
39
- before do
40
- peter.location = bauwagen
41
- peter.save
42
- end
43
-
44
- it "returns only matching records" do
45
- get :index, params
46
- expect(assigns(:events)).to include(peter)
47
- expect(assigns(:events)).not_to include(lustig)
48
- end
49
- end
50
- end
51
- end
52
-
53
- describe '#update' do
54
- let(:params) { {q: 'some_query', page: 6} }
55
- let!(:peter) { Event.create(name: 'Peter') }
56
-
57
- it 'redirects to index, keeping the current location parameters' do
58
- post :update, {id: peter.id, event: {name: "Hans"}}.merge(params)
59
- expect(response.redirect_url).to eq("http://test.host/admin/events?page=6&q=some_query")
60
- end
61
- end
62
-
63
- describe '#create' do
64
- let(:params) { {q: 'some_query', page: 6} }
65
-
66
- it 'redirects to index, keeping the current location parameters' do
67
- post :create, {event: {name: "Hans"}}.merge(params)
68
- expect(response.redirect_url).to eq("http://test.host/admin/events?page=6&q=some_query")
69
- end
70
- end
71
-
72
- describe '#destroy' do
73
- let(:params) { {q: 'some_query', page: 6} }
74
- let!(:peter) { Event.create(name: 'Peter') }
75
-
76
- it 'redirects to index, keeping the current location parameters' do
77
- delete :destroy, {id: peter.id}.merge(params)
78
- expect(response.redirect_url).to eq("http://test.host/admin/events?page=6&q=some_query")
79
- end
80
- end
81
- end