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
@@ -14,18 +14,6 @@ describe "FactoryGirl factories" do
14
14
  end
15
15
  end
16
16
 
17
- describe "translation factory" do
18
- it "creates new translation" do
19
- expect { create(:translation) }.to change { Releaf::I18nDatabase::Translation.count }.by(1)
20
- end
21
- end
22
-
23
- describe "translation data factory" do
24
- it "creates new translation data" do
25
- expect { create(:translation_data) }.to change { Releaf::I18nDatabase::TranslationData.count }.by(1)
26
- end
27
- end
28
-
29
17
  describe "node factory" do
30
18
  it "creates new content node" do
31
19
  expect { create(:node) }.to change { Node.count }.by(1)
@@ -1,57 +1,99 @@
1
1
  require "rails_helper"
2
2
 
3
3
  describe Releaf::Settings do
4
- let(:values){ [{key: "a", default: "x"}, {key: "b", default: "y"}] }
5
4
 
6
- describe "#to_text" do
5
+ describe ":registered scope" do
6
+ it "returns only registed settings ordered by `var`" do
7
+ registered = described_class.where(var: "x")
8
+ allow(described_class).to receive(:registered_keys).and_return([:a, :b])
9
+ allow(described_class).to receive(:where).with(var: [:a, :b]).and_return(registered)
10
+ allow(registered).to receive(:order).with(:var).and_return(:c)
11
+ expect(described_class.registered).to eq(:c)
12
+ end
13
+
14
+ it "returns valid query" do
15
+ expect(described_class.registered.count).to be_instance_of(Fixnum)
16
+ end
17
+
18
+ it "returns instance of `Releaf::Settings::ActiveRecord_Relation`" do
19
+ expect(described_class.registered).to be_instance_of(Releaf::Settings::ActiveRecord_Relation)
20
+ end
21
+ end
22
+
23
+ describe "#releaf_title" do
7
24
  it "returns var value" do
8
25
  subject.var = "x"
9
- expect(subject.to_text).to eq("x")
26
+ expect(subject.releaf_title).to eq("x")
10
27
  end
11
28
  end
12
29
 
13
- describe ".registered_keys" do
14
- it "returns all keys from `Releaf::Settings.registry` hash" do
15
- described_class.registry = {}
16
- described_class.registry["a"] = 1
17
- described_class.registry["b"] = 1
18
- described_class.registry["c"] = 1
19
- expect(described_class.registered_keys.count).to eq(3)
20
- expect(described_class.registered_keys).to include("a", "b", "c")
30
+ describe "#input_type" do
31
+ it "returns type from metadata" do
32
+ allow(subject).to receive(:metadata).and_return(type: "xx")
33
+ expect(subject.input_type).to eq("xx")
34
+ end
35
+
36
+ context "when type not defined in meta data" do
37
+ it "returns `:text` as default value" do
38
+ allow(subject).to receive(:metadata).and_return(type: nil)
39
+ expect(subject.input_type).to eq(:text)
40
+
41
+ allow(subject).to receive(:metadata).and_return(asdasd: "xx")
42
+ expect(subject.input_type).to eq(:text)
43
+ end
21
44
  end
22
45
  end
23
46
 
24
- describe ".register" do
47
+ describe "#description" do
48
+ it "returns type from metadata" do
49
+ allow(subject).to receive(:metadata).and_return(description: "xxasd")
50
+ expect(subject.description).to eq("xxasd")
51
+ end
52
+ end
53
+
54
+ describe "#metadata" do
25
55
  before do
26
- described_class.destroy_all
56
+ subject.var = "xxx"
27
57
  end
28
58
 
29
- it "iterates through given array and assign item default value to default settings by overwriting existing values" do
30
- described_class.defaults.delete("a")
31
- described_class.defaults["b"] = "z"
32
- expect{ described_class.register(values) }.to change{ [described_class.defaults["a"], described_class.defaults["b"]] }
33
- .from([nil, "z"]).to(["x", "y"])
59
+ it "returns metadata values from settings registry fetched by object `var` value" do
60
+ allow(described_class).to receive(:registry).and_return("xxx" => {a: "b"})
61
+ expect(subject.metadata).to eq(a: "b")
62
+ end
63
+
64
+ context "when metadata does not exist" do
65
+ it "returns empty hash" do
66
+ allow(described_class).to receive(:registry).and_return("lasdh" => {a: "b"})
67
+ expect(subject.metadata).to eq({})
68
+ end
34
69
  end
