eitil 1.2.4 → 1.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/eitil_core/README.md +31 -0
- data/eitil_core/lib/eitil_core/string/colorize.rb +30 -0
- data/eitil_core/lib/eitil_core/string.rb +1 -0
- data/eitil_integrate/lib/eitil_integrate/application_exporter/auto_sum/drop_data.rb +3 -1
- data/eitil_integrate/lib/eitil_integrate/application_exporter/initialize.rb +2 -0
- data/eitil_integrate/lib/eitil_integrate/application_exporter/style_cells.rb +5 -0
- data/eitil_wrapper/lib/eitil_wrapper/callbacks/helper_methods.rb +8 -1
- data/eitil_wrapper/lib/eitil_wrapper/decorators/application_decorator.rb +3 -0
- data/eitil_wrapper/lib/eitil_wrapper/decorators/controller_decorator.rb +7 -2
- data/eitil_wrapper/lib/eitil_wrapper/scopes/default_scopes.rb +8 -1
- data/lib/eitil/version.rb +1 -1
- data/spec/dummy_app/Rakefile +6 -0
- data/spec/dummy_app/app/assets/config/manifest.js +4 -0
- data/spec/dummy_app/app/assets/javascripts/application.js +15 -0
- data/spec/dummy_app/app/assets/javascripts/cable.js +13 -0
- data/spec/dummy_app/app/assets/stylesheets/addresses.css +4 -0
- data/spec/dummy_app/app/assets/stylesheets/application.css +15 -0
- data/spec/dummy_app/app/assets/stylesheets/scaffold.css +80 -0
- data/spec/dummy_app/app/assets/stylesheets/users.css +4 -0
- data/spec/dummy_app/app/channels/application_cable/channel.rb +4 -0
- data/spec/dummy_app/app/channels/application_cable/connection.rb +4 -0
- data/spec/dummy_app/app/controllers/addresses_controller.rb +58 -0
- data/spec/dummy_app/app/controllers/application_controller.rb +5 -0
- data/spec/dummy_app/app/controllers/users_controller.rb +93 -0
- data/spec/dummy_app/app/decorators/address_decorator.rb +3 -0
- data/spec/dummy_app/app/decorators/application_decorator.rb +12 -0
- data/spec/dummy_app/app/decorators/user_decorator.rb +19 -0
- data/spec/dummy_app/app/helpers/addresses_helper.rb +2 -0
- data/spec/dummy_app/app/helpers/application_helper.rb +2 -0
- data/spec/dummy_app/app/helpers/users_helper.rb +2 -0
- data/spec/dummy_app/app/jobs/application_job.rb +2 -0
- data/spec/dummy_app/app/mailers/application_mailer.rb +4 -0
- data/spec/dummy_app/app/models/address.rb +5 -0
- data/spec/dummy_app/app/models/application_record.rb +8 -0
- data/spec/dummy_app/app/models/user.rb +30 -0
- data/spec/dummy_app/app/views/addresses/_form.html.erb +17 -0
- data/spec/dummy_app/app/views/addresses/edit.html.erb +6 -0
- data/spec/dummy_app/app/views/addresses/index.html.erb +25 -0
- data/spec/dummy_app/app/views/addresses/new.html.erb +5 -0
- data/spec/dummy_app/app/views/addresses/show.html.erb +4 -0
- data/spec/dummy_app/app/views/layouts/application.html.erb +15 -0
- data/spec/dummy_app/app/views/layouts/mailer.html.erb +13 -0
- data/spec/dummy_app/app/views/layouts/mailer.text.erb +1 -0
- data/spec/dummy_app/app/views/users/_form.html.erb +17 -0
- data/spec/dummy_app/app/views/users/edit.html.erb +6 -0
- data/spec/dummy_app/app/views/users/index.html.erb +25 -0
- data/spec/dummy_app/app/views/users/new.html.erb +5 -0
- data/spec/dummy_app/app/views/users/show.html.erb +4 -0
- data/spec/dummy_app/bin/bundle +3 -0
- data/spec/dummy_app/bin/rails +4 -0
- data/spec/dummy_app/bin/rake +4 -0
- data/spec/dummy_app/bin/setup +36 -0
- data/spec/dummy_app/bin/update +31 -0
- data/spec/dummy_app/bin/yarn +11 -0
- data/spec/dummy_app/config/application.rb +16 -0
- data/spec/dummy_app/config/boot.rb +5 -0
- data/spec/dummy_app/config/cable.yml +10 -0
- data/spec/dummy_app/config/database.yml +25 -0
- data/spec/dummy_app/config/environment.rb +11 -0
- data/spec/dummy_app/config/environments/development.rb +61 -0
- data/spec/dummy_app/config/environments/production.rb +94 -0
- data/spec/dummy_app/config/environments/test.rb +46 -0
- data/spec/dummy_app/config/initializers/application_controller_renderer.rb +8 -0
- data/spec/dummy_app/config/initializers/assets.rb +14 -0
- data/spec/dummy_app/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy_app/config/initializers/content_security_policy.rb +25 -0
- data/spec/dummy_app/config/initializers/cookies_serializer.rb +5 -0
- data/spec/dummy_app/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy_app/config/initializers/inflections.rb +16 -0
- data/spec/dummy_app/config/initializers/mime_types.rb +4 -0
- data/spec/dummy_app/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy_app/config/locales/en.yml +33 -0
- data/spec/dummy_app/config/puma.rb +34 -0
- data/spec/dummy_app/config/routes.rb +12 -0
- data/spec/dummy_app/config/spring.rb +6 -0
- data/spec/dummy_app/config/storage.yml +34 -0
- data/spec/dummy_app/config.ru +5 -0
- data/spec/dummy_app/db/development.sqlite3 +0 -0
- data/spec/dummy_app/db/migrate/20210907114344_create_users.rb +12 -0
- data/spec/dummy_app/db/migrate/20210907114557_create_addresses.rb +16 -0
- data/spec/dummy_app/db/migrate/20210907131339_add_multiple_columns_to_user.rb +8 -0
- data/spec/dummy_app/db/schema.rb +41 -0
- data/spec/dummy_app/db/test.sqlite3 +0 -0
- data/spec/dummy_app/log/decorator_log.log +42 -0
- data/spec/dummy_app/log/development.log +24 -0
- data/spec/dummy_app/log/test.log +0 -0
- data/spec/dummy_app/package.json +5 -0
- data/spec/dummy_app/public/404.html +67 -0
- data/spec/dummy_app/public/422.html +67 -0
- data/spec/dummy_app/public/500.html +66 -0
- data/spec/dummy_app/public/apple-touch-icon-precomposed.png +0 -0
- data/spec/dummy_app/public/apple-touch-icon.png +0 -0
- data/spec/dummy_app/public/favicon.ico +0 -0
- data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/2j/2jWL-rhQuwDjyPsAqfz1_wB_H15Kk2ODQ2dAu-XZKx8.cache +1 -0
- data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/6x/6x9nAtWMtOljHkcAvx9LS3_kzIpD7XoM5jqwKXqN8SU.cache +1 -0
- data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/7f/7fMKshWzk4gJEbG0FTuuuHVOeF6BG9SoIx1X0yGN4XA.cache +1 -0
- data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/8-/8-O-UfzZVhbu8Cty_FaH4c3xNM-Sm6U90BGLWmTPpSo.cache +1 -0
- data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/8a/8a5JUS7sZRAe1CpAiN0iy1n_apTjx0H3rkPqGgg_HHs.cache +1 -0
- data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/9E/9EI_Wtkx262NF6vdNPozRjkOmUgT5wcyMxwPhhok91Y.cache +1 -0
- data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/Au/AutOawEb2V5QIxVjqKqmRFpvJ3BHEJvFMIphdZydKPY.cache +0 -0
- data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/BZ/BZULOBoPeioJ3yr_GDNL-cF1brDPreCMd34hrDbHvX4.cache +0 -0
- data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/CS/CSs23ds7URW15l5Z5w3b3A6CPJS5ODsgzz0mmAHULF0.cache +1 -0
- data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/Eu/EuFZYEzbxGLRX803DDnrfKQPcMoGo5ITR-9VuBY_35Q.cache +0 -0
- data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/FL/FLU4EKYSshHlQjgOqP6RDQ8z7GTRbHhl-2IBWvv363s.cache +0 -0
- data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/FL/FLl0vmABYcwCTORqhZlx9KLVZvAw1Sic_8-Vs5Q7F3I.cache +0 -0
- data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/KF/KFlEJcPYkMbf3yhDJTUJ73BpWJ8BMzjQUhpLO1CZqUk.cache +1 -0
- data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/LN/LNUl7yichb1dUbkovvnOVoVxkVQnhwndYgJRJwoXO_k.cache +1 -0
- data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/LU/LUq0pj8f6-F5P5ZpVil-_pBLCVTYTqa-qRzQOVFkgGg.cache +1 -0
- data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/N7/N7Q7f6mqtpX5Lxh78v1mILszsC6Oi9hrt9E8bYTCUg8.cache +0 -0
- data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/OJ/OJX-7cXh407miinHDx7z55OnuYnifbaiCSjus3I2ETg.cache +0 -0
- data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/P-/P-WGZR_jmbgi7zjScSIzMbnxmPRhR0FG-sUCbx-W0jA.cache +1 -0
- data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/Qd/QdDsJNHB1T-o6r9B1zTqkZ6nDWfFlq7i5HIqxsMqOR8.cache +1 -0
- data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/Qv/QvPvnJIjqHAUeoUdS4dpH_JVRh4znkA7ig3VHz7onhE.cache +1 -0
- data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/RG/RG1PrmlixwaUlG8BV0kcm_3F7OQekxsrLYjBdf403-k.cache +2 -0
- data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/TE/TEmdPmCEnqBmIu10fP0G66B333eV_jj1DT6NEM9BY5U.cache +1 -0
- data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/XM/XMyLLsxd032ZvSGR9P5BcOxAXuQxt_wuaTVdjeuYUeU.cache +0 -0
- data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/Xn/XnnrCKCkM_Fa5bHMwSjQ_NTBPicUoSK3LOeYu-ZmpYo.cache +0 -0
- data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/cj/cjpKTBCb00-jq6B1KoFGJrP4kvsl8JACc_pqZAORMlM.cache +0 -0
- data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/ft/ftREOVuSBdqj0d189uIhUmNEThLHS0nXTyt34tl_G9g.cache +0 -0
- data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/iD/iDTnVSbZnIij5Xm4jkwCyIXAPDn8RwaRe5Ja8YPKibw.cache +0 -0
- data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/iU/iU5Zc6hQ2jwcmv6lE2L4aWBJHHMnS1vrh0_LHR574kw.cache +1 -0
- data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/iZ/iZjLEYDTYhysPjIEb36PhNErZ4rRW1BniBfuH7oa1RI.cache +0 -0
- data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/ke/keL0ZyrZtXqgSINKKBK3qFEd2fvJSrv8qgU78i1-aqY.cache +1 -0
- data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/n_/n_xYqQYhwEMQknb3jFQnjlxxBE9TzMNHCdJ-bEyZFIw.cache +0 -0
- data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/nx/nxTv3sKVUQZADJyM3dPaVmUA78MIsMLD_K279yN_GsI.cache +0 -0
- data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/pa/pas5TN2JG4i2AUMntaZrRkOZ_AZhFBtsfPaUHKOSdnM.cache +0 -0
- data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/qP/qPmv5snMrDw830S6hSICDcnIy7kVEWoFKXhGKT38lG4.cache +2 -0
- data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/uQ/uQImR-NTBFCJ7TsnJRrKAG0zhTcX7vpg_MFvTWvWSGQ.cache +1 -0
- data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/uo/uosY6jh1_W3cVpcoQY0hcgG2zDeTVR169am2REYxMtI.cache +0 -0
- data/spec/dummy_app/tmp/cache/assets/sprockets/v4.0.0/yk/ykwP8uOyoTr4wPoEUoyB6Lrx9BG_9mWl6in8AJzBGPw.cache +1 -0
- data/spec/dummy_app/tmp/development_secret.txt +1 -0
- data/spec/dummy_app/tmp/restart.txt +0 -0
- data/spec/eitil_core/argument_helpers/all_args_to_ivars_bang_spec.rb +1 -1
- data/spec/eitil_core/argument_helpers/all_args_to_ivars_spec.rb +1 -1
- data/spec/eitil_core/argument_helpers/all_kwargs_to_ivars_bang_spec.rb +1 -1
- data/spec/eitil_core/argument_helpers/all_kwargs_to_ivars_spec.rb +1 -1
- data/spec/eitil_core/argument_helpers/args_to_h_bang_spec.rb +1 -1
- data/spec/eitil_core/argument_helpers/args_to_h_spec.rb +1 -1
- data/spec/eitil_core/argument_helpers/args_to_ivars_bang_spec.rb +1 -1
- data/spec/eitil_core/argument_helpers/args_to_ivars_spec.rb +1 -1
- data/spec/eitil_core/array/map_strings_spec.rb +2 -2
- data/spec/eitil_core/array/slice_hashes_spec.rb +1 -1
- data/spec/eitil_core/datetime/prettify_spec.rb +1 -1
- data/spec/eitil_core/errors/raise_error_spec.rb +1 -1
- data/spec/eitil_core/float/safe_to_i_spec.rb +1 -1
- data/spec/eitil_core/formatters/duck_set_spec.rb +3 -3
- data/spec/eitil_core/formatters/sql_spec.rb +3 -3
- data/spec/eitil_core/hash/auto_dig_spec.rb +1 -1
- data/spec/eitil_core/hash/transform_string_values_spec.rb +2 -2
- data/spec/eitil_core/safe_executions/safe_call.rb +1 -1
- data/spec/eitil_core/safe_executions/safe_send.rb +1 -1
- data/spec/eitil_core/setters/set_ivars_spec.rb +1 -1
- data/spec/eitil_core/string/colorize_spec.rb +91 -0
- data/spec/eitil_core/string/strip_base64_header_spec.rb +1 -1
- data/spec/eitil_core/string/to_filename_spec.rb +1 -1
- data/spec/eitil_core/type_checkers/is_num_or_nan_spec.rb +1 -1
- data/spec/eitil_integrate/application_exporter/auto_sum_spec.rb +106 -0
- data/spec/eitil_integrate/application_exporter/initialize_spec.rb +28 -0
- data/spec/eitil_wrapper/callbacks/helper_methods_spec.rb +34 -0
- data/spec/eitil_wrapper/decorators/decorators_spec.rb +49 -0
- data/spec/eitil_wrapper/jobs/single_method_job_spec.rb +72 -0
- data/spec/eitil_wrapper/routes/extended_resources_spec.rb +16 -0
- data/spec/eitil_wrapper/scopes/default_scopes_spec.rb +154 -0
- data/spec/spec_helper.rb +16 -6
- metadata +176 -4
|
@@ -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
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
|
|
2
|
+
# NOT YET IMPLEMENTED, SINCE THIS PART OF EITIL IS NOT YET IN USE.
|
|
3
|
+
# FIRST HOOK UP INTO EITJE_API, SINCE THAT MAY CHANGE THE FUNCTIONALITY.
|
|
4
|
+
|
|
5
|
+
# RSpec.describe "EitilWrapper::Routes" do
|
|
6
|
+
|
|
7
|
+
# before do
|
|
8
|
+
# @pretty_routes = `cd spec/dummy_app && rails routes`
|
|
9
|
+
# @routes = @pretty_routes.gsub(/[ \t]+/, ' ')
|
|
10
|
+
# end
|
|
11
|
+
|
|
12
|
+
# it "should " do
|
|
13
|
+
# expect(@routes).to include('POST /users(.:format) users#create')
|
|
14
|
+
# end
|
|
15
|
+
|
|
16
|
+
# end
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
|
|
2
|
+
RSpec.describe "EitilWrapper::Scopes" do
|
|
3
|
+
|
|
4
|
+
let(:scopes) { User.singleton_methods(false) }
|
|
5
|
+
|
|
6
|
+
context "for columns of datatype: boolean" do
|
|
7
|
+
|
|
8
|
+
it "should create the scope .{column_name}_true" do
|
|
9
|
+
expect(scopes).to include(:confirmed_true)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it "should create the scope .{column_name}_false" do
|
|
13
|
+
expect(scopes).to include(:confirmed_false)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
context "for columns of datatype: date" do
|
|
19
|
+
|
|
20
|
+
it "should create the scope .{column_name}_today" do
|
|
21
|
+
expect(scopes).to include(:birthday_today)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "should create the scope .{column_name}_past" do
|
|
25
|
+
expect(scopes).to include(:birthday_past)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "should create the scope .{column_name}_future" do
|
|
29
|
+
expect(scopes).to include(:birthday_future)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it "should create the scope .{column_name}_on_date(date)" do
|
|
33
|
+
expect(scopes).to include(:birthday_on_date)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
it "should create the scope .{column_name}_before_date(date)" do
|
|
37
|
+
expect(scopes).to include(:birthday_before_date)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
it "should create the scope .{column_name}_after_date(date)" do
|
|
41
|
+
expect(scopes).to include(:birthday_after_date)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it "should create the scope .{column_name}_between_dates(start_date, end_date)" do
|
|
45
|
+
expect(scopes).to include(:birthday_between_dates)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
it "should create the scope .{column_name}_oldest_first" do
|
|
49
|
+
expect(scopes).to include(:birthday_oldest_first)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
it "should create the scope .{column_name}_newest_first" do
|
|
53
|
+
expect(scopes).to include(:birthday_newest_first)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
context "for columns of datatype: datetime" do
|
|
59
|
+
|
|
60
|
+
it "should create the scope .{column_name}_today" do
|
|
61
|
+
expect(scopes).to include(:last_sign_in_today)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
it "should create the scope .{column_name}_past" do
|
|
65
|
+
expect(scopes).to include(:last_sign_in_past)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
it "should create the scope .{column_name}_future" do
|
|
69
|
+
expect(scopes).to include(:last_sign_in_future)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
it "should create the scope .{column_name}_on_date(date)" do
|
|
73
|
+
expect(scopes).to include(:last_sign_in_on_date)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
it "should create the scope .{column_name}_before_date(date)" do
|
|
77
|
+
expect(scopes).to include(:last_sign_in_before_date)
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
it "should create the scope .{column_name}_after_date(date)" do
|
|
81
|
+
expect(scopes).to include(:last_sign_in_after_date)
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
it "should create the scope .{column_name}_between_dates(start_date, end_date)" do
|
|
85
|
+
expect(scopes).to include(:last_sign_in_between_dates)
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
it "should create the scope .{column_name}_oldest_first" do
|
|
89
|
+
expect(scopes).to include(:last_sign_in_oldest_first)
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
it "should create the scope .{column_name}_newest_first" do
|
|
93
|
+
expect(scopes).to include(:last_sign_in_newest_first)
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
context "for columns of datatype: integer" do
|
|
99
|
+
|
|
100
|
+
it "should create the scope .{column_name}_equal_to(number)" do
|
|
101
|
+
expect(scopes).to include(:age_equal_to)
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
it "should create the scope .{column_name}_lower_than(number)" do
|
|
105
|
+
expect(scopes).to include(:age_lower_than)
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
it "should create the scope .{column_name}_higher_than(number)" do
|
|
109
|
+
expect(scopes).to include(:age_higher_than)
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
it "should create the scope .{column_name}_between(min, max)" do
|
|
113
|
+
expect(scopes).to include(:age_between)
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
it "should create the scope .{column_name}_ascending" do
|
|
117
|
+
expect(scopes).to include(:age_ascending)
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
it "should create the scope .{column_name}_descending" do
|
|
121
|
+
expect(scopes).to include(:age_descending)
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
context "for columns of datatype: float" do
|
|
127
|
+
|
|
128
|
+
it "should create the scope .{column_name}_equal_to(number)" do
|
|
129
|
+
expect(scopes).to include(:wage_equal_to)
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
it "should create the scope .{column_name}_lower_than(number)" do
|
|
133
|
+
expect(scopes).to include(:wage_lower_than)
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
it "should create the scope .{column_name}_higher_than(number)" do
|
|
137
|
+
expect(scopes).to include(:wage_higher_than)
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
it "should create the scope .{column_name}_between(min, max)" do
|
|
141
|
+
expect(scopes).to include(:wage_between)
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
it "should create the scope .{column_name}_ascending" do
|
|
145
|
+
expect(scopes).to include(:wage_ascending)
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
it "should create the scope .{column_name}_descending" do
|
|
149
|
+
expect(scopes).to include(:wage_descending)
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
end
|