eitil 1.2.4 → 1.3.0

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 (159) hide show
  1. checksums.yaml +4 -4
  2. data/eitil_integrate/lib/eitil_integrate/application_exporter/auto_sum/drop_data.rb +3 -1
  3. data/eitil_integrate/lib/eitil_integrate/application_exporter/initialize.rb +2 -0
  4. data/eitil_wrapper/lib/eitil_wrapper/decorators/application_decorator.rb +3 -0
  5. data/eitil_wrapper/lib/eitil_wrapper/decorators/controller_decorator.rb +7 -2
  6. data/lib/eitil/version.rb +1 -1
  7. data/spec/dummy_app/Rakefile +6 -0
  8. data/spec/dummy_app/app/assets/config/manifest.js +4 -0
  9. data/spec/dummy_app/app/assets/javascripts/application.js +15 -0
  10. data/spec/dummy_app/app/assets/javascripts/cable.js +13 -0
  11. data/spec/dummy_app/app/assets/stylesheets/addresses.css +4 -0
  12. data/spec/dummy_app/app/assets/stylesheets/application.css +15 -0
  13. data/spec/dummy_app/app/assets/stylesheets/scaffold.css +80 -0
  14. data/spec/dummy_app/app/assets/stylesheets/users.css +4 -0
  15. data/spec/dummy_app/app/channels/application_cable/channel.rb +4 -0
  16. data/spec/dummy_app/app/channels/application_cable/connection.rb +4 -0
  17. data/spec/dummy_app/app/controllers/addresses_controller.rb +58 -0
  18. data/spec/dummy_app/app/controllers/application_controller.rb +5 -0
  19. data/spec/dummy_app/app/controllers/users_controller.rb +93 -0
  20. data/spec/dummy_app/app/decorators/address_decorator.rb +3 -0
  21. data/spec/dummy_app/app/decorators/application_decorator.rb +12 -0
  22. data/spec/dummy_app/app/decorators/user_decorator.rb +19 -0
  23. data/spec/dummy_app/app/helpers/addresses_helper.rb +2 -0
  24. data/spec/dummy_app/app/helpers/application_helper.rb +2 -0
  25. data/spec/dummy_app/app/helpers/users_helper.rb +2 -0
  26. data/spec/dummy_app/app/jobs/application_job.rb +2 -0
  27. data/spec/dummy_app/app/mailers/application_mailer.rb +4 -0
  28. data/spec/dummy_app/app/models/address.rb +5 -0
  29. data/spec/dummy_app/app/models/application_record.rb +8 -0
  30. data/spec/dummy_app/app/models/user.rb +30 -0
  31. data/spec/dummy_app/app/views/addresses/_form.html.erb +17 -0
  32. data/spec/dummy_app/app/views/addresses/edit.html.erb +6 -0
  33. data/spec/dummy_app/app/views/addresses/index.html.erb +25 -0
  34. data/spec/dummy_app/app/views/addresses/new.html.erb +5 -0
  35. data/spec/dummy_app/app/views/addresses/show.html.erb +4 -0
  36. data/spec/dummy_app/app/views/layouts/application.html.erb +15 -0
  37. data/spec/dummy_app/app/views/layouts/mailer.html.erb +13 -0
  38. data/spec/dummy_app/app/views/layouts/mailer.text.erb +1 -0
  39. data/spec/dummy_app/app/views/users/_form.html.erb +17 -0
  40. data/spec/dummy_app/app/views/users/edit.html.erb +6 -0
  41. data/spec/dummy_app/app/views/users/index.html.erb +25 -0
  42. data/spec/dummy_app/app/views/users/new.html.erb +5 -0
  43. data/spec/dummy_app/app/views/users/show.html.erb +4 -0
  44. data/spec/dummy_app/bin/bundle +3 -0
  45. data/spec/dummy_app/bin/rails +4 -0
  46. data/spec/dummy_app/bin/rake +4 -0
  47. data/spec/dummy_app/bin/setup +36 -0
  48. data/spec/dummy_app/bin/update +31 -0
  49. data/spec/dummy_app/bin/yarn +11 -0
  50. data/spec/dummy_app/config/application.rb +16 -0
  51. data/spec/dummy_app/config/boot.rb +5 -0
  52. data/spec/dummy_app/config/cable.yml +10 -0
  53. data/spec/dummy_app/config/database.yml +25 -0
  54. data/spec/dummy_app/config/environment.rb +11 -0
  55. data/spec/dummy_app/config/environments/development.rb +61 -0
  56. data/spec/dummy_app/config/environments/production.rb +94 -0
  57. data/spec/dummy_app/config/environments/test.rb +46 -0
  58. data/spec/dummy_app/config/initializers/application_controller_renderer.rb +8 -0
  59. data/spec/dummy_app/config/initializers/assets.rb +14 -0
  60. data/spec/dummy_app/config/initializers/backtrace_silencers.rb +7 -0
  61. data/spec/dummy_app/config/initializers/content_security_policy.rb +25 -0
  62. data/spec/dummy_app/config/initializers/cookies_serializer.rb +5 -0
  63. data/spec/dummy_app/config/initializers/filter_parameter_logging.rb +4 -0
  64. data/spec/dummy_app/config/initializers/inflections.rb +16 -0
  65. data/spec/dummy_app/config/initializers/mime_types.rb +4 -0
  66. data/spec/dummy_app/config/initializers/wrap_parameters.rb +14 -0
  67. data/spec/dummy_app/config/locales/en.yml +33 -0
  68. data/spec/dummy_app/config/puma.rb +34 -0
  69. data/spec/dummy_app/config/routes.rb +12 -0
  70. data/spec/dummy_app/config/spring.rb +6 -0
  71. data/spec/dummy_app/config/storage.yml +34 -0
  72. data/spec/dummy_app/config.ru +5 -0
  73. data/spec/dummy_app/db/development.sqlite3 +0 -0
  74. data/spec/dummy_app/db/migrate/20210907114344_create_users.rb +12 -0
  75. data/spec/dummy_app/db/migrate/20210907114557_create_addresses.rb +16 -0
  76. data/spec/dummy_app/db/migrate/20210907131339_add_multiple_columns_to_user.rb +8 -0
  77. data/spec/dummy_app/db/schema.rb +41 -0
  78. data/spec/dummy_app/db/test.sqlite3 +0 -0
  79. data/spec/dummy_app/log/decorator_log.log +42 -0
  80. data/spec/dummy_app/log/development.log +24 -0
  81. data/spec/dummy_app/log/test.log +0 -0
  82. data/spec/dummy_app/package.json +5 -0
  83. data/spec/dummy_app/public/404.html +67 -0
  84. data/spec/dummy_app/public/422.html +67 -0
  85. data/spec/dummy_app/public/500.html +66 -0
  86. data/spec/dummy_app/public/apple-touch-icon-precomposed.png +0 -0
  87. data/spec/dummy_app/public/apple-touch-icon.png +0 -0
  88. data/spec/dummy_app/public/favicon.ico +0 -0
  89. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/2j/2jWL-rhQuwDjyPsAqfz1_wB_H15Kk2ODQ2dAu-XZKx8.cache +1 -0
  90. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/6x/6x9nAtWMtOljHkcAvx9LS3_kzIpD7XoM5jqwKXqN8SU.cache +1 -0
  91. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/7f/7fMKshWzk4gJEbG0FTuuuHVOeF6BG9SoIx1X0yGN4XA.cache +1 -0
  92. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/8-/8-O-UfzZVhbu8Cty_FaH4c3xNM-Sm6U90BGLWmTPpSo.cache +1 -0
  93. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/8a/8a5JUS7sZRAe1CpAiN0iy1n_apTjx0H3rkPqGgg_HHs.cache +1 -0
  94. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/9E/9EI_Wtkx262NF6vdNPozRjkOmUgT5wcyMxwPhhok91Y.cache +1 -0
  95. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/Au/AutOawEb2V5QIxVjqKqmRFpvJ3BHEJvFMIphdZydKPY.cache +0 -0
  96. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/BZ/BZULOBoPeioJ3yr_GDNL-cF1brDPreCMd34hrDbHvX4.cache +0 -0
  97. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/CS/CSs23ds7URW15l5Z5w3b3A6CPJS5ODsgzz0mmAHULF0.cache +1 -0
  98. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/Eu/EuFZYEzbxGLRX803DDnrfKQPcMoGo5ITR-9VuBY_35Q.cache +0 -0
  99. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/FL/FLU4EKYSshHlQjgOqP6RDQ8z7GTRbHhl-2IBWvv363s.cache +0 -0
  100. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/FL/FLl0vmABYcwCTORqhZlx9KLVZvAw1Sic_8-Vs5Q7F3I.cache +0 -0
  101. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/KF/KFlEJcPYkMbf3yhDJTUJ73BpWJ8BMzjQUhpLO1CZqUk.cache +1 -0
  102. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/LN/LNUl7yichb1dUbkovvnOVoVxkVQnhwndYgJRJwoXO_k.cache +1 -0
  103. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/LU/LUq0pj8f6-F5P5ZpVil-_pBLCVTYTqa-qRzQOVFkgGg.cache +1 -0
  104. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/N7/N7Q7f6mqtpX5Lxh78v1mILszsC6Oi9hrt9E8bYTCUg8.cache +0 -0
  105. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/OJ/OJX-7cXh407miinHDx7z55OnuYnifbaiCSjus3I2ETg.cache +0 -0
  106. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/P-/P-WGZR_jmbgi7zjScSIzMbnxmPRhR0FG-sUCbx-W0jA.cache +1 -0
  107. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/Qd/QdDsJNHB1T-o6r9B1zTqkZ6nDWfFlq7i5HIqxsMqOR8.cache +1 -0
  108. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/Qv/QvPvnJIjqHAUeoUdS4dpH_JVRh4znkA7ig3VHz7onhE.cache +1 -0
  109. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/RG/RG1PrmlixwaUlG8BV0kcm_3F7OQekxsrLYjBdf403-k.cache +2 -0
  110. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/TE/TEmdPmCEnqBmIu10fP0G66B333eV_jj1DT6NEM9BY5U.cache +1 -0
  111. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/XM/XMyLLsxd032ZvSGR9P5BcOxAXuQxt_wuaTVdjeuYUeU.cache +0 -0
  112. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/Xn/XnnrCKCkM_Fa5bHMwSjQ_NTBPicUoSK3LOeYu-ZmpYo.cache +0 -0
  113. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/cj/cjpKTBCb00-jq6B1KoFGJrP4kvsl8JACc_pqZAORMlM.cache +0 -0
  114. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/ft/ftREOVuSBdqj0d189uIhUmNEThLHS0nXTyt34tl_G9g.cache +0 -0
  115. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/iD/iDTnVSbZnIij5Xm4jkwCyIXAPDn8RwaRe5Ja8YPKibw.cache +0 -0
  116. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/iU/iU5Zc6hQ2jwcmv6lE2L4aWBJHHMnS1vrh0_LHR574kw.cache +1 -0
  117. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/iZ/iZjLEYDTYhysPjIEb36PhNErZ4rRW1BniBfuH7oa1RI.cache +0 -0
  118. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/ke/keL0ZyrZtXqgSINKKBK3qFEd2fvJSrv8qgU78i1-aqY.cache +1 -0
  119. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/n_/n_xYqQYhwEMQknb3jFQnjlxxBE9TzMNHCdJ-bEyZFIw.cache +0 -0
  120. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/nx/nxTv3sKVUQZADJyM3dPaVmUA78MIsMLD_K279yN_GsI.cache +0 -0
  121. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/pa/pas5TN2JG4i2AUMntaZrRkOZ_AZhFBtsfPaUHKOSdnM.cache +0 -0
  122. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/qP/qPmv5snMrDw830S6hSICDcnIy7kVEWoFKXhGKT38lG4.cache +2 -0
  123. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/uQ/uQImR-NTBFCJ7TsnJRrKAG0zhTcX7vpg_MFvTWvWSGQ.cache +1 -0
  124. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/uo/uosY6jh1_W3cVpcoQY0hcgG2zDeTVR169am2REYxMtI.cache +0 -0
  125. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/yk/ykwP8uOyoTr4wPoEUoyB6Lrx9BG_9mWl6in8AJzBGPw.cache +1 -0
  126. data/spec/dummy_app/tmp/development_secret.txt +1 -0
  127. data/spec/dummy_app/tmp/restart.txt +0 -0
  128. data/spec/eitil_core/argument_helpers/all_args_to_ivars_bang_spec.rb +1 -1
  129. data/spec/eitil_core/argument_helpers/all_args_to_ivars_spec.rb +1 -1
  130. data/spec/eitil_core/argument_helpers/all_kwargs_to_ivars_bang_spec.rb +1 -1
  131. data/spec/eitil_core/argument_helpers/all_kwargs_to_ivars_spec.rb +1 -1
  132. data/spec/eitil_core/argument_helpers/args_to_h_bang_spec.rb +1 -1
  133. data/spec/eitil_core/argument_helpers/args_to_h_spec.rb +1 -1
  134. data/spec/eitil_core/argument_helpers/args_to_ivars_bang_spec.rb +1 -1
  135. data/spec/eitil_core/argument_helpers/args_to_ivars_spec.rb +1 -1
  136. data/spec/eitil_core/array/map_strings_spec.rb +2 -2
  137. data/spec/eitil_core/array/slice_hashes_spec.rb +1 -1
  138. data/spec/eitil_core/datetime/prettify_spec.rb +1 -1
  139. data/spec/eitil_core/errors/raise_error_spec.rb +1 -1
  140. data/spec/eitil_core/float/safe_to_i_spec.rb +1 -1
  141. data/spec/eitil_core/formatters/duck_set_spec.rb +3 -3
  142. data/spec/eitil_core/formatters/sql_spec.rb +3 -3
  143. data/spec/eitil_core/hash/auto_dig_spec.rb +1 -1
  144. data/spec/eitil_core/hash/transform_string_values_spec.rb +2 -2
  145. data/spec/eitil_core/safe_executions/safe_call.rb +1 -1
  146. data/spec/eitil_core/safe_executions/safe_send.rb +1 -1
  147. data/spec/eitil_core/setters/set_ivars_spec.rb +1 -1
  148. data/spec/eitil_core/string/strip_base64_header_spec.rb +1 -1
  149. data/spec/eitil_core/string/to_filename_spec.rb +1 -1
  150. data/spec/eitil_core/type_checkers/is_num_or_nan_spec.rb +1 -1
  151. data/spec/eitil_integrate/application_exporter/auto_sum_spec.rb +106 -0
  152. data/spec/eitil_integrate/application_exporter/initialize_spec.rb +28 -0
  153. data/spec/eitil_wrapper/callbacks/helper_methods_spec.rb +34 -0
  154. data/spec/eitil_wrapper/decorators/decorators_spec.rb +49 -0
  155. data/spec/eitil_wrapper/jobs/single_method_job_spec.rb +72 -0
  156. data/spec/eitil_wrapper/routes/extended_resources_spec.rb +16 -0
  157. data/spec/eitil_wrapper/scopes/default_scopes_spec.rb +154 -0
  158. data/spec/spec_helper.rb +16 -6
  159. metadata +174 -4