70
+ end
71
+
72
+ describe ".register_scoped" do
73
+ it "returns only register scoped settings" do
74
+ allow(described_class).to receive(:where).with(var: ["a", "b"]).and_return("x")
75
+ allow(described_class).to receive(:registered_keys).and_return(["a", "b"])
35
76
 
36
- it "iterates through given array and assign items to registry by overwriting existing values" do
37
- described_class.registry.delete("a")
38
- described_class.registry["b"] = "xx"
39
- expect{ described_class.register(values) }.to change{ [described_class.registry["a"], described_class.registry["b"]] }
40
- .from([nil, "xx"]).to(values)
77
+ expect(described_class.register_scoped).to eq("x")
41
78
  end
42
79
 
43
- it "iterates through given array and store default value to db if key does not exists in db" do
44
- described_class.register(key: "a", default: "z")
80
+ it "returns instance of `Releaf::Settings::ActiveRecord_Relation`" do
81
+ expect(described_class.register_scoped).to be_instance_of(Releaf::Settings::ActiveRecord_Relation)
82
+ end
83
+ end
45
84
 
46
- expect{ described_class.register(values) }.to change{ described_class.count }.by(1)
47
- expect(described_class.where(var: "a").first.value).to eq("z")
48
- expect(described_class.where(var: "b").first.value).to eq("y")
85
+ describe ".register" do
86
+ it "calls `Releaf::Settings::Register` service with given arguments as array" do
87
+ expect(Releaf::Settings::Register).to receive(:call)
88
+ .with(settings: [{key: "a", type: "b"}, {key: "c", type: "d"}])
89
+ described_class.register({key: "a", type: "b"}, {key: "c", type: "d"})
49
90
  end
91
+ end
50
92
 
51
- context "when database table does not exists" do
52
- it "does not store default values to db" do
53
- allow(described_class).to receive(:table_exists?).and_return(false)
54
- expect{ described_class.register(values) }.to_not change{ described_class.count }
93
+ describe ".supported_types" do
94
+ it "returns list of supported types as array with symbols" do
95
+ described_class.supported_types.each do|type|
96
+ expect(type).to be_instance_of Symbol
55
97
  end
56
98
  end
57
99
  end
@@ -1,6 +1,6 @@
1
1
  require "rails_helper"
2
2
 
3
- describe Releaf::Core::RouteMapper do
3
+ describe Releaf::RouteMapper do
4
4
  after(:all) do
5
5
  # reset dummy app routes
6
6
  Dummy::Application.reload_routes!
@@ -111,7 +111,7 @@ describe Releaf::Core::RouteMapper do
111
111
 
112
112
  it "route to page not found" do
113
113
  expect(get: "/admin/books/1/toolbox")
114
- .to route_to(controller: "releaf/core/errors", action: "page_not_found", path: "books/1/toolbox")
114
+ .to route_to(controller: "releaf/errors", action: "page_not_found", path: "books/1/toolbox")
115
115
  end
116
116
  end
117
117
 
@@ -126,7 +126,7 @@ describe Releaf::Core::RouteMapper do
126
126
 
127
127
  it "route to page not found" do
128
128
  expect(get: "/admin/books/1/toolbox")
129
- .to route_to(controller: "releaf/core/errors", action: "page_not_found", path: "books/1/toolbox")
129
+ .to route_to(controller: "releaf/errors", action: "page_not_found", path: "books/1/toolbox")
130
130
  end
131
131
  end
132
132
 
@@ -141,7 +141,7 @@ describe Releaf::Core::RouteMapper do
141
141
 
142
142
  it "does not mount destroy confirm route" do
