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