@@ -1,5 +1,5 @@
1
1
 
2
- RSpec.describe "Kernel#args_to_h" do
2
+ RSpec.describe "EitilCore Kernel#args_to_h" do
3
3
 
4
4
  it "should create an hash, with the local variables as key / value pairs" do
5
5
 
@@ -1,5 +1,5 @@
1
1
 
2
- RSpec.describe "Kernel#args_to_ivars!" do
2
+ RSpec.describe "EitilCore Kernel#args_to_ivars!" do
3
3
 
4
4
  it "should set the given positional arguments to instance variables" do
5
5
 
@@ -1,5 +1,5 @@
1
1
 
2
- RSpec.describe "Kernel#args_to_ivars" do
2
+ RSpec.describe "EitilCore Kernel#args_to_ivars" do
3
3
 
4
4
  it "should set the given positional arguments to instance variables" do
5
5
 
@@ -1,5 +1,5 @@
1
1
 
2
- RSpec.describe "Array#map_strings" do
2
+ RSpec.describe "EitilCore Array#map_strings" do
3
3
 
4
4
  it "should transforms all strings in infinite recursion" do
5
5
 
@@ -11,7 +11,7 @@ RSpec.describe "Array#map_strings" do
11
11
  end
12
12
  end
13
13
 
14
- RSpec.describe "Array#map_strings!" do
14
+ RSpec.describe "EitilCore Array#map_strings!" do
15
15
 