143
143
  expect(get: "/admin/books/1/confirm_destroy")
144
- .to route_to(controller: "releaf/core/errors", action: "page_not_found", path: "books/1/confirm_destroy")
144
+ .to route_to(controller: "releaf/errors", action: "page_not_found", path: "books/1/confirm_destroy")
145
145
  end
146
146
  end
147
147
 
@@ -156,7 +156,7 @@ describe Releaf::Core::RouteMapper do
156
156
 
157
157
  it "does not mount destroy confirm route" do
158
158
  expect(get: "/admin/books/1/confirm_destroy")
159
- .to route_to(controller: "releaf/core/errors", action: "page_not_found", path: "books/1/confirm_destroy")
159
+ .to route_to(controller: "releaf/errors", action: "page_not_found", path: "books/1/confirm_destroy")
160
160
  end
161
161
  end
162
162
 
@@ -1,6 +1,6 @@
1
1
  require "rails_helper"
2
2
 
3
- describe Releaf::TestHelpers do
3
+ describe Releaf::Test::Helpers do
4
4
  describe ".stub_settings" do
5
5
  it "stubs given hash by key, value to Releaf::Settings" do
6
6
  stub_settings("some.settings" => "x", "something" => "nothing")
@@ -0,0 +1,14 @@
1
+ require "rails_helper"
2
+
3
+ describe Releaf::Test do
4
+ describe ".reset!" do
5
+ it "calls `Releaf::Content::RoutesReloader` reset" do
6
+ # initial there are two calls
7
+ expect(Releaf::Content::RoutesReloader).to receive(:reset!).twice
8
+ described_class.reset!
9
+
10
+ expect(Releaf::Content::RoutesReloader).to receive(:reset!).once
11
+ described_class.reset!
12
+ end
13
+ end
14
+ end
@@ -1,57 +1,50 @@
1
1
  require "rails_helper"
2
2
 
3
- describe Releaf::Core::ItemOrderer do
4
- let(:list){ ["a", "b", "c", "d", {items: "xx"}, "e", "f", "g"] }
5
- subject{ described_class.new(*list) }
6
-
7
- describe "#initialize" do
8
- it "assigns given arguments to list accessor" do
9
- subject = described_class.new(:a, :b, :c)
10
- expect(subject.list).to eq([:a, :b, :c])
11
- end
12
- end
13
-
14
- describe "#result" do
15
- it "returns list" do
16
- expect(subject.result).to eq(list)
17
- subject.reorder(:a, :last)
18
- expect(subject.result).to eq(["b", "c", "d", {items: "xx"}, "e", "f", "g", "a"])
3
+ describe Array::Reorder do
4
+ subject{ described_class.new(array: ["a", "b", "c", "d", {items: "xx"}, "e", "f", "g"],
5
+ values: "c", options: :first) }
6
+
7
+ describe "#values=" do
8
+ context "when `values` is not array" do
9
+ it "wraps it within array before assigning" do
10
+ expect{ subject.values = :a }.to change{ subject.values }.to([:a])
11
+ end
19
12
  end
20
- end
21
13
 
22
- describe "#to_a" do
23
- it "returns result" do
24
- allow(subject).to receive(:result).and_return(:x)
25
- expect(subject.to_a).to eq(:x)
14
+ context "when `values` is array" do
15
+ it "does not modify it before assigning" do
16
+ expect{ subject.values = [:a] }.to change{ subject.values }.to([:a])
17
+ end
26
18
  end
27
19
  end
28
20
 
29
- describe "#reorder" do
30
- it "returns instance of itself" do
31
- expect(subject.reorder(:a, :last)).to eq(subject)
32
- end
33
-
21
+ describe "#call" do
34
22
  it "deletes given values and insert deleted values in reversed order at reorder index" do
35
23
  deleted_values = {a: "x", b: "y"}
24
+ subject.values = [:a, :b]
25
+ subject.options = :last
36
26
 
37
27
  expect(subject).to receive(:delete).with([:a, :b]).ordered.and_return(deleted_values)
