barkest_core 1.5.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.
- checksums.yaml +7 -0
- data/.gitignore +13 -0
- data/Gemfile +22 -0
- data/Gemfile.lock +254 -0
- data/MIT-LICENSE +20 -0
- data/README.md +364 -0
- data/Rakefile +37 -0
- data/app/assets/fonts/barkest_core/ArchivoNarrow-Bold.ttf +0 -0
- data/app/assets/fonts/barkest_core/ArchivoNarrow-BoldItalic.ttf +0 -0
- data/app/assets/fonts/barkest_core/ArchivoNarrow-Italic.ttf +0 -0
- data/app/assets/fonts/barkest_core/ArchivoNarrow-Regular.ttf +0 -0
- data/app/assets/images/barkest_core/.keep +0 -0
- data/app/assets/images/barkest_core/barcode-B.svg +181 -0
- data/app/assets/javascripts/barkest_core/.keep +0 -0
- data/app/assets/javascripts/barkest_core/application.js +22 -0
- data/app/assets/javascripts/barkest_core/bootstrap-datepicker.js +1800 -0
- data/app/assets/javascripts/barkest_core/field_init.js +7 -0
- data/app/assets/javascripts/barkest_core/jquery.doubleScroll.js +112 -0
- data/app/assets/javascripts/barkest_core/masked_edit.js +25 -0
- data/app/assets/javascripts/barkest_core/system_status.js.erb +201 -0
- data/app/assets/stylesheets/barkest_core/.keep +0 -0
- data/app/assets/stylesheets/barkest_core/application.css +17 -0
- data/app/assets/stylesheets/barkest_core/custom.css.scss +264 -0
- data/app/assets/stylesheets/barkest_core/datepicker3.css +790 -0
- data/app/controllers/.keep +0 -0
- data/app/controllers/access_groups_controller.rb +74 -0
- data/app/controllers/account_activations_controller.rb +29 -0
- data/app/controllers/application_controller.rb +5 -0
- data/app/controllers/barkest_core/application_controller_base.rb +113 -0
- data/app/controllers/barkest_core/engine_controller_base.rb +15 -0
- data/app/controllers/barkest_core/testsub_controller.rb +21 -0
- data/app/controllers/contact_controller.rb +32 -0
- data/app/controllers/log_view_controller.rb +31 -0
- data/app/controllers/password_resets_controller.rb +126 -0
- data/app/controllers/sessions_controller.rb +64 -0
- data/app/controllers/status_controller.rb +150 -0
- data/app/controllers/system_config_controller.rb +238 -0
- data/app/controllers/system_update_controller.rb +164 -0
- data/app/controllers/test_access_controller.rb +44 -0
- data/app/controllers/test_report_controller.rb +75 -0
- data/app/controllers/users_controller.rb +218 -0
- data/app/helpers/.keep +0 -0
- data/app/helpers/barkest_core/application_helper.rb +134 -0
- data/app/helpers/barkest_core/form_helper.rb +469 -0
- data/app/helpers/barkest_core/html_helper.rb +70 -0
- data/app/helpers/barkest_core/misc_helper.rb +68 -0
- data/app/helpers/barkest_core/pdf_helper.rb +180 -0
- data/app/helpers/barkest_core/recaptcha_helper.rb +115 -0
- data/app/helpers/barkest_core/sessions_helper.rb +94 -0
- data/app/helpers/barkest_core/status_helper.rb +118 -0
- data/app/helpers/barkest_core/users_helper.rb +32 -0
- data/app/mailers/.keep +0 -0
- data/app/mailers/application_mailer.rb +5 -0
- data/app/mailers/barkest_core/application_mailer_base.rb +30 -0
- data/app/mailers/barkest_core/contact_form.rb +20 -0
- data/app/mailers/barkest_core/user_mailer.rb +44 -0
- data/app/models/.keep +0 -0
- data/app/models/access_group.rb +121 -0
- data/app/models/access_group_group_member.rb +13 -0
- data/app/models/access_group_user_member.rb +11 -0
- data/app/models/barkest_core/auth_config.rb +95 -0
- data/app/models/barkest_core/authorize_failure.rb +7 -0
- data/app/models/barkest_core/contact_message.rb +37 -0
- data/app/models/barkest_core/database_config.rb +223 -0
- data/app/models/barkest_core/db_table.rb +21 -0
- data/app/models/barkest_core/email_config.rb +132 -0
- data/app/models/barkest_core/global_status.rb +267 -0
- data/app/models/barkest_core/log_entry.rb +101 -0
- data/app/models/barkest_core/log_view_options.rb +51 -0
- data/app/models/barkest_core/ms_sql_db_definition.rb +441 -0
- data/app/models/barkest_core/ms_sql_definition.rb +221 -0
- data/app/models/barkest_core/ms_sql_function.rb +423 -0
- data/app/models/barkest_core/not_logged_in.rb +7 -0
- data/app/models/barkest_core/pdf_table_builder.rb +407 -0
- data/app/models/barkest_core/self_update_config.rb +37 -0
- data/app/models/barkest_core/user_alert.rb +29 -0
- data/app/models/barkest_core/user_alert_generators.rb +58 -0
- data/app/models/barkest_core/user_manager.rb +404 -0
- data/app/models/barkest_core/work_path.rb +74 -0
- data/app/models/disable_user.rb +18 -0
- data/app/models/ldap_access_group.rb +15 -0
- data/app/models/system_config.rb +99 -0
- data/app/models/user.rb +405 -0
- data/app/models/user_login_history.rb +11 -0
- data/app/views/.keep +0 -0
- data/app/views/access_groups/_form.html.erb +19 -0
- data/app/views/access_groups/edit.html.erb +2 -0
- data/app/views/access_groups/index.html.erb +32 -0
- data/app/views/access_groups/new.html.erb +2 -0
- data/app/views/access_groups/show.html.erb +4 -0
- data/app/views/barkest_core/contact_form/contact.html.erb +16 -0
- data/app/views/barkest_core/contact_form/contact.text.erb +13 -0
- data/app/views/barkest_core/testsub/_links.html.erb +5 -0
- data/app/views/barkest_core/testsub/page1.html.erb +3 -0
- data/app/views/barkest_core/testsub/page2.html.erb +2 -0
- data/app/views/barkest_core/testsub/page3.html.erb +2 -0
- data/app/views/barkest_core/user_mailer/account_activation.html.erb +7 -0
- data/app/views/barkest_core/user_mailer/account_activation.text.erb +6 -0
- data/app/views/barkest_core/user_mailer/invalid_password_reset.html.erb +3 -0
- data/app/views/barkest_core/user_mailer/invalid_password_reset.text.erb +5 -0
- data/app/views/barkest_core/user_mailer/password_reset.html.erb +8 -0
- data/app/views/barkest_core/user_mailer/password_reset.text.erb +7 -0
- data/app/views/contact/index.html.erb +24 -0
- data/app/views/layouts/_footer_copyright.html.erb +1 -0
- data/app/views/layouts/_menu_admin.html.erb +5 -0
- data/app/views/layouts/_menu_anon.html.erb +0 -0
- data/app/views/layouts/_menu_auth.html.erb +3 -0
- data/app/views/layouts/_menu_footer.html.erb +1 -0
- data/app/views/layouts/_nav_logo.html.erb +1 -0
- data/app/views/layouts/application.html.erb +2 -0
- data/app/views/layouts/barkest_core/_application.html.erb +24 -0
- data/app/views/layouts/barkest_core/_footer.html.erb +18 -0
- data/app/views/layouts/barkest_core/_header.html.erb +38 -0
- data/app/views/layouts/barkest_core/_html_mailer.html.erb +11 -0
- data/app/views/layouts/barkest_core/_menu_account.html.erb +14 -0
- data/app/views/layouts/barkest_core/_menu_sample.html.erb +1 -0
- data/app/views/layouts/barkest_core/_messages.html.erb +4 -0
- data/app/views/layouts/barkest_core/_shim.html.erb +4 -0
- data/app/views/layouts/barkest_core/_subheader.html.erb +1 -0
- data/app/views/layouts/barkest_core/_text_mailer.text.erb +4 -0
- data/app/views/layouts/mailer.html.erb +1 -0
- data/app/views/layouts/mailer.text.erb +1 -0
- data/app/views/log_view/index.html.erb +100 -0
- data/app/views/password_resets/edit.html.erb +20 -0
- data/app/views/password_resets/new.html.erb +14 -0
- data/app/views/sessions/new.html.erb +27 -0
- data/app/views/shared/_error_messages.html.erb +29 -0
- data/app/views/shared/_generic_user_alert.html.erb +4 -0
- data/app/views/status/current.html.erb +34 -0
- data/app/views/status/test.html.erb +50 -0
- data/app/views/system_config/index.html.erb +25 -0
- data/app/views/system_config/show_auth.html.erb +28 -0
- data/app/views/system_config/show_database.html.erb +36 -0
- data/app/views/system_config/show_email.html.erb +21 -0
- data/app/views/system_config/show_self_update.html.erb +13 -0
- data/app/views/system_update/index.html.erb +31 -0
- data/app/views/system_update/new.html.erb +2 -0
- data/app/views/test_access/allow_anon.html.erb +2 -0
- data/app/views/test_access/require_admin.html.erb +2 -0
- data/app/views/test_access/require_group_x.html.erb +2 -0
- data/app/views/test_access/require_user.html.erb +2 -0
- data/app/views/test_report/index.csv.csvrb +23 -0
- data/app/views/test_report/index.html.erb +6 -0
- data/app/views/test_report/index.pdf.prawn +50 -0
- data/app/views/test_report/index.xlsx.axlsx +28 -0
- data/app/views/users/_user.html.erb +57 -0
- data/app/views/users/_user_details.html.erb +15 -0
- data/app/views/users/_user_details_for_list.html.erb +1 -0
- data/app/views/users/_user_form.html.erb +13 -0
- data/app/views/users/disable_confirm.html.erb +19 -0
- data/app/views/users/edit.html.erb +15 -0
- data/app/views/users/index.html.erb +9 -0
- data/app/views/users/new.html.erb +10 -0
- data/app/views/users/show.html.erb +46 -0
- data/bin/rails +12 -0
- data/config/routes.rb +3 -0
- data/db/migrate/20160617172539_create_access_groups.rb +10 -0
- data/db/migrate/20160617172725_create_users.rb +26 -0
- data/db/migrate/20160617172833_create_user_login_histories.rb +12 -0
- data/db/migrate/20160622151720_create_access_group_user_members.rb +9 -0
- data/db/migrate/20160622151925_create_access_group_group_members.rb +9 -0
- data/db/migrate/20160701005706_create_ldap_access_groups.rb +11 -0
- data/db/migrate/20161108155029_create_system_configs.rb +11 -0
- data/db/seeds/barkest_core_01_create_users.rb +42 -0
- data/db/seeds.rb +53 -0
- data/lib/barkest_core/concerns/association_with_defaults.rb +55 -0
- data/lib/barkest_core/concerns/boolean_parser.rb +88 -0
- data/lib/barkest_core/concerns/date_parser.rb +181 -0
- data/lib/barkest_core/concerns/email_tester.rb +55 -0
- data/lib/barkest_core/concerns/encrypted_fields.rb +156 -0
- data/lib/barkest_core/concerns/named_model.rb +73 -0
- data/lib/barkest_core/concerns/number_parser.rb +145 -0
- data/lib/barkest_core/concerns/utc_conversion.rb +60 -0
- data/lib/barkest_core/engine.rb +105 -0
- data/lib/barkest_core/extensions/active_record_extensions.rb +120 -0
- data/lib/barkest_core/extensions/application_configuration_extensions.rb +38 -0
- data/lib/barkest_core/extensions/application_extensions.rb +50 -0
- data/lib/barkest_core/extensions/axlsx_extenstions.rb +157 -0
- data/lib/barkest_core/extensions/fixture_set_extensions.rb +107 -0
- data/lib/barkest_core/extensions/generator_extensions.rb +271 -0
- data/lib/barkest_core/extensions/main_app_extensions.rb +35 -0
- data/lib/barkest_core/extensions/prawn_document_extensions.rb +367 -0
- data/lib/barkest_core/extensions/prawn_table_extensions.rb +131 -0
- data/lib/barkest_core/extensions/router_extensions.rb +106 -0
- data/lib/barkest_core/extensions/simple_formatter_extensions.rb +66 -0
- data/lib/barkest_core/extensions/test_case_extensions.rb +348 -0
- data/lib/barkest_core/extensions/time_extensions.rb +164 -0
- data/lib/barkest_core/handlers/csv_handler.rb +30 -0
- data/lib/barkest_core/version.rb +3 -0
- data/lib/barkest_core.rb +324 -0
- data/lib/generators/barkest/install_generator.rb +102 -0
- data/lib/generators/barkest_core/actions/01_patch_application_controller.rb +55 -0
- data/lib/generators/barkest_core/actions/02_patch_application_mailer.rb +56 -0
- data/lib/generators/barkest_core/actions/03_patch_assets.rb +62 -0
- data/lib/generators/barkest_core/actions/04_patch_layouts.rb +36 -0
- data/lib/generators/barkest_core/actions/05_patch_routes.rb +93 -0
- data/lib/generators/barkest_core/actions/06_patch_seeds.rb +60 -0
- data/lib/generators/barkest_core/actions/07_copy_migrations.rb +51 -0
- data/lib/generators/barkest_core/actions/08_configure_database.rb +52 -0
- data/lib/generators/barkest_core/actions/09_configure_secrets.rb +29 -0
- data/lib/generators/barkest_core/actions/99_patch_gitignore.rb +57 -0
- data/lib/generators/barkest_core/install_generator.rb +17 -0
- data/test/barkest_core_test.rb +83 -0
- data/test/controllers/access_groups_controller_test.rb +53 -0
- data/test/controllers/contact_controller_test.rb +10 -0
- data/test/controllers/sessions_controller_test.rb +10 -0
- data/test/controllers/users_controller_test.rb +10 -0
- data/test/dummy/.gitignore +10 -0
- data/test/dummy/README.rdoc +28 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/images/.keep +0 -0
- data/test/dummy/app/assets/javascripts/application.js +14 -0
- data/test/dummy/app/assets/stylesheets/application.css +16 -0
- data/test/dummy/app/controllers/application_controller.rb +5 -0
- data/test/dummy/app/controllers/concerns/.keep +0 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/mailers/.keep +0 -0
- data/test/dummy/app/mailers/application_mailer.rb +3 -0
- data/test/dummy/app/models/.keep +0 -0
- data/test/dummy/app/models/concerns/.keep +0 -0
- data/test/dummy/app/views/layouts/application.html.erb +1 -0
- data/test/dummy/app/views/layouts/mailer.html.erb +1 -0
- data/test/dummy/app/views/layouts/mailer.text.erb +1 -0
- data/test/dummy/app/views/system_config/show_fake.html.erb +3 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/bin/setup +29 -0
- data/test/dummy/config/application.rb +27 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +47 -0
- data/test/dummy/config/environments/production.rb +79 -0
- data/test/dummy/config/environments/test.rb +44 -0
- data/test/dummy/config/initializers/assets.rb +11 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/test/dummy/config/initializers/db_updater_ext.rb +33 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +4 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/sys_config_ext.rb +12 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/routes.rb +60 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/db/schema.rb +95 -0
- data/test/dummy/db/seeds/barkest_core_01_create_users.rb +42 -0
- data/test/dummy/db/seeds.rb +51 -0
- data/test/dummy/lib/assets/.keep +0 -0
- data/test/dummy/log/.keep +0 -0
- data/test/dummy/public/404.html +67 -0
- data/test/dummy/public/422.html +67 -0
- data/test/dummy/public/500.html +66 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/sql/my_test_view.sql +3 -0
- data/test/fixtures/access_groups.yml +21 -0
- data/test/fixtures/users.yml +71 -0
- data/test/helpers/barkest_core/sessions_helper_test.rb +22 -0
- data/test/integration/access_group_mgmt_test.rb +33 -0
- data/test/integration/access_test.rb +24 -0
- data/test/integration/account_activations_access_test.rb +12 -0
- data/test/integration/contact_test.rb +98 -0
- data/test/integration/extra_partial_test.rb +41 -0
- data/test/integration/log_view_access_test.rb +12 -0
- data/test/integration/password_resets_test.rb +101 -0
- data/test/integration/reports_test.rb +53 -0
- data/test/integration/status_access_test.rb +27 -0
- data/test/integration/system_config_access_test.rb +24 -0
- data/test/integration/system_update_access_test.rb +19 -0
- data/test/integration/users_access_test.rb +34 -0
- data/test/integration/users_edit_test.rb +178 -0
- data/test/integration/users_index_test.rb +62 -0
- data/test/integration/users_login_test.rb +67 -0
- data/test/integration/users_signup_test.rb +54 -0
- data/test/mailers/.keep +0 -0
- data/test/mailers/barkest_core/contact_form_test.rb +28 -0
- data/test/mailers/barkest_core/user_mailer_test.rb +43 -0
- data/test/mailers/previews/barkest_core/contact_form_preview.rb +17 -0
- data/test/mailers/previews/barkest_core/user_mailer_preview.rb +26 -0
- data/test/models/access_group_group_member_test.rb +28 -0
- data/test/models/access_group_test.rb +114 -0
- data/test/models/access_group_user_member_test.rb +28 -0
- data/test/models/barkest_core/auth_config_test.rb +57 -0
- data/test/models/barkest_core/bool_parser_test.rb +28 -0
- data/test/models/barkest_core/contact_message_test.rb +61 -0
- data/test/models/barkest_core/database_config_test.rb +33 -0
- data/test/models/barkest_core/date_parser_test.rb +110 -0
- data/test/models/barkest_core/email_config_test.rb +57 -0
- data/test/models/barkest_core/global_status_test.rb +50 -0
- data/test/models/barkest_core/ms_sql_db_updater_test.rb +115 -0
- data/test/models/barkest_core/ms_sql_definition_test.rb +102 -0
- data/test/models/barkest_core/ms_sql_function_test.rb +131 -0
- data/test/models/barkest_core/number_parser_test.rb +29 -0
- data/test/models/barkest_core/self_update_config_test.rb +29 -0
- data/test/models/barkest_core/user_alert_test.rb +19 -0
- data/test/models/barkest_core/user_manager_test.rb +34 -0
- data/test/models/barkest_core/work_path_test.rb +26 -0
- data/test/models/disable_user_test.rb +27 -0
- data/test/models/generic_time_test.rb +66 -0
- data/test/models/ldap_access_group_test.rb +31 -0
- data/test/models/pdf_table_builder_test.rb +6 -0
- data/test/models/system_config_test.rb +78 -0
- data/test/models/user_login_history_test.rb +37 -0
- data/test/models/user_test.rb +130 -0
- data/test/test_helper.rb +63 -0
- metadata +798 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
module BarkestCore
|
|
2
|
+
class DatabaseConfigTest < ActiveSupport::TestCase
|
|
3
|
+
|
|
4
|
+
def setup
|
|
5
|
+
@item = BarkestCore::DatabaseConfig.new('my_db', adapter: :sqlite3, database: 'mydb.sqlite', pool: 5, timeout: 5000)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
test 'should be valid' do
|
|
9
|
+
assert @item.valid?
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
test 'should require name' do
|
|
13
|
+
assert_required @item, :name
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
test 'should require adapter' do
|
|
17
|
+
assert_required @item, :adapter
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
test 'should require database' do
|
|
21
|
+
assert_required @item, :database
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
test 'should require pool' do
|
|
25
|
+
assert_required @item, :pool
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
test 'should require timeout' do
|
|
29
|
+
assert_required @item, :timeout
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
module BarkestCore
|
|
4
|
+
class DateParserTest < ActiveSupport::TestCase
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
test 'should parse valid date values' do
|
|
8
|
+
{
|
|
9
|
+
'1/1/2000' => Time.utc(2000,1,1),
|
|
10
|
+
'01/01/00' => Time.utc(2000,1,1),
|
|
11
|
+
'2000-01-01' => Time.utc(2000,1,1),
|
|
12
|
+
'00-01-01' => Time.utc(2000,1,1),
|
|
13
|
+
'0000-01-01' => Time.utc(2000,1,1), # dates less than 100 are converted to 1940-2039.
|
|
14
|
+
'1/1/40' => Time.utc(1940,1,1),
|
|
15
|
+
'40-1-1' => Time.utc(1940,1,1),
|
|
16
|
+
'12/25/2016' => Time.utc(2016,12,25),
|
|
17
|
+
'2016-12-25' => Time.utc(2016,12,25),
|
|
18
|
+
'11/01/2015 1:45 PM' => Time.utc(2015,11,1),
|
|
19
|
+
'2015-11-01 13:45' => Time.utc(2015,11,1),
|
|
20
|
+
}.each do |k,v|
|
|
21
|
+
assert_equal v, BarkestCore::DateParser.parse_for_date_column(k), "#{k} should parse to #{v}"
|
|
22
|
+
assert_equal v.strftime("'%Y-%m-%d'"), BarkestCore::DateParser.parse_for_date_filter(k), "#{k} should filter to #{v.strftime("'%Y-%m-%d'")}"
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
test 'should nullify invalid date values' do
|
|
27
|
+
[
|
|
28
|
+
nil,
|
|
29
|
+
'',
|
|
30
|
+
' ',
|
|
31
|
+
'25/12/2016', # DD/MM/YYYY is not supported
|
|
32
|
+
'2016/12/25', # YYYY/MM/DD is not supported
|
|
33
|
+
'2016.12.25', # YYYY.MM.DD is not supported
|
|
34
|
+
'12-25-2016', # MM-DD-YYYY is not supported
|
|
35
|
+
'25-12-2016', # DD-MM-YYYY is not supported
|
|
36
|
+
'12.25.2016', # MM.DD.YYYY is not supported
|
|
37
|
+
'0/0/0000', # Invalid day & month.
|
|
38
|
+
'2/30/2000', # Invalid day.
|
|
39
|
+
'13/13/2000', # Invalid month.
|
|
40
|
+
'1/1/2000 24:01', # invalid time.
|
|
41
|
+
'1/1/2000 24:00:01', # invalid time.
|
|
42
|
+
'Sunday, December 25, 2016', # only numeric dates are supported
|
|
43
|
+
'December 25, 2016', # only numeric dates are supported
|
|
44
|
+
].each do |v|
|
|
45
|
+
assert_nil BarkestCore::DateParser.parse_for_date_column(v), "#{v.inspect} should parse to nil"
|
|
46
|
+
assert_equal "NULL", BarkestCore::DateParser.parse_for_date_filter(v), "#{v.inspect} should parse to NULL"
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
test 'should parse valid time values' do
|
|
51
|
+
{
|
|
52
|
+
'1/1/2000 00:00' => Time.utc(2000,1,1),
|
|
53
|
+
'01/01/00 00:00' => Time.utc(2000,1,1),
|
|
54
|
+
'2000-01-01 00:00' => Time.utc(2000,1,1),
|
|
55
|
+
'00-01-01 00:00' => Time.utc(2000,1,1),
|
|
56
|
+
'1/1/40 00:00' => Time.utc(1940,1,1),
|
|
57
|
+
'40-1-1 00:00' => Time.utc(1940,1,1),
|
|
58
|
+
'12/25/2016 00:00' => Time.utc(2016,12,25),
|
|
59
|
+
'2016-12-25 00:00' => Time.utc(2016,12,25),
|
|
60
|
+
'11/01/2015 1:45 PM' => Time.utc(2015,11,1,13,45),
|
|
61
|
+
'2015-11-01 13:45' => Time.utc(2015,11,1,13,45),
|
|
62
|
+
'12:15 AM' => Time.utc(1900,1,1,0,15),
|
|
63
|
+
'12:15 PM' => Time.utc(1900,1,1,12,15),
|
|
64
|
+
'00:15' => Time.utc(1900,1,1,0,15),
|
|
65
|
+
'12:15' => Time.utc(1900,1,1,12,15),
|
|
66
|
+
'2:30 PM' => Time.utc(1900,1,1,14,30),
|
|
67
|
+
'2:30 AM' => Time.utc(1900,1,1,2,30),
|
|
68
|
+
'18:45:50' => Time.utc(1900,1,1,18,45,50),
|
|
69
|
+
'6:45:50 AM' => Time.utc(1900,1,1,6,45,50),
|
|
70
|
+
'6:45:50 PM' => Time.utc(1900,1,1,18,45,50),
|
|
71
|
+
'12/25/2016 9:05:10 AM' => Time.utc(2016,12,25,9,5,10),
|
|
72
|
+
'12/25/2016 9:05:10 PM' => Time.utc(2016,12,25,21,5,10),
|
|
73
|
+
'1/1/2000 24:00' => Time.utc(2000,1,2,0,0), # 24:00 is 00:00 the next day.
|
|
74
|
+
}.each do |k,v|
|
|
75
|
+
assert_equal v, BarkestCore::DateParser.parse_for_time_column(k), "#{k} should parse to #{v}"
|
|
76
|
+
assert_equal v.strftime("'%Y-%m-%d %H:%M:%S'"), BarkestCore::DateParser.parse_for_time_filter(k), "#{k} should filter to #{v.strftime("'%Y-%m-%d %H:%M:%S'")}"
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
test 'should nullify invalid time values' do
|
|
81
|
+
[
|
|
82
|
+
nil,
|
|
83
|
+
'',
|
|
84
|
+
' ',
|
|
85
|
+
'25/12/2016 00:00', # DD/MM/YYYY is not supported
|
|
86
|
+
'2016/12/25 00:00', # YYYY/MM/DD is not supported
|
|
87
|
+
'2016.12.25 00:00', # YYYY.MM.DD is not supported
|
|
88
|
+
'12-25-2016 00:00', # MM-DD-YYYY is not supported
|
|
89
|
+
'25-12-2016 00:00', # DD-MM-YYYY is not supported
|
|
90
|
+
'12.25.2016 00:00', # MM.DD.YYYY is not supported
|
|
91
|
+
'0/0/0000 00:00', # Invalid day & month.
|
|
92
|
+
'2/30/2000 00:00', # Invalid day.
|
|
93
|
+
'13/13/2000 00:00', # Invalid month.
|
|
94
|
+
'25:00', # invalid hour
|
|
95
|
+
'23:66', # invalid minute
|
|
96
|
+
'23:59:66', # invalid second
|
|
97
|
+
'13:00 PM', # invalid mixed 12/24
|
|
98
|
+
'13:00 AM', # invalid mixed 12/24
|
|
99
|
+
'00:00 PM', # invalid mixed 12/24
|
|
100
|
+
'00:00 AM', # invalid mixed 12/24
|
|
101
|
+
'Sunday, December 25, 2016 12:18 AM', # only numeric dates are supported
|
|
102
|
+
'December 25, 2016 12:18 AM', # only numeric dates are supported
|
|
103
|
+
].each do |v|
|
|
104
|
+
assert_nil BarkestCore::DateParser.parse_for_date_column(v), "#{v.inspect} should parse to nil"
|
|
105
|
+
assert_equal "NULL", BarkestCore::DateParser.parse_for_date_filter(v), "#{v.inspect} should parse to NULL"
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
end
|
|
110
|
+
end
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
module BarkestCore
|
|
2
|
+
class EmailConfigTest < ActiveSupport::TestCase
|
|
3
|
+
|
|
4
|
+
def setup
|
|
5
|
+
@item = BarkestCore::EmailConfig.new(config_mode: :none, default_sender: 'abc@xyz.com', default_recipient: 'abc@xyz.com', default_hostname: 'xyz.com')
|
|
6
|
+
@item2 = @item.dup
|
|
7
|
+
@item2.config_mode = 'smtp'
|
|
8
|
+
@item2.address = 'localhost'
|
|
9
|
+
@item2.port = 25
|
|
10
|
+
@item2.authentication = 'none'
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
test 'should be valid' do
|
|
14
|
+
assert @item.valid?, 'item 1 is invalid'
|
|
15
|
+
assert @item2.valid?, 'item 2 is invalid'
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
test 'should require config_mode' do
|
|
19
|
+
assert_required @item, :config_mode
|
|
20
|
+
assert_required @item2, :config_mode
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
test 'should require default_sender' do
|
|
24
|
+
assert_required @item, :default_sender
|
|
25
|
+
assert_required @item2, :default_sender
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
test 'should require default_recipient' do
|
|
29
|
+
assert_required @item, :default_recipient
|
|
30
|
+
assert_required @item2, :default_recipient
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
test 'should require default_hostname' do
|
|
34
|
+
assert_required @item, :default_hostname
|
|
35
|
+
assert_required @item2, :default_hostname
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
test 'switching to smtp should invalidate item1' do
|
|
39
|
+
@item.config_mode = 'smtp'
|
|
40
|
+
assert_not @item.valid?
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
test 'should require address for smtp' do
|
|
44
|
+
assert_required @item2, :address
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
test 'should require port for smtp' do
|
|
48
|
+
assert_required @item2, :port
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
test 'should require authentication for smtp' do
|
|
52
|
+
assert_required @item2, :authentication
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
end
|
|
57
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
module BarkestCore
|
|
4
|
+
class GlobalStatusTest < ActiveSupport::TestCase
|
|
5
|
+
|
|
6
|
+
test 'should allow running code in a block' do
|
|
7
|
+
assert_not BarkestCore::GlobalStatus.locked?
|
|
8
|
+
|
|
9
|
+
BarkestCore::GlobalStatus.lock_for do |stat|
|
|
10
|
+
assert BarkestCore::GlobalStatus.locked?
|
|
11
|
+
assert stat
|
|
12
|
+
|
|
13
|
+
# set the status using our stat object.
|
|
14
|
+
stat.set_status 'Hello', 10
|
|
15
|
+
cur_stat = stat.get_status
|
|
16
|
+
assert_equal 'Hello', cur_stat[:message]
|
|
17
|
+
assert_equal 10, cur_stat[:percent].to_s.to_i
|
|
18
|
+
|
|
19
|
+
# verify the global status reports correctly.
|
|
20
|
+
cur_stat = BarkestCore::GlobalStatus.current
|
|
21
|
+
assert_equal 'Hello', cur_stat[:message]
|
|
22
|
+
assert_equal 10, cur_stat[:percent].to_s.to_i
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# after the block, the status should be cleared.
|
|
26
|
+
cur_stat = BarkestCore::GlobalStatus.current
|
|
27
|
+
assert_not_equal 'Hello', cur_stat[:message]
|
|
28
|
+
assert_not_equal 10, cur_stat[:percent].to_s.to_i
|
|
29
|
+
assert_not BarkestCore::GlobalStatus.locked?
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
test 'should block code as necessary' do
|
|
33
|
+
stat = BarkestCore::GlobalStatus.new
|
|
34
|
+
assert_not BarkestCore::GlobalStatus.locked?
|
|
35
|
+
assert stat.acquire_lock
|
|
36
|
+
BarkestCore::GlobalStatus.lock_for do |my_stat|
|
|
37
|
+
assert BarkestCore::GlobalStatus.locked?
|
|
38
|
+
assert_not my_stat # should be false when already locked.
|
|
39
|
+
end
|
|
40
|
+
assert_raises BarkestCore::GlobalStatus::FailureToLock do
|
|
41
|
+
BarkestCore::GlobalStatus.lock_for(true) do |my_stat|
|
|
42
|
+
assert false, 'This block should not execute.'
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
assert BarkestCore::GlobalStatus.locked?
|
|
46
|
+
stat.release_lock
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
module BarkestCore
|
|
4
|
+
class MsSqlDbUpdaterTest < ActiveSupport::TestCase
|
|
5
|
+
|
|
6
|
+
TEST_DEFS = [
|
|
7
|
+
'CREATE TABLE [alpha_beta] ( [id] INTEGER IDENTITY NOT NULL PRIMARY KEY, [name] VARCHAR(30) NOT NULL )',
|
|
8
|
+
'CREATE VIEW [something] AS SELECT 1 AS [one], \'abc\' as [two]',
|
|
9
|
+
'CREATE FUNCTION [multiply] (@a INTEGER, @b INTEGER) RETURNS TABLE AS RETURN SELECT ISNULL(@a,0) * ISNULL(@b,0) AS [result]',
|
|
10
|
+
'CREATE VIEW [alpha_bravo] AS SELECT COUNT(*) AS [beta_count] FROM [@Z~alpha_beta]', # referencing another object.
|
|
11
|
+
# A sample procedure that shows how a procedure can be used to enact more diverse updates.
|
|
12
|
+
# For instance, incremental table updates could be done with an ALTER, but they wouldn't necessarily be safe.
|
|
13
|
+
# Inside a procedure you can check for column existence and update as necessary, making the procedure safe to be
|
|
14
|
+
# called multiple times. The updater only sees the procedure so it won't try to manage the updates carried out
|
|
15
|
+
# by the procedure.
|
|
16
|
+
<<-EOPROC
|
|
17
|
+
CREATE PROCEDURE [add_delta]
|
|
18
|
+
AS
|
|
19
|
+
BEGIN
|
|
20
|
+
SET NOCOUNT ON;
|
|
21
|
+
DECLARE @cnt INTEGER;
|
|
22
|
+
SELECT @cnt=ISNULL((SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS C WHERE C.[TABLE_NAME]='@Z~alpha_beta' AND C.[COLUMN_NAME]='delta'), 0);
|
|
23
|
+
IF @cnt <> 1
|
|
24
|
+
BEGIN
|
|
25
|
+
ALTER TABLE [@Z~alpha_beta] ADD [delta] FLOAT;
|
|
26
|
+
EXEC sp_sqlexec 'UPDATE [@Z~alpha_beta] SET [delta] = 1.0';
|
|
27
|
+
RETURN 1;
|
|
28
|
+
END
|
|
29
|
+
ELSE
|
|
30
|
+
BEGIN
|
|
31
|
+
RETURN 0;
|
|
32
|
+
END
|
|
33
|
+
END
|
|
34
|
+
EOPROC
|
|
35
|
+
|
|
36
|
+
]
|
|
37
|
+
|
|
38
|
+
class CleanupConn < ActiveRecord::Base
|
|
39
|
+
self.abstract_class = true
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
test 'should be able to update MSSQL db' do
|
|
43
|
+
updater = ::BarkestCore::MsSqlDbDefinition.new
|
|
44
|
+
|
|
45
|
+
# add the sources.
|
|
46
|
+
TEST_DEFS.each do |test_def|
|
|
47
|
+
updater.add_source "-- #{Date.today.strftime('%Y-%m-%d')}\n" + test_def
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
cfg = BarkestCore.db_config(:ms_sql_test)
|
|
51
|
+
cntr = 0
|
|
52
|
+
begin
|
|
53
|
+
updater.update_db(
|
|
54
|
+
cfg,
|
|
55
|
+
before_update: Proc.new do |conn,user|
|
|
56
|
+
assert_equal cfg[:username], user
|
|
57
|
+
cntr = conn.exec_query("SELECT COUNT(*) AS [cnt] FROM [#{::BarkestCore::MsSqlDbDefinition::VERSION_TABLE_NAME}]").first['cnt']
|
|
58
|
+
updater.sources.each do |src|
|
|
59
|
+
assert_equal 0, conn.exec_query("SELECT COUNT(*) AS [cnt] FROM [#{::BarkestCore::MsSqlDbDefinition::VERSION_TABLE_NAME}] WHERE [object_name]='#{src.prefixed_name}'").first['cnt']
|
|
60
|
+
assert_not conn.object_exists?(src.prefixed_name)
|
|
61
|
+
end
|
|
62
|
+
end,
|
|
63
|
+
after_update: Proc.new do |conn,_|
|
|
64
|
+
assert_equal cntr + TEST_DEFS.count, conn.exec_query("SELECT COUNT(*) AS [cnt] FROM [#{::BarkestCore::MsSqlDbDefinition::VERSION_TABLE_NAME}]").first['cnt']
|
|
65
|
+
updater.sources.each do |src|
|
|
66
|
+
assert_equal 1, conn.exec_query("SELECT COUNT(*) AS [cnt] FROM [#{::BarkestCore::MsSqlDbDefinition::VERSION_TABLE_NAME}] WHERE [object_name]='#{src.prefixed_name}'").first['cnt']
|
|
67
|
+
assert conn.object_exists?(src.prefixed_name)
|
|
68
|
+
end
|
|
69
|
+
assert_not_equal 0, conn.exec_query("SELECT COUNT(*) AS [cnt] FROM [#{::BarkestCore::MsSqlDbDefinition::VERSION_TABLE_NAME}]").first['cnt']
|
|
70
|
+
assert_equal 1, conn.exec_query("SELECT [one] FROM [#{updater.object_name 'something'}]").first['one']
|
|
71
|
+
assert_equal 'abc', conn.exec_query("SELECT [two] FROM [#{updater.object_name 'something'}]").first['two']
|
|
72
|
+
assert_equal 20, conn.exec_query("SELECT [result] FROM [#{updater.object_name 'multiply'}](4, 5)").first['result']
|
|
73
|
+
|
|
74
|
+
(1..5).each do |i|
|
|
75
|
+
conn.exec_query "INSERT INTO [#{updater.object_name 'alpha_beta'}] ([name]) VALUES ('Number #{i}')"
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# pass one, a return value of 1 indicates the SP made the necessary changes.
|
|
79
|
+
assert_equal 1, conn.exec_sp("EXECUTE [#{updater.object_name 'add_delta'}]")
|
|
80
|
+
# pass two, a return value of 0 indicates the SP didn't need to make changes.
|
|
81
|
+
assert_equal 0, conn.exec_sp("EXECUTE [#{updater.object_name 'add_delta'}]")
|
|
82
|
+
|
|
83
|
+
# Now we can directly access the new [delta] fields added to our table.
|
|
84
|
+
assert_equal 5, conn.exec_query("SELECT COUNT(*) AS [delta_count] FROM [#{updater.object_name 'alpha_beta'}] WHERE [delta]=1.0").first['delta_count']
|
|
85
|
+
# And the view should still work as well.
|
|
86
|
+
assert_equal 5, conn.exec_query("SELECT [beta_count] FROM [#{updater.object_name 'alpha_bravo'}]").first['beta_count']
|
|
87
|
+
end
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
rescue ::BarkestCore::MsSqlDbDefinition::NeedFullAccess => e
|
|
91
|
+
skip "Invalid test MSSQL configuration: #{e.message}"
|
|
92
|
+
ensure
|
|
93
|
+
begin
|
|
94
|
+
CleanupConn.remove_connection
|
|
95
|
+
CleanupConn.establish_connection cfg
|
|
96
|
+
conn = CleanupConn.connection
|
|
97
|
+
updater.sources.reverse.each do |test_def|
|
|
98
|
+
begin
|
|
99
|
+
conn.execute "DELETE FROM [#{::BarkestCore::MsSqlDbDefinition::VERSION_TABLE_NAME}] WHERE [object_name]='#{test_def.prefixed_name}'" rescue nil
|
|
100
|
+
conn.execute test_def.drop_sql rescue nil
|
|
101
|
+
rescue =>e
|
|
102
|
+
nil
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
CleanupConn.remove_connection
|
|
106
|
+
rescue
|
|
107
|
+
nil
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
end
|
|
115
|
+
end
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
module BarkestCore
|
|
4
|
+
class MsSqlDefinitionTest < ActiveSupport::TestCase
|
|
5
|
+
|
|
6
|
+
VALID_LIST = [
|
|
7
|
+
['XYZ', 'VIEW', 'CREATE VIEW [XYZ] AS SELECT 123 AS [VALUE]'],
|
|
8
|
+
['XYZ_123', 'VIEW', 'CREATE VIEW XYZ_123 AS SELECT \'ABC\'\'XYZ\' AS [123]'],
|
|
9
|
+
['ABC', 'VIEW', "-- This is a comment about this view.\nCREATE VIEW [ABC] AS SELECT 1 AS [VALUE]\n/* Just a simple comment. */"],
|
|
10
|
+
['ABC_123', 'VIEW', "CREATE VIEW ABC_123 AS SELECT 1 AS [Index]\nUNION SELECT 2\nUNION SELECT 3\n-- This is not a drop statement."],
|
|
11
|
+
|
|
12
|
+
['AEIOU', 'FUNCTION', 'CREATE FUNCTION [AEIOU] (@num AS INTEGER) RETURNS TABLE AS SELECT ISNULL(@num,0) * 5 AS [five_times_more]'],
|
|
13
|
+
|
|
14
|
+
['ZYX', 'TABLE', 'CREATE TABLE [ZYX] ([id] INTEGER NOT NULL PRIMARY KEY, [name] VARCHAR(200))'],
|
|
15
|
+
['ZYX', 'TABLE', 'ALTER TABLE [ZYX] ADD COLUMN [col2] INTEGER'],
|
|
16
|
+
]
|
|
17
|
+
|
|
18
|
+
INVALID_LIST = [
|
|
19
|
+
[
|
|
20
|
+
BarkestCore::MsSqlDefinition::EmptyDefinition,
|
|
21
|
+
''
|
|
22
|
+
],
|
|
23
|
+
[
|
|
24
|
+
BarkestCore::MsSqlDefinition::EmptyDefinition,
|
|
25
|
+
"-- This is a comment\n-- This is another comment\n/* And a final comment.\nNote that this definition still has no content.\n/* We should also support embedded comments */ because they may occur. */"
|
|
26
|
+
],
|
|
27
|
+
[
|
|
28
|
+
BarkestCore::MsSqlDefinition::MissingCreateStatement,
|
|
29
|
+
'SELECT 1 AS Value'
|
|
30
|
+
],
|
|
31
|
+
[
|
|
32
|
+
BarkestCore::MsSqlDefinition::ExtraDDL,
|
|
33
|
+
"CREATE VIEW XYZ AS SELECT 1 AS [Value]\nCREATE VIEW ABC AS SELECT 2 AS [Value]"
|
|
34
|
+
],
|
|
35
|
+
[
|
|
36
|
+
BarkestCore::MsSqlDefinition::ExtraDDL,
|
|
37
|
+
"create view xyz as select 1 as [value]\ndrop view xyz"
|
|
38
|
+
],
|
|
39
|
+
[
|
|
40
|
+
BarkestCore::MsSqlDefinition::UnmatchedBracket,
|
|
41
|
+
'create view xyz as select 1 as [value, 2 as [another_value]'
|
|
42
|
+
],
|
|
43
|
+
[
|
|
44
|
+
BarkestCore::MsSqlDefinition::UnmatchedBracket,
|
|
45
|
+
'create view xyz as select 1 as [value]]'
|
|
46
|
+
],
|
|
47
|
+
[
|
|
48
|
+
BarkestCore::MsSqlDefinition::UnclosedQuote,
|
|
49
|
+
"create view xyz as select 'hello as [value]"
|
|
50
|
+
],
|
|
51
|
+
[
|
|
52
|
+
BarkestCore::MsSqlDefinition::UnclosedQuote,
|
|
53
|
+
"create view xyz as select 'hello 'world' as value"
|
|
54
|
+
],
|
|
55
|
+
[
|
|
56
|
+
BarkestCore::MsSqlDefinition::UnclosedQuote,
|
|
57
|
+
"create view xyz as select 1 as \"value"
|
|
58
|
+
],
|
|
59
|
+
[
|
|
60
|
+
BarkestCore::MsSqlDefinition::UnclosedQuote,
|
|
61
|
+
"create view xyz as select 1 as value\""
|
|
62
|
+
],
|
|
63
|
+
[
|
|
64
|
+
BarkestCore::MsSqlDefinition::UnmatchedComment,
|
|
65
|
+
'create view xyz as select 1 as value /* /* a comment that was opened twice */'
|
|
66
|
+
],
|
|
67
|
+
[
|
|
68
|
+
BarkestCore::MsSqlDefinition::UnmatchedComment,
|
|
69
|
+
'create view xyz as select 1 as value /* a comment that is closed twice */ */'
|
|
70
|
+
],
|
|
71
|
+
[
|
|
72
|
+
BarkestCore::MsSqlDefinition::MissingReturnType,
|
|
73
|
+
'create function xyz (alpha integer) as select alpha'
|
|
74
|
+
],
|
|
75
|
+
[ # alter is only valid for tables (for our purposes) since views and functions are recreated.
|
|
76
|
+
BarkestCore::MsSqlDefinition::MissingCreateStatement,
|
|
77
|
+
'alter function xyz (@alpha integer) returns table as select @alpha'
|
|
78
|
+
],
|
|
79
|
+
]
|
|
80
|
+
|
|
81
|
+
test 'should be valid samples' do
|
|
82
|
+
VALID_LIST.each_with_index do |(name,type,sql), index|
|
|
83
|
+
begin
|
|
84
|
+
d = MsSqlDefinition.new(sql)
|
|
85
|
+
rescue MsSqlDefinition::InvalidDefinition => e
|
|
86
|
+
raise Minitest::Assertion, "Encountered #{e.class} error when processing statement #{index}."
|
|
87
|
+
end
|
|
88
|
+
assert_equal name, d.name, "Name mismatch error #{d.name.inspect} <> #{name.inspect} for statement #{index}."
|
|
89
|
+
assert_equal type, d.type, "Type mismatch error #{d.type.inspect} <> #{type.inspect} for statement #{index}."
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
test 'should be invalid samples' do
|
|
94
|
+
INVALID_LIST.each_with_index do |(error,sql),index|
|
|
95
|
+
assert_raises error, "Expected error of type #{error} for statement #{index}." do
|
|
96
|
+
MsSqlDefinition.new(sql)
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
end
|
|
102
|
+
end
|