16
16
  it "should transforms all strings in infinite recursion" do
17
17
 
@@ -1,5 +1,5 @@
1
1
 
2
- RSpec.describe "Array#slice_hashes" do
2
+ RSpec.describe "EitilCore Array#slice_hashes" do
3
3
 
4
4
  it "should slice each hash in an array of hashes with the given keys" do
5
5
 
@@ -1,5 +1,5 @@
1
1
 
2
- RSpec.describe "DateTime#prettify" do
2
+ RSpec.describe "EitilCore DateTime#prettify" do
3
3
 
4
4
  it "should represent a DateTime instance in the '%Y-%m-%d.%H:%M:%S' format" do
5
5
 
@@ -1,5 +1,5 @@
1
1
 
2
- RSpec.describe "Kernel#raise_error" do
2
+ RSpec.describe "EitilCore Kernel#raise_error" do
3
3
 
4
4
  # Call specs directly on Kernel, which you would usually do implicit
5
5
  # instead of explicit, in order to escape the RSpec namespace, which has
@@ -1,5 +1,5 @@
1
1
 
2
- RSpec.describe "Float#safe_to_i" do
2
+ RSpec.describe "EitilCore Float#safe_to_i" do
3
3
 
4
4
  it "should convert a float to an integer, if the float is rounded (e.g. 7.0)" do