38
28
  expect(subject).to receive(:reorder_index).with(:last).ordered.and_return(1)
39
-
40
- expect{ subject.reorder([:a, :b], :last) }.to change{ subject.list }
29
+ expect{ subject.call }.to change{ subject.array }
41
30
  .to(["a", "x", "y", "b", "c", "d", {items: "xx"}, "e", "f", "g"])
42
31
  end
43
32
 
44
33
  context "when given value is array" do
45
34
  it "process unmodified given value" do
35
+ subject.values = [:a]
36
+ subject.options = :last
46
37
  expect(subject).to receive(:delete).with([:a]).and_call_original
47
- subject.reorder([:a], :last)
38
+ subject.call
48
39
  end
49
40
  end
50
41
 
51
42
  context "when given value is not array" do
52
43
  it "puts value within array" do
44
+ subject.values = [:a]
45
+ subject.options = :last
53
46
  expect(subject).to receive(:delete).with([:a]).and_call_original
54
- subject.reorder(:a, :last)
47
+ subject.call
55
48
  end
56
49
  end
57
50
  end
@@ -64,9 +57,9 @@ describe Releaf::Core::ItemOrderer do
64
57
  end
65
58
 
66
59
  context "when given options is :last" do
67
- it "returns size of current list array" do
60
+ it "returns size of array" do
68
61
  expect(subject.reorder_index(:last)).to eq(8)
69
- subject.list = [:a, :b]
62
+ subject.array = [:a, :b]
70
63
  expect(subject.reorder_index(:last)).to eq(2)
71
64
  end
72
65
  end
@@ -93,19 +86,19 @@ describe Releaf::Core::ItemOrderer do
93
86
  end
94
87
 
95
88
  describe "#index" do
96
- it "returns value index by comparing list and given values casted to strings" do
89
+ it "returns value index by comparing array and given values casted to strings" do
97
90
  expect(subject.index(:c)).to eq(2)
98
91
  expect(subject.index("c")).to eq(2)
99
- subject.list = ["a", :b, :c]
92
+ subject.array = ["a", :b, :c]
100
93
  expect(subject.index("c")).to eq(2)
101
94
  end
102
95
 
103
- context "when list value is Hash" do
96
+ context "when array value is Hash" do
104
97
  it "compares by hash first key casted to string" do
105
98
  expect(subject.index(:items)).to eq(4)
106
99
  expect(subject.index("items")).to eq(4)
107
100
 
108
- subject.list = ["a", {"items" => "x"}]
101
+ subject.array = ["a", {"items" => "x"}]
109
102
  expect(subject.index(:items)).to eq(1)
110
103
  expect(subject.index("items")).to eq(1)
111
104
  end
@@ -114,29 +107,15 @@ describe Releaf::Core::ItemOrderer do
114
107
 
115
108
  describe "#delete" do
116
109
  before do
117
- subject.list = [:a, :b, :c, :d, {items: "x"}]
110
+ subject.array = [:a, :b, :c, :d, {items: "x"}]
118
111
  end
119
112
 
120
- it "deletes given values from list" do
121
- expect{ subject.delete(["a", "b", "items"]) }.to change{ subject.list }.to([:c, :d])
113
+ it "deletes given values from array" do
114
+ expect{ subject.delete(["a", "b", "items"]) }.to change{ subject.array }.to([:c, :d])
122
115
  end
123
116
 
124
117
  it "returns hash with mapped deleted values" do
125
118
  expect(subject.delete(["a", "b", "items"])).to eq("a" => :a, "b" => :b, "items" => {items: "x"})
126
119
  end
127
120
  end
128
-
129
- describe ".reorder" do
130
- it "returns reordered array by given options" do
131
- result = described_class.reorder(list,
132
- [:a, :b] => {after: :c},
133
- d: {before: :c},
134
- g: :first,
135
- [:e, :f] => {before: :g},
136
- c: {after: :items},
137
- items: :first
138
- )
139
- expect(result).to eq([{:items=>"xx"}, "e", "f", "g", "d", "a", "b", "c"])
140
- end
141
- end
142
121
  end