releaf-core 0.2.1 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
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