5
5
 
@@ -1,5 +1,5 @@
1
1
 
2
- RSpec.describe "Date.duck_set(object)" do
2
+ RSpec.describe "EitilCore Date.duck_set(object)" do
3
3
 
4
4
  let(:date) { Date.duck_set(@object) }
5
5
 
@@ -45,7 +45,7 @@ RSpec.describe "Date.duck_set(object)" do
45
45
  end
46
46
 
47
47
 
48
- RSpec.describe "DateTime.duck_set(object)" do
48
+ RSpec.describe "EitilCore DateTime.duck_set(object)" do
49
49
 
50
50
  let(:datetime) { DateTime.duck_set(@object) }
51
51
 
@@ -92,7 +92,7 @@ end
92
92
 
93
93
 
94
94
 
95
- RSpec.describe "Time.duck_set(object)" do
95
+ RSpec.describe "EitilCore Time.duck_set(object)" do
96
96
 
97
97
  let(:time) { Time.duck_set(@object) }
98
98
 
@@ -1,5 +1,5 @@
1
1
 
2
- RSpec.describe "Date#strfsql(type)" do
2
+ RSpec.describe "EitilCore Date#strfsql(type)" do
3
3
 
4
4
  let(:date) { Date.parse('01-01-2020').strfsql(@type) }
5
5
 
@@ -21,7 +21,7 @@ RSpec.describe "Date#strfsql(type)" do
21
21
  end
22
22
 
23
23
 
24
- RSpec.describe "DateTime#strfsql(type)" do
24
+ RSpec.describe "EitilCore DateTime#strfsql(type)" do
25
25
 
26
26
  let(:datetime) { DateTime.parse('01-01-2020').strfsql(@type) }
27
27
 
@@ -56,7 +56,7 @@ end
56
56
 
57
57
 
58
58
 
59
- RSpec.describe "Time#strfsql(type)" do
59
+ RSpec.describe "EitilCore Time#strfsql(type)" do
60
60
 
