releaf-core 0.2.1 → 1.0.3

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 (256) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +19 -21
  3. data/app/assets/javascripts/releaf/application.js +1 -2
  4. data/app/assets/javascripts/releaf/include/field.type_date_or_datetime_or_time.js +19 -21
  5. data/app/assets/javascripts/releaf/include/field.type_richtext.js +31 -9
  6. data/app/assets/javascripts/releaf/include/localization.js +3 -8
  7. data/app/assets/javascripts/releaf/include/nested_fields.js +1 -1
  8. data/app/assets/javascripts/releaf/include/remote_validator.js +7 -4
  9. data/app/assets/javascripts/releaf/include/sortable.js +1 -1
  10. data/app/assets/javascripts/releaf/include/{profile_settings.js → store_settings.js} +4 -10
  11. data/app/assets/javascripts/releaf/include/toolbox.js +7 -11
  12. data/app/assets/stylesheets/releaf/layout/fields.scss +1 -0
  13. data/app/assets/stylesheets/releaf/layout/header.scss +1 -0
  14. data/app/assets/stylesheets/releaf/layout/search.scss +15 -0
  15. data/app/builders/releaf/builders/base.rb +11 -9
  16. data/app/builders/releaf/builders/confirm_destroy_dialog_builder.rb +2 -2
  17. data/app/builders/releaf/builders/confirm_dialog_builder.rb +3 -3
  18. data/app/builders/releaf/builders/edit_builder.rb +51 -6
  19. data/app/builders/releaf/builders/form_builder/associated_set_field.rb +37 -0
  20. data/app/builders/releaf/builders/form_builder/associations.rb +153 -0
  21. data/app/builders/releaf/builders/form_builder/boolean_fields.rb +12 -0
  22. data/app/builders/releaf/builders/form_builder/date_fields.rb +30 -0
  23. data/app/builders/releaf/builders/form_builder/fields.rb +10 -0
  24. data/app/builders/releaf/builders/form_builder/file_fields.rb +47 -0
  25. data/app/builders/releaf/builders/form_builder/i18n_fields.rb +75 -0
  26. data/app/builders/releaf/builders/form_builder/label.rb +34 -0
  27. data/app/builders/releaf/builders/form_builder/number_fields.rb +13 -0
  28. data/app/builders/releaf/builders/form_builder/richtext_fields.rb +28 -0
  29. data/app/builders/releaf/builders/form_builder/text_fields.rb +43 -0
  30. data/app/builders/releaf/builders/form_builder.rb +8 -489
  31. data/app/builders/releaf/builders/index_builder.rb +10 -3
  32. data/app/builders/releaf/builders/page/header_builder.rb +23 -59
  33. data/app/builders/releaf/builders/page/layout_builder.rb +125 -115
  34. data/app/builders/releaf/builders/page/menu_builder.rb +96 -106
  35. data/app/builders/releaf/builders/refused_destroy_dialog_builder.rb +7 -12
  36. data/app/builders/releaf/builders/resource_view.rb +4 -4
  37. data/app/builders/releaf/builders/table_builder.rb +20 -30
  38. data/app/builders/releaf/builders/toolbox_builder.rb +1 -1
  39. data/app/builders/releaf/builders/utilities/date_fields.rb +100 -0
  40. data/app/builders/releaf/builders/utilities/resolve_attribute_field_method_name.rb +80 -0
  41. data/app/builders/releaf/builders/view.rb +5 -2
  42. data/app/builders/releaf/settings/form_builder.rb +18 -0
  43. data/app/builders/releaf/settings/table_builder.rb +9 -0
  44. data/app/controllers/releaf/action_controller.rb +174 -0
  45. data/app/controllers/releaf/{core/errors_controller.rb → errors_controller.rb} +1 -1
  46. data/app/controllers/releaf/root_controller.rb +23 -0
  47. data/app/controllers/releaf/settings_controller.rb +22 -0
  48. data/app/helpers/releaf/application_helper.rb +1 -1
  49. data/app/lib/releaf/action_controller/ajax.rb +24 -0
  50. data/app/lib/releaf/action_controller/breadcrumbs.rb +26 -0
  51. data/app/lib/releaf/action_controller/builders.rb +34 -0
  52. data/app/lib/releaf/action_controller/features.rb +47 -0
  53. data/app/lib/releaf/action_controller/notifications.rb +28 -0
  54. data/app/lib/releaf/action_controller/resources.rb +59 -0
  55. data/app/{controllers/concerns/releaf → lib/releaf/action_controller}/richtext_attachments.rb +1 -1
  56. data/app/lib/releaf/action_controller/search.rb +22 -0
  57. data/app/lib/releaf/action_controller/urls.rb +49 -0
  58. data/app/lib/releaf/action_controller/views.rb +29 -0
  59. data/app/lib/releaf/assets_resolver.rb +51 -0
  60. data/app/lib/releaf/build_errors_hash.rb +81 -0
  61. data/app/lib/releaf/controller_definition.rb +22 -0
  62. data/app/lib/releaf/controller_group_definition.rb +12 -0
  63. data/app/lib/releaf/{core/default_searchable_fields.rb → default_searchable_fields.rb} +1 -1
  64. data/app/lib/releaf/{core/resource_base.rb → resource_base.rb} +14 -6
  65. data/app/lib/releaf/{core/resource_fields.rb → resource_fields.rb} +1 -1
  66. data/app/lib/releaf/{core/resource_params.rb → resource_params.rb} +3 -3
  67. data/app/lib/releaf/resource_table_fields.rb +10 -0
  68. data/app/lib/releaf/{core/resource_utilities.rb → resource_utilities.rb} +2 -2
  69. data/app/lib/releaf/{core/responders → responders}/access_denied_responder.rb +2 -2
  70. data/app/lib/releaf/{core/responders → responders}/after_save_responder.rb +3 -3
  71. data/app/lib/releaf/{core/responders → responders}/confirm_destroy_responder.rb +1 -1
  72. data/app/lib/releaf/{core/responders → responders}/destroy_responder.rb +1 -1
  73. data/app/lib/releaf/{core/responders → responders}/error_responder.rb +1 -1
  74. data/app/lib/releaf/{core/responders → responders}/feature_disabled_responder.rb +2 -2
  75. data/app/lib/releaf/{core/responders → responders}/page_not_found_responder.rb +2 -2
  76. data/app/lib/releaf/responders.rb +31 -0
  77. data/app/lib/releaf/{core/search.rb → search.rb} +1 -1
  78. data/app/lib/releaf/settings/normalize_value.rb +45 -0
  79. data/app/lib/releaf/settings/register.rb +45 -0
  80. data/app/models/releaf/settings.rb +25 -13
  81. data/app/services/array/reorder.rb +82 -0
  82. data/app/views/releaf/{base → action}/confirm_destroy.ruby +0 -0
  83. data/app/views/releaf/{base → action}/create_releaf_richtext_attachment.haml +0 -0
  84. data/app/views/releaf/{base → action}/edit.ruby +0 -0
  85. data/app/views/releaf/{base → action}/index.ruby +0 -0
  86. data/app/views/releaf/{base → action}/new.ruby +0 -0
  87. data/app/views/releaf/{base → action}/refused_destroy.ruby +0 -0
  88. data/app/views/releaf/{base → action}/show.ruby +0 -0
  89. data/app/views/releaf/{base → action}/toolbox.ruby +0 -0
  90. data/lib/generators/dummy/install_generator.rb +5 -0
  91. data/lib/generators/dummy/templates/assets/javascripts/controllers/admin/books.js +23 -0
  92. data/lib/generators/dummy/templates/assets/javascripts/controllers/admin/nodes.js +1 -0
  93. data/lib/generators/dummy/templates/assets/javascripts/controllers/admin/other_site/other_nodes.js +1 -0
  94. data/lib/generators/dummy/templates/assets/stylesheets/controllers/admin/nodes.scss +1 -0
  95. data/lib/generators/dummy/templates/assets/stylesheets/controllers/admin/other_site/other_nodes.scss +1 -0
  96. data/lib/generators/dummy/templates/builders/admin/books/form_builder.rb +11 -1
  97. data/lib/generators/dummy/templates/config/routes.rb +31 -7
  98. data/lib/generators/dummy/templates/controllers/admin/authors_controller.rb +3 -6
  99. data/lib/generators/dummy/templates/controllers/admin/books_controller.rb +1 -1
  100. data/lib/generators/dummy/templates/controllers/admin/chapters_controller.rb +1 -1
  101. data/lib/generators/dummy/templates/controllers/admin/nodes_controller.rb +3 -0
  102. data/lib/generators/dummy/templates/controllers/admin/other_site/other_nodes_controller.rb +3 -0
  103. data/lib/generators/dummy/templates/controllers/admin/publishers_controller.rb +1 -1
  104. data/lib/generators/dummy/templates/controllers/application_controller.rb +27 -5
  105. data/lib/generators/dummy/templates/controllers/concerns/node_controller.rb +13 -3
  106. data/lib/generators/dummy/templates/controllers/contacts_controller.rb +3 -1
  107. data/lib/generators/dummy/templates/initializers/releaf.rb +31 -25
  108. data/lib/generators/dummy/templates/migrations/create_home_pages.rb +1 -0
  109. data/lib/generators/dummy/templates/migrations/create_other_nodes.rb +29 -0
  110. data/lib/generators/dummy/templates/models/author.rb +2 -2
  111. data/lib/generators/dummy/templates/models/book.rb +0 -2
  112. data/lib/generators/dummy/templates/models/chapter.rb +0 -2
  113. data/lib/generators/dummy/templates/models/home_page.rb +1 -0
  114. data/lib/generators/dummy/templates/models/other_site/other_node.rb +7 -0
  115. data/lib/generators/dummy/templates/models/publisher.rb +0 -5
  116. data/lib/generators/dummy/templates/models/text_page.rb +0 -1
  117. data/lib/generators/dummy/templates/views/contacts/show.html.haml +1 -1
  118. data/lib/generators/dummy/templates/views/layouts/application.html.haml +9 -1
  119. data/lib/generators/dummy/templates/views/text_pages/show.haml +1 -1
  120. data/lib/generators/releaf/templates/initializers/releaf.rb +6 -17
  121. data/lib/generators/releaf/templates/migrations/create_releaf_translations.rb +13 -14
  122. data/lib/generators/releaf/templates/seeds/seeds.rb +28 -32
  123. data/lib/releaf/{core/application.rb → application.rb} +5 -4
  124. data/lib/releaf/{core/component.rb → component.rb} +6 -2
  125. data/lib/releaf/configuration.rb +95 -0
  126. data/lib/releaf/core_ext/array/reorder.rb +5 -0
  127. data/lib/releaf/engine.rb +12 -0
  128. data/lib/releaf/exceptions.rb +5 -0
  129. data/lib/releaf/instance_cache.rb +72 -0
  130. data/lib/releaf/{core → rails_ext}/validation_error_codes.rb +1 -1
  131. data/lib/releaf/root/configuration.rb +6 -0
  132. data/lib/releaf/root/default_controller_resolver.rb +37 -0
  133. data/lib/releaf/root/settings_manager.rb +12 -0
  134. data/lib/releaf/root.rb +17 -0
  135. data/lib/releaf/{core/route_mapper.rb → route_mapper.rb} +6 -6
  136. data/lib/releaf/service.rb +11 -0
  137. data/lib/releaf/settings_ui.rb +7 -0
  138. data/lib/releaf/version.rb +1 -1
  139. data/lib/releaf-core.rb +38 -9
  140. data/spec/builders/{builders → releaf/builders}/association_reflector_spec.rb +0 -0
  141. data/spec/builders/{builders → releaf/builders}/base_spec.rb +17 -21
  142. data/spec/builders/{builders → releaf/builders}/collection_spec.rb +0 -0
  143. data/spec/builders/{builders → releaf/builders}/confirm_destroy_dialog_builder_spec.rb +5 -5
  144. data/spec/builders/{builders → releaf/builders}/confirm_dialog_builder_spec.rb +9 -7
  145. data/spec/builders/{builders → releaf/builders}/edit_builder_spec.rb +127 -20
  146. data/spec/builders/releaf/builders/form_builder/associations_spec.rb +129 -0
  147. data/spec/builders/releaf/builders/form_builder/date_fields_spec.rb +86 -0
  148. data/spec/builders/releaf/builders/form_builder/i18n_fields_spec.rb +48 -0
  149. data/spec/builders/releaf/builders/form_builder/label_spec.rb +106 -0
  150. data/spec/builders/releaf/builders/form_builder/number_fields_spec.rb +37 -0
  151. data/spec/builders/releaf/builders/form_builder_spec.rb +228 -0
  152. data/spec/builders/{builders → releaf/builders}/index_builder_spec.rb +29 -10
  153. data/spec/builders/releaf/builders/page/header_builder_spec.rb +65 -0
  154. data/spec/builders/releaf/builders/page/layout_builder_spec.rb +170 -0
  155. data/spec/builders/releaf/builders/page/menu_builder_spec.rb +345 -0
  156. data/spec/builders/{builders → releaf/builders}/pagination_builder_spec.rb +0 -0
  157. data/spec/builders/{builders → releaf/builders}/resource_dialog_spec.rb +0 -0
  158. data/spec/builders/{builders → releaf/builders}/resource_view_spec.rb +8 -8
  159. data/spec/builders/{builders → releaf/builders}/show_builder_spec.rb +0 -0
  160. data/spec/builders/{builders → releaf/builders}/table_builder_spec.rb +31 -75
  161. data/spec/builders/{builders → releaf/builders}/template_spec.rb +0 -0
  162. data/spec/builders/{builders → releaf/builders}/toolbox_builder_spec.rb +4 -4
  163. data/spec/builders/{builders → releaf/builders}/toolbox_spec.rb +0 -0
  164. data/spec/builders/releaf/builders/utilities/date_fields_spec.rb +125 -0
  165. data/spec/builders/releaf/builders/utilities/resolve_attribute_field_method_name_spec.rb +318 -0
  166. data/spec/builders/{builders → releaf/builders}/view_spec.rb +1 -1
  167. data/spec/builders/{builders_spec.rb → releaf/builders_spec.rb} +0 -0
  168. data/spec/builders/releaf/settings/form_builder_spec.rb +48 -0
  169. data/spec/builders/{core → releaf}/settings/table_builder_spec.rb +6 -4
  170. data/spec/controllers/concerns/releaf/richtext_attachments_spec.rb +1 -1
  171. data/spec/controllers/releaf/{base_controller_spec.rb → action_controller_spec.rb} +132 -161
  172. data/spec/controllers/releaf/root_controller_spec.rb +40 -0
  173. data/spec/controllers/releaf/settings_controller_spec.rb +52 -0
  174. data/spec/error_hash_builder_spec.rb +83 -0
  175. data/spec/ext/array_reorder_spec.rb +12 -0
  176. data/spec/features/ajaxbox_spec.rb +6 -6
  177. data/spec/features/errors_spec.rb +2 -1
  178. data/spec/features/index_table_spec.rb +6 -3
  179. data/spec/features/richtext_attachments_spec.rb +2 -2
  180. data/spec/features/richtext_custom_config_spec.rb +28 -0
  181. data/spec/features/richtext_embed_spec.rb +1 -1
  182. data/spec/features/richtext_spec.rb +10 -1
  183. data/spec/features/search_spec.rb +1 -1
  184. data/spec/features/settings_spec.rb +10 -5
  185. data/spec/helpers/application_helper_spec.rb +4 -6
  186. data/spec/lib/releaf/action_controller/features_spec.rb +171 -0
  187. data/spec/lib/releaf/action_controller/search_spec.rb +84 -0
  188. data/spec/lib/releaf/{core/application_spec.rb → application_spec.rb} +7 -6
  189. data/spec/lib/releaf/assets_resolver_spec.rb +130 -0
  190. data/spec/lib/releaf/build_errors_hash_spec.rb +141 -0
  191. data/spec/lib/releaf/configuration_spec.rb +205 -0
  192. data/spec/lib/releaf/controller_definition_spec.rb +49 -0
  193. data/spec/lib/releaf/controller_group_definition_spec.rb +27 -0
  194. data/spec/lib/releaf/{core/default_searchable_fields_spec.rb → default_searchable_fields_spec.rb} +1 -1
  195. data/spec/lib/releaf/instance_cache_spec.rb +98 -0
  196. data/spec/lib/releaf/{core/resource_base_spec.rb → resource_base_spec.rb} +59 -21
  197. data/spec/lib/releaf/{core/resource_fields_spec.rb → resource_fields_spec.rb} +1 -1
  198. data/spec/lib/releaf/{core/resource_params_spec.rb → resource_params_spec.rb} +3 -5
  199. data/spec/lib/releaf/resource_table_fields_spec.rb +20 -0
  200. data/spec/lib/releaf/{core/resource_utilities_spec.rb → resource_utilities_spec.rb} +1 -1
  201. data/spec/lib/releaf/{core/responders → responders}/access_denied_responder_spec.rb +1 -1
  202. data/spec/lib/releaf/{core/responders → responders}/after_save_responder_spec.rb +9 -8
  203. data/spec/lib/releaf/{core/responders → responders}/confirm_destroy_responder_spec.rb +2 -2
  204. data/spec/lib/releaf/{core/responders → responders}/destroy_responder_spec.rb +2 -2
  205. data/spec/lib/releaf/{core/responders → responders}/error_responder_spec.rb +4 -4
  206. data/spec/lib/releaf/{core/responders → responders}/feature_disabled_responder_spec.rb +1 -1
  207. data/spec/lib/releaf/{core/responders → responders}/page_not_found_responder_spec.rb +1 -1
  208. data/spec/lib/releaf/{core/responders_spec.rb → responders_spec.rb} +14 -14
  209. data/spec/lib/releaf/root/configuration_spec.rb +9 -0
  210. data/spec/lib/releaf/root/default_controller_resolver_spec.rb +108 -0
  211. data/spec/lib/releaf/root_spec.rb +13 -0
  212. data/spec/lib/releaf/service_spec.rb +20 -0
  213. data/spec/lib/releaf/settings/normalize_value_spec.rb +103 -0
  214. data/spec/lib/releaf/settings/register_spec.rb +135 -0
  215. data/spec/lib/releaf/settings_manager_spec.rb +22 -0
  216. data/spec/lib/validation_error_codes_spec.rb +1 -1
  217. data/spec/misc/factories_spec.rb +0 -12
  218. data/spec/models/settings_spec.rb +74 -32
  219. data/spec/routing/route_mapper_spec.rb +5 -5
  220. data/spec/rspec_helpers/test_helpers_spec.rb +1 -1
  221. data/spec/rspec_helpers/test_spec.rb +14 -0
  222. data/spec/{lib/releaf/core/item_orderer_spec.rb → services/array/reorder_spec.rb} +32 -53
  223. metadata +299 -224
  224. data/app/builders/releaf/builders/orderer.rb +0 -5
  225. data/app/builders/releaf/builders/tags/releaf_associated_set_field.rb +0 -40
  226. data/app/builders/releaf/core/settings/form_builder.rb +0 -21
  227. data/app/builders/releaf/core/settings/table_builder.rb +0 -11
  228. data/app/controllers/concerns/releaf/breadcrumbs.rb +0 -42
  229. data/app/controllers/releaf/base_controller.rb +0 -458
  230. data/app/controllers/releaf/core/settings_controller.rb +0 -50
  231. data/app/helpers/releaf/javascript_helper.rb +0 -75
  232. data/app/lib/releaf/core/assets_resolver.rb +0 -58
  233. data/app/lib/releaf/core/error_formatter.rb +0 -103
  234. data/app/lib/releaf/core/item_orderer.rb +0 -102
  235. data/app/lib/releaf/core/resource_table_fields.rb +0 -10
  236. data/app/lib/releaf/core/responders.rb +0 -31
  237. data/app/lib/releaf/core/template_field_type_mapper.rb +0 -127
  238. data/lib/generators/dummy/templates/controllers/concerns/.keep +0 -0
  239. data/lib/releaf/core/builders_autoload.rb +0 -27
  240. data/lib/releaf/core/configuration.rb +0 -101
  241. data/lib/releaf/core/engine.rb +0 -35
  242. data/lib/releaf/core/exceptions.rb +0 -38
  243. data/lib/releaf/core/settings_ui_component.rb +0 -7
  244. data/releaf-core.gemspec +0 -35
  245. data/spec/builders/builders/form_builder_spec.rb +0 -562
  246. data/spec/builders/builders/orderer_spec.rb +0 -22
  247. data/spec/builders/builders/page/header_builder_spec.rb +0 -143
  248. data/spec/builders/builders/page/layout_builder_spec.rb +0 -73
  249. data/spec/builders/builders/page/menu_builder_spec.rb +0 -160
  250. data/spec/builders/core/settings/form_builder_spec.rb +0 -69
  251. data/spec/controllers/releaf/core/settings_controller_spec.rb +0 -31
  252. data/spec/lib/releaf/core/assets_resolver_spec.rb +0 -113
  253. data/spec/lib/releaf/core/configuration_spec.rb +0 -230
  254. data/spec/lib/releaf/core/error_formatter_spec.rb +0 -242
  255. data/spec/lib/releaf/core/resource_table_fields_spec.rb +0 -18
  256. data/spec/lib/releaf/core/template_field_type_mapper_spec.rb +0 -311
