eitil 1.2.3 → 1.3.2

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 (165) hide show
  1. checksums.yaml +4 -4
  2. data/eitil_core/README.md +31 -0
  3. data/eitil_core/lib/eitil_core/string/colorize.rb +30 -0
  4. data/eitil_core/lib/eitil_core/string.rb +1 -0
  5. data/eitil_integrate/lib/eitil_integrate/application_exporter/auto_sum/drop_data.rb +3 -1
  6. data/eitil_integrate/lib/eitil_integrate/application_exporter/initialize.rb +2 -0
  7. data/eitil_integrate/lib/eitil_integrate/application_exporter/style_cells.rb +5 -0
  8. data/eitil_support/lib/eitil_support/stacktrace/audit.rb +9 -0
  9. data/eitil_wrapper/lib/eitil_wrapper/decorators/application_decorator.rb +3 -0
  10. data/eitil_wrapper/lib/eitil_wrapper/decorators/controller_decorator.rb +7 -2
  11. data/lib/eitil/version.rb +1 -1
  12. data/spec/dummy_app/Rakefile +6 -0
  13. data/spec/dummy_app/app/assets/config/manifest.js +4 -0
  14. data/spec/dummy_app/app/assets/javascripts/application.js +15 -0
  15. data/spec/dummy_app/app/assets/javascripts/cable.js +13 -0
  16. data/spec/dummy_app/app/assets/stylesheets/addresses.css +4 -0
  17. data/spec/dummy_app/app/assets/stylesheets/application.css +15 -0
  18. data/spec/dummy_app/app/assets/stylesheets/scaffold.css +80 -0
  19. data/spec/dummy_app/app/assets/stylesheets/users.css +4 -0
  20. data/spec/dummy_app/app/channels/application_cable/channel.rb +4 -0
  21. data/spec/dummy_app/app/channels/application_cable/connection.rb +4 -0
  22. data/spec/dummy_app/app/controllers/addresses_controller.rb +58 -0
  23. data/spec/dummy_app/app/controllers/application_controller.rb +5 -0
  24. data/spec/dummy_app/app/controllers/users_controller.rb +93 -0
  25. data/spec/dummy_app/app/decorators/address_decorator.rb +3 -0
  26. data/spec/dummy_app/app/decorators/application_decorator.rb +12 -0
  27. data/spec/dummy_app/app/decorators/user_decorator.rb +19 -0
  28. data/spec/dummy_app/app/helpers/addresses_helper.rb +2 -0
  29. data/spec/dummy_app/app/helpers/application_helper.rb +2 -0
  30. data/spec/dummy_app/app/helpers/users_helper.rb +2 -0
  31. data/spec/dummy_app/app/jobs/application_job.rb +2 -0
  32. data/spec/dummy_app/app/mailers/application_mailer.rb +4 -0
  33. data/spec/dummy_app/app/models/address.rb +5 -0
  34. data/spec/dummy_app/app/models/application_record.rb +8 -0
  35. data/spec/dummy_app/app/models/user.rb +30 -0
  36. data/spec/dummy_app/app/views/addresses/_form.html.erb +17 -0
  37. data/spec/dummy_app/app/views/addresses/edit.html.erb +6 -0
  38. data/spec/dummy_app/app/views/addresses/index.html.erb +25 -0
  39. data/spec/dummy_app/app/views/addresses/new.html.erb +5 -0
  40. data/spec/dummy_app/app/views/addresses/show.html.erb +4 -0
  41. data/spec/dummy_app/app/views/layouts/application.html.erb +15 -0
  42. data/spec/dummy_app/app/views/layouts/mailer.html.erb +13 -0
  43. data/spec/dummy_app/app/views/layouts/mailer.text.erb +1 -0
  44. data/spec/dummy_app/app/views/users/_form.html.erb +17 -0
  45. data/spec/dummy_app/app/views/users/edit.html.erb +6 -0
  46. data/spec/dummy_app/app/views/users/index.html.erb +25 -0
  47. data/spec/dummy_app/app/views/users/new.html.erb +5 -0
  48. data/spec/dummy_app/app/views/users/show.html.erb +4 -0
  49. data/spec/dummy_app/bin/bundle +3 -0
  50. data/spec/dummy_app/bin/rails +4 -0
  51. data/spec/dummy_app/bin/rake +4 -0
  52. data/spec/dummy_app/bin/setup +36 -0
  53. data/spec/dummy_app/bin/update +31 -0
  54. data/spec/dummy_app/bin/yarn +11 -0
  55. data/spec/dummy_app/config/application.rb +16 -0
  56. data/spec/dummy_app/config/boot.rb +5 -0
  57. data/spec/dummy_app/config/cable.yml +10 -0
  58. data/spec/dummy_app/config/database.yml +25 -0
  59. data/spec/dummy_app/config/environment.rb +11 -0
  60. data/spec/dummy_app/config/environments/development.rb +61 -0
  61. data/spec/dummy_app/config/environments/production.rb +94 -0
  62. data/spec/dummy_app/config/environments/test.rb +46 -0
  63. data/spec/dummy_app/config/initializers/application_controller_renderer.rb +8 -0
  64. data/spec/dummy_app/config/initializers/assets.rb +14 -0
  65. data/spec/dummy_app/config/initializers/backtrace_silencers.rb +7 -0
  66. data/spec/dummy_app/config/initializers/content_security_policy.rb +25 -0
  67. data/spec/dummy_app/config/initializers/cookies_serializer.rb +5 -0
  68. data/spec/dummy_app/config/initializers/filter_parameter_logging.rb +4 -0
  69. data/spec/dummy_app/config/initializers/inflections.rb +16 -0
  70. data/spec/dummy_app/config/initializers/mime_types.rb +4 -0
  71. data/spec/dummy_app/config/initializers/wrap_parameters.rb +14 -0
  72. data/spec/dummy_app/config/locales/en.yml +33 -0
  73. data/spec/dummy_app/config/puma.rb +34 -0
  74. data/spec/dummy_app/config/routes.rb +12 -0
  75. data/spec/dummy_app/config/spring.rb +6 -0
  76. data/spec/dummy_app/config/storage.yml +34 -0
  77. data/spec/dummy_app/config.ru +5 -0
  78. data/spec/dummy_app/db/development.sqlite3 +0 -0
  79. data/spec/dummy_app/db/migrate/20210907114344_create_users.rb +12 -0
  80. data/spec/dummy_app/db/migrate/20210907114557_create_addresses.rb +16 -0
  81. data/spec/dummy_app/db/migrate/20210907131339_add_multiple_columns_to_user.rb +8 -0
  82. data/spec/dummy_app/db/schema.rb +41 -0
  83. data/spec/dummy_app/db/test.sqlite3 +0 -0
  84. data/spec/dummy_app/log/decorator_log.log +42 -0
  85. data/spec/dummy_app/log/development.log +24 -0
  86. data/spec/dummy_app/log/test.log +0 -0
  87. data/spec/dummy_app/package.json +5 -0
  88. data/spec/dummy_app/public/404.html +67 -0
  89. data/spec/dummy_app/public/422.html +67 -0
  90. data/spec/dummy_app/public/500.html +66 -0
  91. data/spec/dummy_app/public/apple-touch-icon-precomposed.png +0 -0
  92. data/spec/dummy_app/public/apple-touch-icon.png +0 -0
  93. data/spec/dummy_app/public/favicon.ico +0 -0
  94. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/2j/2jWL-rhQuwDjyPsAqfz1_wB_H15Kk2ODQ2dAu-XZKx8.cache +1 -0
  95. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/6x/6x9nAtWMtOljHkcAvx9LS3_kzIpD7XoM5jqwKXqN8SU.cache +1 -0
  96. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/7f/7fMKshWzk4gJEbG0FTuuuHVOeF6BG9SoIx1X0yGN4XA.cache +1 -0
  97. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/8-/8-O-UfzZVhbu8Cty_FaH4c3xNM-Sm6U90BGLWmTPpSo.cache +1 -0
  98. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/8a/8a5JUS7sZRAe1CpAiN0iy1n_apTjx0H3rkPqGgg_HHs.cache +1 -0
  99. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/9E/9EI_Wtkx262NF6vdNPozRjkOmUgT5wcyMxwPhhok91Y.cache +1 -0
  100. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/Au/AutOawEb2V5QIxVjqKqmRFpvJ3BHEJvFMIphdZydKPY.cache +0 -0
  101. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/BZ/BZULOBoPeioJ3yr_GDNL-cF1brDPreCMd34hrDbHvX4.cache +0 -0
  102. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/CS/CSs23ds7URW15l5Z5w3b3A6CPJS5ODsgzz0mmAHULF0.cache +1 -0
  103. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/Eu/EuFZYEzbxGLRX803DDnrfKQPcMoGo5ITR-9VuBY_35Q.cache +0 -0
  104. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/FL/FLU4EKYSshHlQjgOqP6RDQ8z7GTRbHhl-2IBWvv363s.cache +0 -0
  105. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/FL/FLl0vmABYcwCTORqhZlx9KLVZvAw1Sic_8-Vs5Q7F3I.cache +0 -0
  106. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/KF/KFlEJcPYkMbf3yhDJTUJ73BpWJ8BMzjQUhpLO1CZqUk.cache +1 -0
  107. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/LN/LNUl7yichb1dUbkovvnOVoVxkVQnhwndYgJRJwoXO_k.cache +1 -0
  108. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/LU/LUq0pj8f6-F5P5ZpVil-_pBLCVTYTqa-qRzQOVFkgGg.cache +1 -0
  109. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/N7/N7Q7f6mqtpX5Lxh78v1mILszsC6Oi9hrt9E8bYTCUg8.cache +0 -0
  110. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/OJ/OJX-7cXh407miinHDx7z55OnuYnifbaiCSjus3I2ETg.cache +0 -0
  111. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/P-/P-WGZR_jmbgi7zjScSIzMbnxmPRhR0FG-sUCbx-W0jA.cache +1 -0
  112. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/Qd/QdDsJNHB1T-o6r9B1zTqkZ6nDWfFlq7i5HIqxsMqOR8.cache +1 -0
  113. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/Qv/QvPvnJIjqHAUeoUdS4dpH_JVRh4znkA7ig3VHz7onhE.cache +1 -0
  114. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/RG/RG1PrmlixwaUlG8BV0kcm_3F7OQekxsrLYjBdf403-k.cache +2 -0
  115. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/TE/TEmdPmCEnqBmIu10fP0G66B333eV_jj1DT6NEM9BY5U.cache +1 -0
  116. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/XM/XMyLLsxd032ZvSGR9P5BcOxAXuQxt_wuaTVdjeuYUeU.cache +0 -0
  117. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/Xn/XnnrCKCkM_Fa5bHMwSjQ_NTBPicUoSK3LOeYu-ZmpYo.cache +0 -0
  118. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/cj/cjpKTBCb00-jq6B1KoFGJrP4kvsl8JACc_pqZAORMlM.cache +0 -0
  119. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/ft/ftREOVuSBdqj0d189uIhUmNEThLHS0nXTyt34tl_G9g.cache +0 -0
  120. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/iD/iDTnVSbZnIij5Xm4jkwCyIXAPDn8RwaRe5Ja8YPKibw.cache +0 -0
  121. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/iU/iU5Zc6hQ2jwcmv6lE2L4aWBJHHMnS1vrh0_LHR574kw.cache +1 -0
  122. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/iZ/iZjLEYDTYhysPjIEb36PhNErZ4rRW1BniBfuH7oa1RI.cache +0 -0
  123. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/ke/keL0ZyrZtXqgSINKKBK3qFEd2fvJSrv8qgU78i1-aqY.cache +1 -0
  124. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/n_/n_xYqQYhwEMQknb3jFQnjlxxBE9TzMNHCdJ-bEyZFIw.cache +0 -0
  125. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/nx/nxTv3sKVUQZADJyM3dPaVmUA78MIsMLD_K279yN_GsI.cache +0 -0
  126. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/pa/pas5TN2JG4i2AUMntaZrRkOZ_AZhFBtsfPaUHKOSdnM.cache +0 -0
  127. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/qP/qPmv5snMrDw830S6hSICDcnIy7kVEWoFKXhGKT38lG4.cache +2 -0
  128. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/uQ/uQImR-NTBFCJ7TsnJRrKAG0zhTcX7vpg_MFvTWvWSGQ.cache +1 -0
  129. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/uo/uosY6jh1_W3cVpcoQY0hcgG2zDeTVR169am2REYxMtI.cache +0 -0
  130. data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/yk/ykwP8uOyoTr4wPoEUoyB6Lrx9BG_9mWl6in8AJzBGPw.cache +1 -0
  131. data/spec/dummy_app/tmp/development_secret.txt +1 -0
  132. data/spec/dummy_app/tmp/restart.txt +0 -0
  133. data/spec/eitil_core/argument_helpers/all_args_to_ivars_bang_spec.rb +1 -1
  134. data/spec/eitil_core/argument_helpers/all_args_to_ivars_spec.rb +1 -1
  135. data/spec/eitil_core/argument_helpers/all_kwargs_to_ivars_bang_spec.rb +1 -1
  136. data/spec/eitil_core/argument_helpers/all_kwargs_to_ivars_spec.rb +1 -1
  137. data/spec/eitil_core/argument_helpers/args_to_h_bang_spec.rb +1 -1
  138. data/spec/eitil_core/argument_helpers/args_to_h_spec.rb +1 -1
  139. data/spec/eitil_core/argument_helpers/args_to_ivars_bang_spec.rb +1 -1
  140. data/spec/eitil_core/argument_helpers/args_to_ivars_spec.rb +1 -1
  141. data/spec/eitil_core/array/map_strings_spec.rb +2 -2
  142. data/spec/eitil_core/array/slice_hashes_spec.rb +1 -1
  143. data/spec/eitil_core/datetime/prettify_spec.rb +1 -1
  144. data/spec/eitil_core/errors/raise_error_spec.rb +1 -1
  145. data/spec/eitil_core/float/safe_to_i_spec.rb +1 -1
  146. data/spec/eitil_core/formatters/duck_set_spec.rb +3 -3
  147. data/spec/eitil_core/formatters/sql_spec.rb +3 -3
  148. data/spec/eitil_core/hash/auto_dig_spec.rb +1 -1
  149. data/spec/eitil_core/hash/transform_string_values_spec.rb +2 -2
  150. data/spec/eitil_core/safe_executions/safe_call.rb +1 -1
  151. data/spec/eitil_core/safe_executions/safe_send.rb +1 -1
  152. data/spec/eitil_core/setters/set_ivars_spec.rb +1 -1
  153. data/spec/eitil_core/string/colorize_spec.rb +91 -0
  154. data/spec/eitil_core/string/strip_base64_header_spec.rb +1 -1
  155. data/spec/eitil_core/string/to_filename_spec.rb +1 -1
  156. data/spec/eitil_core/type_checkers/is_num_or_nan_spec.rb +1 -1
  157. data/spec/eitil_integrate/application_exporter/auto_sum_spec.rb +106 -0
  158. data/spec/eitil_integrate/application_exporter/initialize_spec.rb +28 -0
  159. data/spec/eitil_wrapper/callbacks/helper_methods_spec.rb +34 -0
  160. data/spec/eitil_wrapper/decorators/decorators_spec.rb +49 -0
  161. data/spec/eitil_wrapper/jobs/single_method_job_spec.rb +72 -0
  162. data/spec/eitil_wrapper/routes/extended_resources_spec.rb +16 -0
  163. data/spec/eitil_wrapper/scopes/default_scopes_spec.rb +154 -0
  164. data/spec/spec_helper.rb +16 -6
  165. metadata +176 -4
