alchemy_cms 3.3.0.rc1 → 3.3.0.rc2

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.
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