@@ -1,311 +0,0 @@
1
- require "rails_helper"
2
-
3
- describe Releaf::Core::TemplateFieldTypeMapper do
4
- let(:object){ double("generic object") }
5
-
6
- def file_field_error_message field_name, obj
7
- "object doesn't respond to `%s` method. Did you forgot to add `file_accessor :%s` to `%s` model?" % [field_name, field_name, obj.class.name]
8
- end
9
-
10
- def image_field_error_message field_name, obj
11
- "object doesn't respond to `%s` method. Did you forgot to add `image_accessor :%s` to `%s` model?" % [field_name, field_name, obj.class.name]
12
- end
13
-
14
- describe ".field_type_name", pending: true do
15
- it "needs tests"
16
- end
17
-
18
- describe ".use_i18n?" do
19
- context "when object translates" do
20
- context "when given attribute translatable" do
21
- it "returns true" do
22
- expect(described_class.use_i18n?(Book.new, :description)).to be true
23
- end
24
- end
25
-
26
- context "when attribute does not translatable" do
27
- it "returns false" do
28
- expect(described_class.use_i18n?(Book.new, :title)).to be false
29
- end
30
- end
31
- end
32
-
33
- context "when object does not translates" do
34
- it "returns false" do
35
- expect(described_class.use_i18n?(Releaf::Permissions::User.new, :password)).to be false
36
- end
37
- end
38
- end
39
-
40
- describe ".image_or_error" do
41
- context "given field_name that doesn't end with _uid" do
42
- it "raises ArgumentError" do
43
- allow(object).to receive(:image)
44
- expect { subject.send(:image_or_error, 'image', object) }.to raise_error ArgumentError
45
- end
46
- end
47
-
48
- context 'given field_name is `image_uid`' do
49
- context 'when object responds to `image` method' do
50
- it "returns 'image'" do
51
- allow(object).to receive(:image)
52
- expect( subject.send(:image_or_error, 'image_uid', object) ).to eq 'image'
53
- end
54
- end
55
-
56
- context 'when object does not respond to `image` method' do
57
- it 'raises RuntimeError' do
58
- expect { subject.send(:image_or_error, 'image_uid', object) }.to raise_error(RuntimeError, image_field_error_message('image', object))
59
- end
60
- end
61
- end
62
- end
63
-
64
- describe ".file_or_error" do
65
- context "given field_name that doesn't end with _uid" do
66
- it "raises ArgumentError" do
67
- allow(object).to receive(:file)
68
- expect { subject.send(:file_or_error, 'file', object) }.to raise_error ArgumentError
69
- end
70
- end
71
-
72
- context 'given field_name is `file_uid`' do
73
- context 'when object responds to `file` method' do
74
- it "returns 'file'" do
75
- allow(object).to receive(:file)
76
- expect( subject.send(:file_or_error, 'file_uid', object) ).to eq 'file'
77
- end
78
- end
79
-
80
- context 'when object does not respond to `file` method' do
81
- it 'raises RuntimeError' do
82
- expect { subject.send(:file_or_error, 'file_uid', object) }.to raise_error(RuntimeError, file_field_error_message('file', object))
83
- end
84
- end
85
- end
86
- end
87
-
88
- describe ".field_type_name_for_string" do
89
- %w[thumbnail_uid image_uid photo_uid photography_uid picture_uid avatar_uid logo_uid banner_uid icon_uid].each do |field_name|
90
- context "when attribute name is '#{field_name}'" do
91
- context "when object responds to '#{field_name.sub(/_uid$/, '')}'" do
92
- it "returns 'image'" do
93
- allow(object).to receive(field_name.sub(/_uid$/, '').to_sym)
94
- expect( subject.send(:field_type_name_for_string, field_name, object) ).to eq 'image'
95
- end
96
- end
97
-
98
- context "when object doesn't respond to '#{field_name.sub(/_uid$/, '')}'" do
99
- it "raises RuntimeError" do
100
- test_field_name = field_name.sub(/_uid$/, '')
101
- expect { subject.send(:field_type_name_for_string, field_name, object) }.to raise_error(RuntimeError, image_field_error_message(test_field_name, object))
102
- end
103
- end
104
- end
105
- end
106
-
107
- %w[image_uid2 uid].each do |field_name|
108
- context "when attribute_name is '#{field_name}'" do
109
- it "doesn't return 'image'" do
110
- expect( subject.send(:field_type_name_for_string, field_name, nil) ).to_not eq 'image'
111
- end
112
-
113
- it "doesn't return 'file'" do
114
- expect( subject.send(:field_type_name_for_string, field_name, nil) ).to_not eq 'file'
115
- end
116
- end
117
- end
118
-
119
- %w[some_uid other_uid cook_file_uid file_uid].each do |field_name|
120
- context "when attribute name is '#{field_name}'" do
121
- context "when object responds to '#{field_name.sub(/_uid$/, '')}'" do
122
- it "returns 'file'" do
123
- allow(object).to receive(field_name.sub(/_uid$/, '').to_sym)
124
- expect( subject.send(:field_type_name_for_string, field_name, object) ).to eq 'file'
125
- end
126
- end
127
-
128
- context "when object doesn't respond to '#{field_name.sub(/_uid$/, '')}'" do
129
- it "raises RuntimeError" do
130
- test_field_name = field_name.sub(/_uid$/, '')
131
- expect { subject.send(:field_type_name_for_string, field_name, object) }.to raise_error(RuntimeError, file_field_error_message(test_field_name, object))
132
- end
133
- end
134
- end
135
- end
136
-
137
- %w[pin password password_confirmation encrypted_password some_password some_password_for_secretary].each do |field_name|
138
- context "when attribute name is '#{field_name}'" do
139
- it "returns 'password'" do
140
- expect( subject.send(:field_type_name_for_string, field_name, nil) ).to eq 'password'
141
- end
142
- end
143
- end
144
-
145
- %w[this_pin pin_that some_pin_for_admin].each do |field_name|
146
- context "when attribute name is '#{field_name}'" do
147
- it "doesn't return 'password'" do
148
- expect( subject.send(:field_type_name_for_string, field_name, nil) ).to_not eq 'password'
149
- end
150
- end
151
- end
152
-
153
- %w[email admin_email].each do |field_name|
154
- context "when attribute name is '#{field_name}'" do
155
- it "returns 'email'" do
156
- expect( subject.send(:field_type_name_for_string, field_name, nil) ).to eq 'email'
157
- end
158
- end
159
- end
160
-
161
- context "when attribute name is 'email_for_admin'" do
162
- it "doesn't return 'email'" do
163
- expect( subject.send(:field_type_name_for_string, 'email_for_admin', nil) ).to_not eq 'email'
164
- end
165
- end
166
-
167
- %w[link awesome_link].each do |field_name|
168
- context "when attribute name is '#{field_name}'" do
169
- it "returns 'link'" do
170
- expect( subject.send(:field_type_name_for_string, field_name, nil) ).to eq 'link'
171
- end
172
- end
173
- end
174
-
175
- context "when attribute name is 'link_to_awesome_site'" do
176
- it "doesn't return 'link'" do
177
- expect( subject.send(:field_type_name_for_string, 'link_to_awesome_site', nil) ).to_not eq 'link'
178
- end
179
- end
180
-
181
- %w[www homepage admin_homepage www_page homepage_www url homepage_url site_url url_for_this_site].each do |field_name|
182
- context "when attribute name is '#{field_name}'" do
183
- it "doesn't return 'link'" do
184
- expect( subject.send(:field_type_name_for_string, field_name, nil) ).to_not eq 'link'
185
- end
186
- end
187
- end
188
-
189
- %w[www homepage url some_pin uid everything_else html].each do |field_name|
190
- context "when attribute name is '#{field_name}'" do
191
- it "returns 'text'" do
192
- expect( subject.send(:field_type_name_for_string, field_name, nil) ).to eq 'text'
193
- end
194
- end
195
- end
196
- end # describe ".field_type_name_for_string"
197
-
198
-
199
- describe '.field_type_name_for_text' do
200
- %w[url homepage random_url random_homepage random_link cool_link].each do |field_name|
201
- context "when attribute name is '#{field_name}'" do
202
- it "returns 'link'" do
203
- expect( subject.send(:field_type_name_for_text, field_name, nil) ).to eq 'link'
204
- end
205
- end
206
- end
207
-
208
- %w[url_for_site link_to_site link home_page homepage_for_site].each do |field_name|
209
- context "when attribute name is '#{field_name}'" do
210
- it "doesn't return 'link'" do
211
- expect( subject.send(:field_type_name_for_text, field_name, nil) ).to_not eq 'link'
212
- end
213
- end
214
- end
215
-
216
- %w[html random_html].each do |field_name|
217
- context "when attribute name is '#{field_name}'" do
218
- it "returns 'richtext'" do
219
- expect( subject.send(:field_type_name_for_text, field_name, nil) ).to eq 'richtext'
220
- end
221
- end
222
- end
223
-
224
- context "when attribute name is 'html_for_description'" do
225
- it "doesn't return 'richtext'" do
226
- expect( subject.send(:field_type_name_for_text, 'html_for_description', nil) ).to_not eq 'richtext'
227
- end
228
- end
229
-
230
- %w[text description random html_text].each do |field_name|
231
- context "when attribute name is '#{field_name}'" do
232
- it "returns 'textarea'" do
233
- expect( subject.send(:field_type_name_for_text, field_name, nil) ).to eq 'textarea'
234
- end
235
- end
236
- end
237
- end # describe '.field_type_name_for_text'
238
-
239
- describe ".field_type_name_for_datetime" do
240
- %w[no matter what].each do |field_name|
241
- context "when attribute name is '#{field_name}'" do
242
- it "returns 'datetime'" do
243
- expect( subject.send(:field_type_name_for_datetime, field_name, nil) ).to eq 'datetime'
244
- end
245
- end
246
- end
247
- end # describe ".field_type_name_for_datetime" do
248
- describe ".field_type_name_for_date" do
249
- %w[no matter what].each do |field_name|
250
- context "when attribute name is '#{field_name}'" do
251
- it "returns 'date'" do
252
- expect( subject.send(:field_type_name_for_date, field_name, nil) ).to eq 'date'
253
- end
254
- end
255
- end
256
- end # describe ".field_type_name_for_date" do
257
- describe ".field_type_name_for_time" do
258
- %w[no matter what].each do |field_name|
259
- context "when attribute name is '#{field_name}'" do
260
- it "returns 'time'" do
261
- expect( subject.send(:field_type_name_for_time, field_name, nil) ).to eq 'time'
262
- end
263
- end
264
- end
265
- end # describe ".field_type_name_for_time" do
266
- describe ".field_type_name_for_boolean" do
267
- %w[no matter what].each do |field_name|
268
- context "when attribute name is '#{field_name}'" do
269
- it "returns 'boolean'" do
270
- expect( subject.send(:field_type_name_for_boolean, field_name, nil) ).to eq 'boolean'
271
- end
272
- end
273
- end
274
- end # describe ".field_type_name_for_boolean" do
275
- describe ".field_type_name_for_float" do
276
- %w[no matter what].each do |field_name|
277
- context "when attribute name is '#{field_name}'" do
278
- it "returns 'float'" do
279
- expect( subject.send(:field_type_name_for_float, field_name, nil) ).to eq 'float'
280
- end
281
- end
282
- end
283
- end # describe ".field_type_name_for_float" do
284
-
285
- describe ".field_type_name_for_integer" do
286
- before do
287
- author = FactoryGirl.create(:author)
288
- @book = FactoryGirl.create(:book, :author => author)
289
- end
290
-
291
- context "when attributes ends with '_id'" do
292
- context "when there's an ActiveRecord association" do
293
- it "returns 'item'" do
294
- expect( subject.send(:field_type_name_for_integer, 'author_id', @book) ).to eq 'item'
295
- end
296
- end
297
-
298
- context "when there's no ActiveRecord association" do
299
- it "returns 'text'" do
300
- expect( subject.send(:field_type_name_for_integer, 'random_field_id', @book) ).to eq 'integer'
301
- end
302
- end
303
- end
304
-
305
- context "when attribute doesn't end with '_id'" do
306
- it "returns 'text'" do
307
- expect( subject.send(:field_type_name_for_integer, 'random_field', nil) ).to eq 'integer'
308
- end
309
- end
310
- end # describe ".field_type_name_for_integer"
311
- end