@@ -0,0 +1,2 @@
1
+ [o:Set:
2
+ @hash}I"environment-version:ETTI"environment-paths;TTI"rails-env;TTI"Fprocessors:type=application/css-sourcemap+json&file_type=text/css;TTI"9file-digest://app/assets/stylesheets/application.css;TTI")file-digest://app/assets/stylesheets;TTI"7file-digest://app/assets/stylesheets/addresses.css;TTI"6file-digest://app/assets/stylesheets/scaffold.css;TTI"3file-digest://app/assets/stylesheets/users.css;TTI"0processors:type=text/css&file_type=text/css;TTI">processors:type=text/css&file_type=text/css&pipeline=self;TTF
@@ -0,0 +1 @@
1
+ I"�app/assets/stylesheets/application.css?type=text/css&pipeline=debug&id=b4c333c00d4ab13a26100fa7883330403a8a7c237aaf684358eca9e5951fd735:ET
@@ -0,0 +1 @@
1
+ I"�app/assets/stylesheets/scaffold.css?type=text/css&pipeline=self&id=0861a5d83521c9d79b1e1e3b7754f71c79506a9f8fc51db313ea49f6e532dd47:ET
@@ -0,0 +1 @@
1
+ I"�app/assets/stylesheets/users.css?type=text/css&pipeline=self&id=fb198db8a889a6df6616f881efeb7c3b0ca7e765a9aa24e829c5dd5feec91b2b:ET
@@ -0,0 +1,2 @@
1
+ [o:Set:
2
+ @hash}I"environment-version:ETTI"environment-paths;TTI"rails-env;TTI"0processors:type=text/css&file_type=text/css;TTI"9file-digest://app/assets/stylesheets/application.css;TTI">processors:type=text/css&file_type=text/css&pipeline=self;TTI"7file-digest://app/assets/stylesheets/addresses.css;TTI"6file-digest://app/assets/stylesheets/scaffold.css;TTI"3file-digest://app/assets/stylesheets/users.css;TTI")file-digest://app/assets/stylesheets;TTF
@@ -0,0 +1 @@
1
+ I"}app/assets/stylesheets/application.css?type=text/css&id=d217ce66b1a4622b3ef2741ad099309b83039a2ce19a1de45a64139f03019edb:ET
@@ -0,0 +1 @@
1
+ I"�app/assets/stylesheets/application.css?type=text/css&pipeline=self&id=858631a45ecab97ab73980d5b81c91eee97aba423046b240590d8c48df6d2438:ET
@@ -0,0 +1 @@
1
+ 0c7a349361cab5ae4ea4a472c5b9e69f2835d0d75fdb5ca3f3dac5849f156c8b685873148cb86a911c3e57995c374dc1c0590467acde2be6fb862e8c8c779981
File without changes
@@ -1,5 +1,5 @@
1
1
 
