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,77 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Alchemy::MountPoint do
4
- describe '.get' do
5
- it "returns the path of alchemy's mount point" do
6
- allow(Alchemy::MountPoint).to receive(:path).and_return('/cms')
7
- expect(Alchemy::MountPoint.get).to eq('/cms')
8
- end
9
-
10
- it "removes the leading slash if root mount point" do
11
- allow(Alchemy::MountPoint).to receive(:path).and_return('/')
12
- expect(Alchemy::MountPoint.get).to eq('')
13
- end
14
-
15
- context "with remove_leading_slash_if_blank set to false" do
16
- before do
17
- allow(Alchemy::MountPoint)
18
- .to receive(:path)
19
- .and_return('/')
20
- end
21
-
22
- it "does not remove the leading white slash of path" do
23
- expect(Alchemy::MountPoint.get(false)).to eq('/')
24
- end
25
-
26
- context "and with mount point not root" do
27
- before do
28
- allow(Alchemy::MountPoint)
29
- .to receive(:path)
30
- .and_return('/cms')
31
- end
32
-
33
- it "does not remove the leading white slash of path" do
34
- expect(Alchemy::MountPoint.get(false)).to eq('/cms')
35
- end
36
- end
37
- end
38
- end
39
-
40
- describe '.path' do
41
- before do
42
- allow(File)
43
- .to receive(:read)
44
- .and_return("mount Alchemy::Engine => '/cms'")
45
- end
46
-
47
- it 'returns the mount point path from routes.' do
48
- expect(Alchemy::MountPoint.path).to eq('/cms')
49
- end
50
-
51
- context "Alchemy mount point could not be found" do
52
- before do
53
- allow(File)
54
- .to receive(:read)
55
- .and_return("")
56
- end
57
-
58
- it "raises an exception" do
59
- expect {
60
- Alchemy::MountPoint.path
61
- }.to raise_error(Alchemy::NotMountedError)
62
- end
63
- end
64
-
65
- context 'Mount point using double quotes string' do
66
- before do
67
- allow(File)
68
- .to receive(:read)
69
- .and_return('mount Alchemy::Engine => "/cms"')
70
- end
71
-
72
- it 'returns the mount point path from routes.' do
73
- expect(Alchemy::MountPoint.path).to eq('/cms')
74
- end
75
- end
76
- end
77
- end
@@ -1,150 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Alchemy
4
- describe PageLayout do
5
- describe ".all" do
6
- # skip memoization
7
- before { PageLayout.instance_variable_set("@definitions", nil) }
8
-
9
- subject { PageLayout.all }
10
-
11
- it "should return all page_layouts" do
12
- is_expected.to be_instance_of(Array)
13
- expect(subject.collect { |l| l['name'] }).to include('standard')
14
- end
15
-
16
- it "should allow erb generated layouts" do
17
- expect(subject.collect { |l| l['name'] }).to include('erb_layout')
18
- end
19
-
20
- context "with empty layouts file" do
21
- before { expect(YAML).to receive(:load).and_return(false) }
22
-
23
- it "returns empty array" do
24
- is_expected.to eq([])
25
- end
26
- end
27
-
28
- context "with missing layouts file" do
29
- before { expect(File).to receive(:exist?).and_return(false) }
30
-
31
- it "raises error empty array" do
32
- expect { subject }.to raise_error(LoadError)
33
- end
34
- end
35
- end
36
-
37
- describe '.add' do
38
- it "adds a definition to all definitions" do
39
- PageLayout.add({'name' => 'foo'})
40
- expect(PageLayout.all).to include({'name' => 'foo'})
41
- end
42
-
43
- it "adds a array of definitions to all definitions" do
44
- PageLayout.add([{'name' => 'foo'}, {'name' => 'bar'}])
45
- expect(PageLayout.all).to include({'name' => 'foo'})
46
- expect(PageLayout.all).to include({'name' => 'bar'})
47
- end
48
- end
49
-
50
- describe ".get" do
51
- it "should return the page_layout definition found by given name" do
52
- allow(PageLayout).to receive(:all).and_return([{'name' => 'default'}, {'name' => 'contact'}])
53
- expect(PageLayout.get('default')).to eq({'name' => 'default'})
54
- end
55
- end
56
-
57
- describe ".get_all_by_attributes" do
58
- subject { PageLayout.get_all_by_attributes(unique: true) }
59
-
60
- it "should return all page layout with the given attribute" do
61
- expect(subject.map { |page_layout| page_layout['name'] }.to_a).to eq(['index', 'news', 'contact', 'erb_layout'])
62
- end
63
- end
64
-
65
- describe '.layouts_with_own_for_select' do
66
- it "should not hold a layout twice" do
67
- layouts = PageLayout.layouts_with_own_for_select('standard', 1, false)
68
- layouts = layouts.collect(&:last)
69
- expect(layouts.select { |l| l == "standard" }.length).to eq(1)
70
- end
71
- end
72
-
73
- describe '.selectable_layouts' do
74
- let(:language) { Language.default }
75
- before { language }
76
- subject { PageLayout.selectable_layouts(language.id) }
77
-
78
- it "should not display hidden page layouts" do
79
- subject.each { |l| expect(l['hide']).not_to eq(true) }
80
- end
81
-
82
- context "with already taken layouts" do
83
- before do
84
- allow(PageLayout).to receive(:all).and_return([{'unique' => true}])
85
- allow(Page).to receive(:where).and_return double(pluck: [1])
86
- end
87
-
88
- it "should not include unique layouts" do
89
- subject.each { |l| expect(l['unique']).not_to eq(true) }
90
- end
91
- end
92
-
93
- context "with sites layouts present" do
94
- let(:site) { Site.new }
95
-
96
- let(:definitions) do
97
- [{'name' => 'default_site', 'page_layouts' => %w(index)}]
98
- end
99
-
100
- before do
101
- allow(Site).to receive(:definitions).and_return(definitions)
102
- end
103
-
104
- it "should only return layouts for site" do
105
- expect(subject.length).to eq(1)
106
- expect(subject.first['name']).to eq('index')
107
- end
108
- end
109
- end
110
-
111
- describe ".element_names_for" do
112
- it "should return all element names for the given pagelayout" do
113
- allow(PageLayout).to receive(:get).with('default').and_return({'name' => 'default', 'elements' => ['element_1', 'element_2']})
114
- expect(PageLayout.element_names_for('default')).to eq(['element_1', 'element_2'])
115
- end
116
-
117
- context "when given page_layout name does not exist" do
118
- it "should return an empty array" do
119
- expect(PageLayout.element_names_for('layout_does_not_exist!')).to eq([])
120
- end
121
- end
122
-
123
- context "when page_layout definition does not contain the elements key" do
124
- it "should return an empty array" do
125
- allow(PageLayout).to receive(:get).with('layout_without_elements_key').and_return({'name' => 'layout_without_elements_key'})
126
- expect(PageLayout.element_names_for('layout_without_elements_key')).to eq([])
127
- end
128
- end
129
- end
130
-
131
- describe '.human_layout_name' do
132
- let(:layout) { {'name' => 'contact'} }
133
- subject { PageLayout.human_layout_name(layout['name']) }
134
-
135
- context "with no translation present" do
136
- it "returns the name capitalized" do
137
- is_expected.to eq('Contact')
138
- end
139
- end
140
-
141
- context "with translation present" do
142
- before { expect(Alchemy).to receive(:t).and_return('Kontakt') }
143
-
144
- it "returns the translated name" do
145
- is_expected.to eq('Kontakt')
146
- end
147
- end
148
- end
149
- end
150
- end
@@ -1,15 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Alchemy
4
- describe 'Paths' do
5
- describe 'defaults' do
6
- it 'has default value for Alchemy.admin_path' do
7
- expect(Alchemy.admin_path).to eq('/admin')
8
- end
9
-
10
- it 'has default value for Alchemy.admin_constraints' do
11
- expect(Alchemy.admin_constraints).to eq({})
12
- end
13
- end
14
- end
15
- end
@@ -1,260 +0,0 @@
1
- require 'spec_helper'
2
- require 'cancan/matchers'
3
-
4
- describe Alchemy::Permissions do
5
- subject { ability }
6
-
7
- let(:ability) { Alchemy::Permissions.new(user) }
8
- let(:attachment) { mock_model(Alchemy::Attachment, restricted?: false) }
9
- let(:restricted_attachment) { mock_model(Alchemy::Attachment, restricted?: true) }
10
- let(:picture) { mock_model(Alchemy::Picture, restricted?: false) }
11
- let(:restricted_picture) { mock_model(Alchemy::Picture, restricted?: true) }
12
- let(:public_page) { build_stubbed(:alchemy_page, :public, restricted: false) }
13
- let(:unpublic_page) { build_stubbed(:alchemy_page, public: false) }
14
- let(:visible_page) { build_stubbed(:alchemy_page, restricted: false, visible: true) }
15
- let(:not_visible_page) { build_stubbed(:alchemy_page, :public, restricted: false, visible: false) }
16
- let(:restricted_page) { build_stubbed(:alchemy_page, :public, public: true, restricted: true) }
17
- let(:visible_restricted_page) { build_stubbed(:alchemy_page, visible: true, restricted: true) }
18
- let(:published_element) { mock_model(Alchemy::Element, restricted?: false, public?: true, trashed?: false) }
19
- let(:restricted_element) { mock_model(Alchemy::Element, restricted?: true, public?: true, trashed?: false) }
20
- let(:published_content) { mock_model(Alchemy::Content, restricted?: false, public?: true, trashed?: false) }
21
- let(:restricted_content) { mock_model(Alchemy::Content, restricted?: true, public?: true, trashed?: false) }
22
-
23
- context "A guest user" do
24
- let(:user) { nil }
25
-
26
- it "can only download not restricted attachments" do
27
- is_expected.to be_able_to(:download, attachment)
28
- is_expected.not_to be_able_to(:download, restricted_attachment)
29
- end
30
-
31
- it "can only see not restricted attachments" do
32
- is_expected.to be_able_to(:show, attachment)
33
- is_expected.not_to be_able_to(:show, restricted_attachment)
34
- end
35
-
36
- it "can only see not restricted pictures" do
37
- is_expected.to be_able_to(:show, picture)
38
- is_expected.to be_able_to(:thumbnail, picture)
39
- is_expected.to be_able_to(:zoom, picture)
40
- is_expected.not_to be_able_to(:show, restricted_picture)
41
- is_expected.not_to be_able_to(:thumbnail, restricted_picture)
42
- is_expected.not_to be_able_to(:zoom, restricted_picture)
43
- end
44
-
45
- it "can only visit not restricted pages" do
46
- is_expected.to be_able_to(:show, public_page)
47
- is_expected.not_to be_able_to(:show, restricted_page)
48
- is_expected.to be_able_to(:index, public_page)
49
- is_expected.not_to be_able_to(:index, restricted_page)
50
- end
51
-
52
- it "can only see visible not restricted pages" do
53
- is_expected.to be_able_to(:see, visible_page)
54
- is_expected.not_to be_able_to(:see, not_visible_page)
55
- end
56
-
57
- it "can only see public not restricted elements" do
58
- is_expected.to be_able_to(:show, published_element)
59
- is_expected.not_to be_able_to(:show, restricted_element)
60
- is_expected.to be_able_to(:index, published_element)
61
- is_expected.not_to be_able_to(:index, restricted_element)
62
- end
63
-
64
- it "can only see public not restricted contents" do
65
- is_expected.to be_able_to(:show, published_content)
66
- is_expected.not_to be_able_to(:show, restricted_content)
67
- is_expected.to be_able_to(:index, published_content)
68
- is_expected.not_to be_able_to(:index, restricted_content)
69
- end
70
- end
71
-
72
- context "A member" do
73
- let(:user) { build(:alchemy_dummy_user) }
74
-
75
- it "can download all attachments" do
76
- is_expected.to be_able_to(:download, attachment)
77
- is_expected.to be_able_to(:download, restricted_attachment)
78
- end
79
-
80
- it "can see all attachments" do
81
- is_expected.to be_able_to(:show, attachment)
82
- is_expected.to be_able_to(:show, restricted_attachment)
83
- end
84
-
85
- it "can see all pictures" do
86
- is_expected.to be_able_to(:show, picture)
87
- is_expected.to be_able_to(:thumbnail, picture)
88
- is_expected.to be_able_to(:zoom, picture)
89
- is_expected.to be_able_to(:show, restricted_picture)
90
- is_expected.to be_able_to(:thumbnail, restricted_picture)
91
- is_expected.to be_able_to(:zoom, restricted_picture)
92
- end
93
-
94
- it "can visit restricted pages" do
95
- is_expected.to be_able_to(:show, public_page)
96
- is_expected.to be_able_to(:show, restricted_page)
97
- is_expected.to be_able_to(:index, public_page)
98
- is_expected.to be_able_to(:index, restricted_page)
99
- end
100
-
101
- it "can see visible restricted pages" do
102
- is_expected.to be_able_to(:see, visible_page)
103
- is_expected.to be_able_to(:see, visible_restricted_page)
104
- end
105
-
106
- it "can not see invisible pages" do
107
- is_expected.not_to be_able_to(:see, not_visible_page)
108
- end
109
-
110
- it "can see public restricted elements" do
111
- is_expected.to be_able_to(:show, published_element)
112
- is_expected.to be_able_to(:show, restricted_element)
113
- is_expected.to be_able_to(:index, published_element)
114
- is_expected.to be_able_to(:index, restricted_element)
115
- end
116
-
117
- it "can see public restricted contents" do
118
- is_expected.to be_able_to(:show, published_content)
119
- is_expected.to be_able_to(:show, restricted_content)
120
- is_expected.to be_able_to(:index, published_content)
121
- is_expected.to be_able_to(:index, restricted_content)
122
- end
123
- end
124
-
125
- context "An author" do
126
- let(:user) { build(:alchemy_dummy_user, :as_author) }
127
-
128
- it "can leave the admin area" do
129
- is_expected.to be_able_to(:leave, :alchemy_admin)
130
- end
131
-
132
- it "can visit the dashboard" do
133
- is_expected.to be_able_to(:index, :alchemy_admin_dashboard)
134
- is_expected.to be_able_to(:info, :alchemy_admin_dashboard)
135
- end
136
-
137
- it "can see picture thumbnails" do
138
- is_expected.to be_able_to(:thumbnail, Alchemy::Picture)
139
- end
140
-
141
- it "can edit page content" do
142
- is_expected.to be_able_to(:show, unpublic_page)
143
- is_expected.to be_able_to(:index, Alchemy::Page)
144
- is_expected.to be_able_to(:info, Alchemy::Page)
145
- is_expected.to be_able_to(:configure, Alchemy::Page)
146
- is_expected.to be_able_to(:update, Alchemy::Page)
147
- is_expected.to be_able_to(:fold, Alchemy::Page)
148
- is_expected.to be_able_to(:link, Alchemy::Page)
149
- is_expected.to be_able_to(:visit, Alchemy::Page)
150
- is_expected.to be_able_to(:unlock, Alchemy::Page)
151
- end
152
-
153
- it "can not publish pages" do
154
- is_expected.to_not be_able_to(:publish, Alchemy::Page)
155
- end
156
-
157
- it "can manage elements" do
158
- is_expected.to be_able_to(:manage, Alchemy::Element)
159
- end
160
-
161
- it "can see all attachments" do
162
- is_expected.to be_able_to(:read, Alchemy::Attachment)
163
- is_expected.to be_able_to(:download, Alchemy::Attachment)
164
- end
165
-
166
- it "can see all pictures" do
167
- is_expected.to be_able_to(:read, Alchemy::Picture)
168
- end
169
-
170
- it "can manage contents" do
171
- is_expected.to be_able_to(:manage, Alchemy::Content)
172
- end
173
-
174
- it "can manage essences" do
175
- is_expected.to be_able_to(:manage, Alchemy::EssencePicture)
176
- is_expected.to be_able_to(:manage, Alchemy::EssenceFile)
177
- end
178
-
179
- it "can see the trash" do
180
- is_expected.to be_able_to(:index, :trash)
181
- end
182
-
183
- it "can manage the clipboard" do
184
- is_expected.to be_able_to(:manage, :alchemy_admin_clipboard)
185
- end
186
-
187
- it "can see tags" do
188
- is_expected.to be_able_to(:read, Alchemy::Tag)
189
- is_expected.to be_able_to(:autocomplete, Alchemy::Tag)
190
- end
191
-
192
- it "can index layoutpages" do
193
- is_expected.to be_able_to(:index, :alchemy_admin_layoutpages)
194
- end
195
- end
196
-
197
- context "An editor" do
198
- let(:user) { build(:alchemy_dummy_user, :as_editor) }
199
-
200
- it "can manage pages" do
201
- is_expected.to be_able_to(:copy, Alchemy::Page)
202
- is_expected.to be_able_to(:copy_language_tree, Alchemy::Page)
203
- is_expected.to be_able_to(:create, Alchemy::Page)
204
- is_expected.to be_able_to(:destroy, Alchemy::Page)
205
- is_expected.to be_able_to(:flush, Alchemy::Page)
206
- is_expected.to be_able_to(:order, Alchemy::Page)
207
- is_expected.to be_able_to(:sort, Alchemy::Page)
208
- is_expected.to be_able_to(:switch_language, Alchemy::Page)
209
- end
210
-
211
- it "can publish pages" do
212
- is_expected.to be_able_to(:publish, Alchemy::Page)
213
- end
214
-
215
- it "can not see invisible pages" do
216
- is_expected.not_to be_able_to(:see, not_visible_page)
217
- end
218
-
219
- it "can clear the trash" do
220
- is_expected.to be_able_to(:clear, :trash)
221
- end
222
-
223
- it "can manage attachments" do
224
- is_expected.to be_able_to(:manage, Alchemy::Attachment)
225
- end
226
-
227
- it "can manage pictures" do
228
- is_expected.to be_able_to(:manage, Alchemy::Picture)
229
- end
230
-
231
- it "can manage tags" do
232
- is_expected.to be_able_to(:manage, Alchemy::Tag)
233
- end
234
- end
235
-
236
- context "An admin" do
237
- let(:user) { build(:alchemy_dummy_user, :as_admin) }
238
-
239
- it "can check for alchemy updates" do
240
- is_expected.to be_able_to(:update_check, :alchemy_admin_dashboard)
241
- end
242
-
243
- it "can manage languages" do
244
- is_expected.to be_able_to(:manage, Alchemy::Language)
245
- end
246
-
247
- it "can manage sites" do
248
- is_expected.to be_able_to(:manage, Alchemy::Site)
249
- end
250
- end
251
-
252
- context "A logged in user without a role" do
253
- let(:user) { mock_model(Alchemy.user_class, alchemy_roles: []) }
254
-
255
- it "can only see visible not restricted pages (like the guest role)" do
256
- is_expected.to be_able_to(:see, visible_page)
257
- is_expected.not_to be_able_to(:see, not_visible_page)
258
- end
259
- end
260
- end