61
61
  let(:time) { Time.parse('01-01-2020 20:00:00 +0200').strfsql(@type) }
62
62
 
@@ -1,5 +1,5 @@
1
1
 
2
- RSpec.describe "Hash#auto_dig" do
2
+ RSpec.describe "EitilCore Hash#auto_dig" do
3
3
 
4
4
  it "should recursively find the value for the given hash key" do
5
5
  hash = {a: 1, b: {c: 2, d: {e: 3}}}
@@ -1,5 +1,5 @@
1
1
 
2
- RSpec.describe "Hash#transform_string_values" do
2
+ RSpec.describe "EitilCore Hash#transform_string_values" do
3
3
 
4
4
  it "should transforms all strings in infinite recursion" do
5
5
  hash = {a: "hey", b: {c: "hi", d: ["ho"]}}
@@ -12,7 +12,7 @@ RSpec.describe "Hash#transform_string_values" do
12
12
  end
13
13
 
14
14
 
15
- RSpec.describe "Hash#transform_string_values!" do
15
+ RSpec.describe "EitilCore Hash#transform_string_values!" do
16
16
 
17
17
  it "should transforms all strings in infinite recursion" do
18
18
  hash = {a: "hey", b: {c: "hi", d: ["ho"]}}
@@ -3,7 +3,7 @@
3
3
  # available to the tests, therefore load the file manually.
4
4
  load (Eitil::Root + "/eitil_core/lib/eitil_core/safe_executions/safe_call.rb")
5
5
 
6
- RSpec.describe "Object#safe_call" do
6
+ RSpec.describe "EitilCore Object#safe_call" do
7
7
 
8
8
  it "should return the block's yield value, if no error is raised" do
9
9
  result = Object.new.safe_call { 1 + 1 }
@@ -3,7 +3,7 @@
3
3
  # available to the tests, therefore load the file manually.
4
4
  load (Eitil::Root + "/eitil_core/lib/eitil_core/safe_executions/safe_send.rb")
5
5
 
6
- RSpec.describe "Object#safe_send" do
6
+ RSpec.describe "EitilCore Object#safe_send" do
7
7
 
8
8
  let(:string) { "Hiya, Cowboy!" }
9
9
 
@@ -1,5 +1,5 @@
1
1
 
2
- RSpec.describe "Object#set_ivars" do
2
+ RSpec.describe "EitilCore Object#set_ivars" do
3
3
 
4
4
  def set_ivar_one
5
5
  :one
@@ -1,5 +1,5 @@
1
1
 
2
- RSpec.describe "String#strip_base64_header" do
2
+ RSpec.describe "EitilCore String#strip_base64_header" do
3
3
 
4
4
  let(:regex) { EitilStore::Regex::LeadingBase64Data }
5
5
  let(:b64_string) { "data:image/png;base64,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" }
@@ -1,5 +1,5 @@
1
1
 
2
- RSpec.describe "String#to_filename(substitute='_')" do
2
+ RSpec.describe "EitilCore String#to_filename(substitute='_')" do
3
3
 
4
4
  it "should substitute all spaces with, by default, lowdashes" do
5
5
  string = "this is a filename"
@@ -1,5 +1,5 @@
1
1
 
2
- RSpec.describe "#is_num? and #is_nan?" do
2
+ RSpec.describe "EitilCore #is_num? and #is_nan?" do
3
3
 
4
4
  context "for String" do
5
5
 