2
- RSpec.describe "Kernel#all_args_to_ivars!" do
2
+ RSpec.describe "EitilCore Kernel#all_args_to_ivars!" do
3
3
 
4
4
  it "should set all positional arguments as instance variables" do
5
5
 
@@ -1,5 +1,5 @@
1
1
 
2
- RSpec.describe "Kernel#all_args_to_ivars" do
2
+ RSpec.describe "EitilCore Kernel#all_args_to_ivars" do
3
3
 
4
4
  it "should set all positional arguments as instance variables" do
5
5
 
@@ -1,5 +1,5 @@
1
1
 
2
- RSpec.describe "Kernel#all_kwargs_to_ivars!" do
2
+ RSpec.describe "EitilCore Kernel#all_kwargs_to_ivars!" do
3
3
 
4
4
  it "should set all hash keys, nested within a positional hash, to instance variables" do
5
5
 
@@ -1,5 +1,5 @@
1
1
 
2
- RSpec.describe "Kernel#all_kwargs_to_ivars" do
2
+ RSpec.describe "EitilCore Kernel#all_kwargs_to_ivars" do
3
3
 
4
4
  it "should set all hash keys, nested within a positional hash, to instance variables" do
5
5
 
@@ -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_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
@@ -0,0 +1,91 @@
1
+ RSpec.describe "EitilCore String colorize methods" do
2
+
3
+ it "should not crash when multiple colors are chained" do
4
+ expect("hello world".black.blue.red.bg_green.bg_brown.underline.bold).to be_truthy
5
+ end
6
+
7
+ it "should color on .black" do
8
+ expect("hello world".black).to be_truthy
9
+ end
10
+
11
+ it "should color on .red" do
12
+ expect("hello world".red).to be_truthy
13
+ end
14
+
15
+ it "should color on .green" do
16
+ expect("hello world".green).to be_truthy
17
+ end
18
+
19
+ it "should color on .brown" do
20
+ expect("hello world".brown).to be_truthy
21
+ end
22
+
23
+ it "should color on .blue" do
24
+ expect("hello world".blue).to be_truthy
25
+ end
26
+
27
+ it "should color on .magenta" do
28
+ expect("hello world".magenta).to be_truthy
29
+ end
30
+
31
+ it "should color on .cyan" do
32
+ expect("hello world".cyan).to be_truthy
33
+ end
34
+
35
+ it "should color on .gray" do
36
+ expect("hello world".gray).to be_truthy
37
+ end
38
+
39
+ it "should color on .bg_black" do
40
+ expect("hello world".bg_black).to be_truthy
41
+ end
42
+
43
+ it "should color on .bg_red" do
44
+ expect("hello world".bg_red).to be_truthy
45
+ end
46
+
47
+ it "should color on .bg_green" do
48
+ expect("hello world".bg_green).to be_truthy
49
+ end
50
+
51
+ it "should color on .bg_brown" do
52
+ expect("hello world".bg_brown).to be_truthy
53
+ end
54
+
55
+ it "should color on .bg_blue" do
56
+ expect("hello world".bg_blue).to be_truthy
57
+ end
58
+
59
+ it "should color on .bg_magenta" do
60
+ expect("hello world".bg_magenta).to be_truthy
61
+ end
62
+
63
+ it "should color on .bg_cyan" do
64
+ expect("hello world".bg_cyan).to be_truthy
65
+ end
66
+
67
+ it "should color on .bg_gray" do
68
+ expect("hello world".bg_gray).to be_truthy
69
+ end
70
+
71
+ it "should color on .bold" do
72
+ expect("hello world".bold).to be_truthy
73
+ end
74
+
75
+ it "should color on .italic" do
76
+ expect("hello world".italic).to be_truthy
77
+ end
78
+
79
+ it "should color on .underline" do
80
+ expect("hello world".underline).to be_truthy
81
+ end
82
+
83
+ it "should color on .blink" do
84
+ expect("hello world".blink).to be_truthy
85
+ end
86
+
87
+ it "should color on .reverse_color" do
88
+ expect("hello world".reverse_color).to be_truthy
89
+ end
90
+
91
+ end
@@ -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