@@ -0,0 +1,106 @@
1
+
2
+ require "eitil_integrate/application_exporter"
3
+
4
+ RSpec.describe "EitilIntegrate::RubyXL::AutoSum" do
5
+
6
+ let(:input) do
7
+ {
8
+ 0 =>["Cafe eitje, geëxporteerd op maandag 6 sept. 2021",nil,"01/06/2021 – 30/06/2021","",nil,"Abel van Hoek","Astrid Spanjers","Billy Wilson","Hannah Broek","Joris Rood (12345678)","Lara Welting ()","Mascha de Graaf","Merel Verkaart","Sara Brouwer","Tammy Warren","Walter Watson"],
9
+ 1 =>[nil, nil, nil, "Gewerkte uren", nil, "92,75", "0,0", "94,75", "0,0", "0,0", "0,0", "0,0", "38,75", "0,0", "0,0", "0,0"],
10
+ 2 =>[nil, nil, nil, "Verlof opgenomen", nil, "0,0", "0,0", "0,0", "0,0", "0,0", "0,0", "0,0", "0,0", "0,0", "0,0", "0,0"],
11
+ 3 =>[nil, nil, nil, "Ziekte-uren", nil, "0,0", "0,0", "0,0", "0,0", "0,0", "0,0", "0,0", "0,0", "0,0", "0,0", "0,0"],
12
+ 4 =>[nil, nil, nil, "Bijzonder verlof", nil, "0,0", "0,0", "0,0", "0,0", "0,0", "0,0", "0,0", "0,0", "0,0", "0,0", "0,0"],
13
+ 5 =>[nil, nil, nil, "Totaal maaltijden", nil, "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"],
14
+ 6 =>[nil, nil, nil, "Toeslag: Alle dagen (18:00-23:59)", nil, "0,0", "0,0", "0,0", "0,0", "0,0", "0,0", "0,0", "0,0", "0,0", "0,0", "0,0"],
15
+ 7 =>[nil, nil, nil, "Toeslag: Shiftleader toeslag", nil, "0,0", "0,0", "0,0", "0,0", "0,0", "0,0", "0,0", "0,0", "0,0", "0,0", "0,0"],
16
+ 8 =>[nil, nil, nil, "Toeslag: Feestdagen", nil, "0,0", "0,0", "0,0", "0,0", "0,0", "0,0", "0,0", "0,0", "0,0", "0,0", "0,0"],
17
+ 9 =>[nil, nil, nil, "Toeslag: Feestdagen", nil, "0,0", "0,0", "0,0", "0,0", "0,0", "0,0", "0,0", "0,0", "0,0", "0,0", "0,0"],
18
+ 10=>[nil, nil, nil, "01/06/2021", nil, "", "", "", "", "", "", "", "7,75", "", "", ""],
19
+ 11=>[nil, nil, nil, "02/06/2021", nil, "7,75", "", "", "", "", "", "", "", "", "", ""],
20
+ 12=>[nil, nil, nil, "03/06/2021", nil, "", "", "7,75", "", "", "", "", "", "", "", ""],
21
+ 13=>[nil, nil, nil, "04/06/2021", nil, "7,75", "", "", "", "", "", "", "", "", "", ""],
22
+ 14=>[nil, nil, nil, "05/06/2021", nil, "7,75", "", "", "", "", "", "", "", "", "", ""],
23
+ 15=>[nil, nil, nil, "06/06/2021", nil, "", "", "7,75", "", "", "", "", "", "", "", ""],
24
+ 16=>[nil, nil, nil, "07/06/2021", nil, "", "", "7,75", "", "", "", "", "", "", "", ""],
25
+ 17=>[nil, nil, nil, "08/06/2021", nil, "", "", "", "", "", "", "", "7,75", "", "", ""],
26
+ 18=>[nil, nil, nil, "09/06/2021", nil, "7,75", "", "", "", "", "", "", "", "", "", ""],
27
+ 19=>[nil, nil, nil, "10/06/2021", nil, "", "", "7,75", "", "", "", "", "", "", "", ""],
28
+ 20=>[nil, nil, nil, "11/06/2021", nil, "7,75", "", "", "", "", "", "", "", "", "", ""],
29
+ 21=>[nil, nil, nil, "12/06/2021", nil, "7,75", "", "", "", "", "", "", "", "", "", ""],
30
+ 22=>[nil, nil, nil, "13/06/2021", nil, "", "", "8,5", "", "", "", "", "", "", "", ""],
31
+ 23=>[nil, nil, nil, "14/06/2021", nil, "", "", "7,75", "", "", "", "", "", "", "", ""],
32
+ 24=>[nil, nil, nil, "15/06/2021", nil, "", "", "", "", "", "", "", "7,75", "", "", ""],
33
+ 25=>[nil, nil, nil, "16/06/2021", nil, "7,5", "", "", "", "", "", "", "", "", "", ""],
34
+ 26=>[nil, nil, nil, "17/06/2021", nil, "", "", "7,75", "", "", "", "", "", "", "", ""],
35
+ 27=>[nil, nil, nil, "18/06/2021", nil, "7,75", "", "", "", "", "", "", "", "", "", ""],
36
+ 28=>[nil, nil, nil, "19/06/2021", nil, "7,75", "", "", "", "", "", "", "", "", "", ""],
37
+ 29=>[nil, nil, nil, "20/06/2021", nil, "10:00", "10:00", "00:15", "00:15", "7", ""], # sum test
38
+ 30=>[nil, nil, nil, "21/06/2021", nil, "10:00", "10:00", "00:15", "00:15", "", "", ""], # sum test
39
+ 31=>[nil, nil, nil, "22/06/2021", nil, "7,0", "", "", "", "", "", "", "", "", "", ""], # rounding test
40
+ 32=>[nil, nil, nil, "23/06/2021", nil, "7,1", "", "", "", "", "", "", "", "", "", ""], # rounding test
41
+ 33=>[nil, nil, nil, "24/06/2021", nil, 7, 7.5, "7,5", "7", "7.5", "", "", "", "", ""], # sum test
42
+ 34=>[nil, nil, nil, "25/06/2021", nil, 7, 7, 7, "", "", "", "", "", "", "", ""], # sum test
43
+ 35=>[nil, nil, nil, "26/06/2021", nil, 7.5, 7.5, 7.5, "", "", "", "", "", "", "", ""], # sum test
44
+ 36=>[nil, nil, nil, "27/06/2021", nil, "7", "7", "7", "", "", "", "", "", "", "", ""], # sum test
45
+ 37=>[nil, nil, nil, "28/06/2021", nil, "7.5", "7.5", "7.5", "", "", "", "", "", "", ""], # sum test
46
+ 38=>[nil, nil, nil, "29/06/2021", nil, "7,5", "7,5", "7,5", "", "", "", "", "", ""], # sum test
47
+ 39=>[nil, nil, nil, "30/06/2021", nil, "", "", "", "", "", "", "", "", "", "", ""] # nil test
48
+ }
49
+ end
50
+
51
+ let(:autosum) { EitilIntegrate::RubyXL::AutoSum.perform(input) }
52
+
53
+ it "should reduce all columns (represented as arrays) into a single string or nil" do
54
+ expect(autosum).to be_a Hash
55
+ expect(autosum.values).to be_a Array
56
+ expect(autosum.values.all? { |v| v.is_a?(String) || v.is_a?(NilClass) }).to be_truthy
57
+ end
58
+
59
+ it "should sum integers correctly" do
60
+ expect(autosum[34]).to eq "21"
61
+ end
62
+
63
+ it "should sum floats correctly" do
64
+ expect(autosum[35]).to eq "22.5"
65
+ end
66
+
67
+ it "should sum stringified integers (e.g. '7') correctly" do
68
+ expect(autosum[36]).to eq "21"
69
+ end
70
+
71
+ it "should sum stringified floats (e.g. '7.5') correctly" do
72
+ expect(autosum[37]).to eq "22.5"
73
+ end
74
+
75
+ it "should sum stringified comma floats (e.g. '7,5') correctly" do
76
+ expect(autosum[38]).to eq "22.5"
77
+ end
78
+
79
+ it "should sum stringified times (e.g. '10:00') correctly" do
80
+ expect(autosum[30]).to eq "20:30"
81
+ end
82
+
83
+ it "should sum a combination of all different numeric formats correctly" do
84
+ expect(autosum[33]).to eq "36.5"
85
+ end
86
+
87
+ it "should not sum a combination of a numeric format and time format,
88
+ but return nil instead" do
89
+ expect(autosum[29]).to be_nil
90
+ end
91
+
92
+ it "should convert summed floats into integers,
93
+ if the number is whole and therefore could be represented as integer" do
94
+ expect(autosum[31]).to eq "7"
95
+ end
96
+
97
+ it "should not convert summed floats into integers,
98
+ if the number is not whole and therefore could not be represented as integer" do
99
+ expect(autosum[32]).to eq "7.1"
100
+ end
101
+
102
+ it "should replace the first column's values with a title called 'Totaal'" do
103
+ expect(autosum[0]).to eq 'Totaal'
104
+ end
105
+
106
+ end
@@ -0,0 +1,28 @@
1
+
2
+ RSpec.describe "EitilIntegrate::RubyXL::ApplicationExporter.new" do
3
+
4
+ let(:exporter) do
5
+ EitilIntegrate::RubyXL::ApplicationExporter.new(start_date: '01-01-2020', end_date: '01-03-2020')
6
+ end
7
+
8
+ it "should convert the string arguments :start_date and :end_date into Date objects" do
9
+ expect(exporter.start_date).to be_a Date
10
+ expect(exporter.end_date).to be_a Date
11
+ end
12
+
13
+ it "should create a :date_range accessor" do
14
+ expect(exporter.date_range).to be_a Range
15
+ expect(exporter.date_range.first).to be_a Date
16
+ end
17
+
18
+ it "should create a RubyXL::Workbook and RubyXL::Worksheet" do
19
+ expect(exporter.book).to be_a RubyXL::Workbook
20
+ expect(exporter.sheet).to be_a RubyXL::Worksheet
21
+ end
22
+
23
+ it "should set the X and Y coordinates to 0" do
24
+ expect(exporter.x).to eq 0
25
+ expect(exporter.y).to eq 0
26
+ end
27
+
28
+ end
@@ -0,0 +1,34 @@
1
+
2
+ RSpec.describe "EitilWrapper::Callbacks" do
3
+
4
+ let(:callbacks) { User.instance_methods(false) }
5
+
6
+ context "for columns of datatype: boolean" do
7
+
8
+ it "should create the callback .{column_name}_became_true" do
9
+ expect(callbacks).to include(:confirmed_became_true)
10
+ end
11
+
12
+ it "should create the callback .{column_name}_becomes_true" do
13
+ expect(callbacks).to include(:confirmed_becomes_true)
14
+ end
15
+
16
+ it "should create the callback .{column_name}_to_true (works for both become and became)" do
17
+ expect(callbacks).to include(:confirmed_to_true)
18
+ end
19
+
20
+ it "should create the callback .{column_name}_became_false" do
21
+ expect(callbacks).to include(:confirmed_became_false)
22
+ end
23
+
24
+ it "should create the callback .{column_name}_becomes_false" do
25
+ expect(callbacks).to include(:confirmed_becomes_false)
26
+ end
27
+
28
+ it "should create the callback .{column_name}_to_false (works for both become and became)" do
29
+ expect(callbacks).to include(:confirmed_to_false)
30
+ end
31
+
32
+ end
33
+
34
+ end
@@ -0,0 +1,49 @@
1
+
2
+ RSpec.describe "EitilWrapper::Decorators" do
3
+
4
+ include Rack::Test::Methods
5
+
6
+ let(:user) { User.create(first_name: 'slim', last_name: 'shady') }
7
+
8
+ def body(endpoint)
9
+ @body ||= JSON.parse(get("/users/#{user.id}/#{endpoint}").body)
10
+ end
11
+
12
+ it "should respond to a request" do
13
+ response = get "/users/#{user.id}/decorator_a"
14
+ expect(response).to be_a Rack::MockResponse
15
+ end
16
+
17
+ it "should, by default, return all of a records' columns" do
18
+ response_keys = body(:decorator_a).keys.map(&:to_sym)
19
+ table_columns = [:id, :created_at, :updated_at, :first_name, :last_name, :email, :birthday, :phone, :confirmed, :last_sign_in, :age, :wage]
20
+ expect(table_columns.all? { |column| response_keys.include?(column) }).to be_truthy
21
+ end
22
+
23
+ it "should, if a specific decorator method is passed, return that method's value" do
24
+ response_keys = body(:decorator_b).keys.map(&:to_sym)
25
+ decorator_keys = [:first_name, :last_name]
26
+ expect(response_keys).to eq decorator_keys
27
+ end
28
+
29
+ it "should, if no decorator method is passed, but param['isMobile'] is present, return the :app method's value" do
30
+ response = post "/users/#{user.id}/decorator_c", { "isMobile" => true }
31
+ response_keys = JSON.parse(response.body).keys.map(&:to_sym)
32
+ decorator_keys = [:phone, :email]
33
+ expect(response_keys).to eq decorator_keys
34
+ end
35
+
36
+ it "should, if no decorator method is passed, but param['isWeb'] is present, return the :web method's value" do
37
+ response = post "/users/#{user.id}/decorator_c", { "isWeb" => true }
38
+ response_keys = JSON.parse(response.body).keys.map(&:to_sym)
39
+ decorator_keys = [:age, :wage]
40
+ expect(response_keys).to eq decorator_keys
41
+ end
42
+
43
+ it "should, if a decorator class is passed, return the value of that class' method" do
44
+ response_keys = body(:decorator_d).keys.map(&:to_sym)
45
+ decorator_keys = [:created_at, :updated_at]
46
+ expect(response_keys).to eq decorator_keys
47
+ end
48
+
49
+ end
@@ -0,0 +1,72 @@
1
+
2
+ RSpec.describe "EitilWrapper::Jobs" do
3
+
4
+ let(:user) { User.create(first_name: "Donald", last_name: "Duck") }
5
+
6
+ it "should create a new method, if the new_job (perform_later) is used for a singleton method" do
7
+ expect(User.methods).to include(:this_is_a_singleton_method_job)
8
+ end
9
+
10
+ it "should create a new method, if the new_job (perform_later) is used for an instance method" do
11
+ expect(User.instance_methods).to include(:this_is_an_instance_method_job)
12
+ end
13
+
14
+ it "should create a new method, if the new_job_now (perform_now) is used for a singleton method" do
15
+ expect(User.methods).to include(:this_is_a_singleton_method_job_now)
16
+ end
17
+
18
+ it "should create a new method, if the new_job_now (perform_now) is used for an instance method" do
19
+ expect(User.instance_methods).to include(:this_is_an_instance_method_job_now)
20
+ end
21
+
22
+ it "should allow us to perform the created singleton perform_later method" do
23
+ begin
24
+ User.this_is_a_singleton_method_job
25
+ status = 'passed'
26
+ rescue
27
+ status = 'failed'
28
+ end
29
+ expect(status).to eq 'passed'
30
+ end
31
+
32
+ it "should allow us to perform the created instance perform_later method" do
33
+ begin
34
+ user.this_is_an_instance_method_job
35
+ status = 'passed'
36
+ rescue
37
+ status = 'failed'
38
+ end
39
+ expect(status).to eq 'passed'
40
+ end
41
+
42
+ it "should allow us to perform the created singleton perform_now method" do
43
+ begin
44
+ User.this_is_a_singleton_method_job_now
45
+ status = 'passed'
46
+ rescue
47
+ status = 'failed'
48
+ end
49
+ expect(status).to eq 'passed'
50
+ end
51
+
52
+ it "should allow us to perform the created instance perform_now method" do
53
+ begin
54
+ user.this_is_an_instance_method_job_now
55
+ status = 'passed'
56
+ rescue
57
+ status = 'failed'
58
+ end
59
+ expect(status).to eq 'passed'
60
+ end
61
+
62
+ it "should accept positional arguments" do
63
+ return_value = User.this_is_a_singleton_method_job_now("positional_argument")
64
+ expect(return_value).to eq "positional_argument"
65
+ end
66
+
67
+ it "should accept keyword arguments " do
68
+ return_value = User.this_is_a_singleton_method_job_now(keyword_value: "keyword_argument")
69
+ expect(return_value).to eq "keyword_argument"
70
+ end
71
+
72
+ end