sorbet-rails 0.5.1 → 0.5.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +3 -10
- data/.travis.yml +0 -2
- data/Gemfile +2 -2
- data/README.md +2 -1
- data/Rakefile +4 -15
- data/lib/sorbet-rails/gem_plugins/kaminari_plugin.rb +3 -4
- data/lib/sorbet-rails/model_plugins/active_record_enum.rb +0 -8
- data/lib/sorbet-rails/model_plugins/active_record_finder_methods.rb +3 -0
- data/lib/sorbet-rails/model_plugins/active_record_named_scope.rb +4 -3
- data/lib/sorbet-rails/model_plugins/active_record_querying.rb +6 -7
- data/lib/sorbet-rails/model_plugins/active_relation_where_not.rb +2 -2
- data/lib/sorbet-rails/model_plugins/custom_finder_methods.rb +2 -5
- data/lib/sorbet-rails/model_plugins/enumerable_collections.rb +15 -0
- data/lib/sorbet-rails/model_plugins/plugins.rb +1 -1
- data/lib/sorbet-rails/model_rbi_formatter.rb +11 -13
- data/lib/sorbet-rails/model_utils.rb +49 -2
- data/lib/sorbet-rails/railtie.rb +16 -1
- data/lib/sorbet-rails/routes_rbi_formatter.rb +48 -34
- data/sorbet-rails.gemspec +1 -1
- data/spec/bin/run_all_specs.sh +0 -2
- data/spec/bin/run_spec.sh +1 -5
- data/spec/generators/rails-template.rb +24 -17
- data/spec/generators/sorbet_test_cases.rb +78 -40
- data/spec/rails_helper.rb +1 -1
- data/spec/sorbet_spec.rb +16 -14
- data/spec/support/v4.2/Gemfile.lock +6 -6
- data/spec/support/v4.2/app/models/application_record.rb +1 -2
- data/spec/support/v4.2/app/models/spell_book.rb +6 -0
- data/spec/support/v4.2/app/models/wizard.rb +2 -0
- data/spec/support/v4.2/db/migrate/20190620000003_create_spell_books.rb +1 -0
- data/spec/support/v4.2/db/schema.rb +1 -0
- data/spec/support/v4.2/sorbet_test_cases.rb +78 -40
- data/spec/support/v5.0/Gemfile.lock +6 -6
- data/spec/support/v5.0/app/models/application_record.rb +1 -2
- data/spec/support/v5.0/app/models/spell_book.rb +7 -1
- data/spec/support/v5.0/app/models/wizard.rb +2 -0
- data/spec/support/v5.0/config/initializers/new_framework_defaults.rb +1 -1
- data/spec/support/v5.0/db/migrate/20190620000003_create_spell_books.rb +1 -0
- data/spec/support/v5.0/db/schema.rb +1 -0
- data/spec/support/v5.0/sorbet_test_cases.rb +78 -40
- data/spec/support/v5.1/Gemfile.lock +6 -6
- data/spec/support/v5.1/app/models/application_record.rb +1 -2
- data/spec/support/v5.1/app/models/spell_book.rb +7 -1
- data/spec/support/v5.1/app/models/wizard.rb +2 -0
- data/spec/support/v5.1/db/migrate/20190620000003_create_spell_books.rb +1 -0
- data/spec/support/v5.1/db/schema.rb +1 -0
- data/spec/support/v5.1/sorbet_test_cases.rb +78 -40
- data/spec/support/v5.2/Gemfile +1 -1
- data/spec/support/v5.2/Gemfile.lock +7 -7
- data/spec/support/v5.2/app/models/application_record.rb +1 -2
- data/spec/support/v5.2/app/models/spell_book.rb +7 -1
- data/spec/support/v5.2/app/models/wizard.rb +2 -0
- data/spec/support/v5.2/db/migrate/20190620000003_create_spell_books.rb +1 -0
- data/spec/support/v5.2/db/schema.rb +1 -0
- data/spec/support/v5.2/sorbet_test_cases.rb +78 -40
- data/spec/support/v6.0/Gemfile +2 -3
- data/spec/support/v6.0/Gemfile.lock +64 -64
- data/spec/support/v6.0/app/models/application_record.rb +1 -2
- data/spec/support/v6.0/app/models/spell_book.rb +7 -1
- data/spec/support/v6.0/app/models/wizard.rb +2 -0
- data/spec/support/v6.0/config/puma.rb +3 -0
- data/spec/support/v6.0/db/migrate/20190620000003_create_spell_books.rb +1 -0
- data/spec/support/v6.0/db/schema.rb +1 -0
- data/spec/support/v6.0/sorbet_test_cases.rb +78 -40
- data/spec/test_data/v4.2/expected_no_routes.rbi +3 -10
- data/spec/test_data/v4.2/expected_potion.rbi +356 -52
- data/spec/test_data/v4.2/expected_routes.rbi +10 -4
- data/spec/test_data/v4.2/expected_spell_book.rbi +428 -53
- data/spec/test_data/v4.2/expected_srb_tc_output.txt +1 -80
- data/spec/test_data/v4.2/expected_wand.rbi +347 -19
- data/spec/test_data/v4.2/expected_wizard.rbi +356 -16
- data/spec/test_data/v4.2/expected_wizard_wo_spellbook.rbi +356 -16
- data/spec/test_data/v5.0/expected_internal_metadata.rbi +385 -51
- data/spec/test_data/v5.0/expected_no_routes.rbi +3 -10
- data/spec/test_data/v5.0/expected_potion.rbi +383 -52
- data/spec/test_data/v5.0/expected_routes.rbi +10 -4
- data/spec/test_data/v5.0/expected_schema_migration.rbi +385 -51
- data/spec/test_data/v5.0/expected_spell_book.rbi +455 -53
- data/spec/test_data/v5.0/expected_srb_tc_output.txt +1 -98
- data/spec/test_data/v5.0/expected_wand.rbi +374 -19
- data/spec/test_data/v5.0/expected_wizard.rbi +383 -16
- data/spec/test_data/v5.0/expected_wizard_wo_spellbook.rbi +383 -16
- data/spec/test_data/v5.1/expected_internal_metadata.rbi +403 -51
- data/spec/test_data/v5.1/expected_no_routes.rbi +3 -10
- data/spec/test_data/v5.1/expected_potion.rbi +401 -52
- data/spec/test_data/v5.1/expected_routes.rbi +10 -4
- data/spec/test_data/v5.1/expected_schema_migration.rbi +403 -51
- data/spec/test_data/v5.1/expected_spell_book.rbi +473 -53
- data/spec/test_data/v5.1/expected_srb_tc_output.txt +1 -80
- data/spec/test_data/v5.1/expected_wand.rbi +392 -19
- data/spec/test_data/v5.1/expected_wizard.rbi +401 -16
- data/spec/test_data/v5.1/expected_wizard_wo_spellbook.rbi +401 -16
- data/spec/test_data/v5.2-no-sorbet/expected_attachment.rbi +403 -51
- data/spec/test_data/v5.2-no-sorbet/expected_blob.rbi +421 -51
- data/spec/test_data/v5.2-no-sorbet/expected_internal_metadata.rbi +403 -51
- data/spec/test_data/v5.2-no-sorbet/expected_no_routes.rbi +3 -10
- data/spec/test_data/v5.2-no-sorbet/expected_potion.rbi +401 -52
- data/spec/test_data/v5.2-no-sorbet/expected_routes.rbi +15 -4
- data/spec/test_data/v5.2-no-sorbet/expected_schema_migration.rbi +403 -51
- data/spec/test_data/v5.2-no-sorbet/expected_spell_book.rbi +473 -53
- data/spec/test_data/v5.2-no-sorbet/expected_srb_tc_output.txt +1 -80
- data/spec/test_data/v5.2-no-sorbet/expected_wand.rbi +392 -19
- data/spec/test_data/v5.2-no-sorbet/expected_wizard.rbi +401 -16
- data/spec/test_data/v5.2-no-sorbet/expected_wizard_wo_spellbook.rbi +401 -16
- data/spec/test_data/v5.2/expected_attachment.rbi +403 -51
- data/spec/test_data/v5.2/expected_blob.rbi +421 -51
- data/spec/test_data/v5.2/expected_internal_metadata.rbi +403 -51
- data/spec/test_data/v5.2/expected_no_routes.rbi +3 -10
- data/spec/test_data/v5.2/expected_potion.rbi +401 -52
- data/spec/test_data/v5.2/expected_routes.rbi +15 -4
- data/spec/test_data/v5.2/expected_schema_migration.rbi +403 -51
- data/spec/test_data/v5.2/expected_spell_book.rbi +473 -53
- data/spec/test_data/v5.2/expected_srb_tc_output.txt +1 -80
- data/spec/test_data/v5.2/expected_wand.rbi +392 -19
- data/spec/test_data/v5.2/expected_wizard.rbi +401 -16
- data/spec/test_data/v5.2/expected_wizard_wo_spellbook.rbi +401 -16
- data/spec/test_data/v6.0/expected_attachment.rbi +439 -51
- data/spec/test_data/v6.0/expected_blob.rbi +457 -51
- data/spec/test_data/v6.0/expected_internal_metadata.rbi +439 -51
- data/spec/test_data/v6.0/expected_no_routes.rbi +3 -10
- data/spec/test_data/v6.0/expected_potion.rbi +437 -52
- data/spec/test_data/v6.0/expected_routes.rbi +25 -4
- data/spec/test_data/v6.0/expected_schema_migration.rbi +439 -51
- data/spec/test_data/v6.0/expected_spell_book.rbi +545 -53
- data/spec/test_data/v6.0/expected_srb_tc_output.txt +1 -80
- data/spec/test_data/v6.0/expected_wand.rbi +464 -19
- data/spec/test_data/v6.0/expected_wizard.rbi +473 -16
- data/spec/test_data/v6.0/expected_wizard_wo_spellbook.rbi +473 -16
- metadata +29 -581
- data/spec/support/v4.2/sorbet/config +0 -2
- data/spec/support/v4.2/sorbet/rbi/gems/actionmailer.rbi +0 -267
- data/spec/support/v4.2/sorbet/rbi/gems/actionpack.rbi +0 -2883
- data/spec/support/v4.2/sorbet/rbi/gems/actionview.rbi +0 -978
- data/spec/support/v4.2/sorbet/rbi/gems/activejob.rbi +0 -19
- data/spec/support/v4.2/sorbet/rbi/gems/activemodel.rbi +0 -335
- data/spec/support/v4.2/sorbet/rbi/gems/activerecord.rbi +0 -3385
- data/spec/support/v4.2/sorbet/rbi/gems/activesupport.rbi +0 -1892
- data/spec/support/v4.2/sorbet/rbi/gems/arel.rbi +0 -1109
- data/spec/support/v4.2/sorbet/rbi/gems/byebug.rbi +0 -1039
- data/spec/support/v4.2/sorbet/rbi/gems/concurrent-ruby.rbi +0 -218
- data/spec/support/v4.2/sorbet/rbi/gems/crass.rbi +0 -92
- data/spec/support/v4.2/sorbet/rbi/gems/erubis.rbi +0 -265
- data/spec/support/v4.2/sorbet/rbi/gems/globalid.rbi +0 -98
- data/spec/support/v4.2/sorbet/rbi/gems/i18n.rbi +0 -186
- data/spec/support/v4.2/sorbet/rbi/gems/jbuilder.rbi +0 -99
- data/spec/support/v4.2/sorbet/rbi/gems/loofah.rbi +0 -129
- data/spec/support/v4.2/sorbet/rbi/gems/mail.rbi +0 -1091
- data/spec/support/v4.2/sorbet/rbi/gems/mini_mime.rbi +0 -51
- data/spec/support/v4.2/sorbet/rbi/gems/minitest.rbi +0 -276
- data/spec/support/v4.2/sorbet/rbi/gems/nokogiri.rbi +0 -1010
- data/spec/support/v4.2/sorbet/rbi/gems/parlour.rbi +0 -214
- data/spec/support/v4.2/sorbet/rbi/gems/rack-test.rbi +0 -145
- data/spec/support/v4.2/sorbet/rbi/gems/rack.rbi +0 -490
- data/spec/support/v4.2/sorbet/rbi/gems/rails-deprecated_sanitizer.rbi +0 -13
- data/spec/support/v4.2/sorbet/rbi/gems/rails-dom-testing.rbi +0 -76
- data/spec/support/v4.2/sorbet/rbi/gems/rails-html-sanitizer.rbi +0 -91
- data/spec/support/v4.2/sorbet/rbi/gems/railties.rbi +0 -617
- data/spec/support/v4.2/sorbet/rbi/gems/sqlite3.rbi +0 -345
- data/spec/support/v4.2/sorbet/rbi/gems/thor.rbi +0 -401
- data/spec/support/v4.2/sorbet/rbi/gems/thread_safe.rbi +0 -81
- data/spec/support/v4.2/sorbet/rbi/gems/tzinfo.rbi +0 -407
- data/spec/support/v4.2/sorbet/rbi/sorbet-typed/lib/actionmailer/all/actionmailer.rbi +0 -13
- data/spec/support/v4.2/sorbet/rbi/sorbet-typed/lib/actionpack/all/actionpack.rbi +0 -468
- data/spec/support/v4.2/sorbet/rbi/sorbet-typed/lib/activemodel/all/activemodel.rbi +0 -422
- data/spec/support/v4.2/sorbet/rbi/sorbet-typed/lib/activerecord/all/activerecord.rbi +0 -1263
- data/spec/support/v4.2/sorbet/rbi/sorbet-typed/lib/activesupport/all/activesupport.rbi +0 -458
- data/spec/support/v4.2/sorbet/rbi/sorbet-typed/lib/bundler/all/bundler.rbi +0 -8575
- data/spec/support/v4.2/sorbet/rbi/sorbet-typed/lib/minitest/all/minitest.rbi +0 -99
- data/spec/support/v4.2/sorbet/rbi/sorbet-typed/lib/railties/all/railties.rbi +0 -22
- data/spec/support/v4.2/sorbet/rbi/sorbet-typed/lib/ruby/all/open3.rbi +0 -111
- data/spec/support/v4.2/sorbet/rbi/sorbet-typed/lib/ruby/all/resolv.rbi +0 -543
- data/spec/support/v4.2/sorbet/rbi/todo.rbi +0 -66
- data/spec/support/v5.0/sorbet/config +0 -2
- data/spec/support/v5.0/sorbet/rbi/gems/actionmailer.rbi +0 -331
- data/spec/support/v5.0/sorbet/rbi/gems/actionpack.rbi +0 -2987
- data/spec/support/v5.0/sorbet/rbi/gems/actionview.rbi +0 -1092
- data/spec/support/v5.0/sorbet/rbi/gems/activejob.rbi +0 -230
- data/spec/support/v5.0/sorbet/rbi/gems/activemodel.rbi +0 -562
- data/spec/support/v5.0/sorbet/rbi/gems/activerecord.rbi +0 -3684
- data/spec/support/v5.0/sorbet/rbi/gems/activesupport.rbi +0 -1943
- data/spec/support/v5.0/sorbet/rbi/gems/arel.rbi +0 -1222
- data/spec/support/v5.0/sorbet/rbi/gems/byebug.rbi +0 -1039
- data/spec/support/v5.0/sorbet/rbi/gems/concurrent-ruby.rbi +0 -1587
- data/spec/support/v5.0/sorbet/rbi/gems/crass.rbi +0 -92
- data/spec/support/v5.0/sorbet/rbi/gems/erubis.rbi +0 -265
- data/spec/support/v5.0/sorbet/rbi/gems/globalid.rbi +0 -98
- data/spec/support/v5.0/sorbet/rbi/gems/i18n.rbi +0 -191
- data/spec/support/v5.0/sorbet/rbi/gems/jbuilder.rbi +0 -99
- data/spec/support/v5.0/sorbet/rbi/gems/loofah.rbi +0 -129
- data/spec/support/v5.0/sorbet/rbi/gems/mail.rbi +0 -1091
- data/spec/support/v5.0/sorbet/rbi/gems/mini_mime.rbi +0 -51
- data/spec/support/v5.0/sorbet/rbi/gems/nokogiri.rbi +0 -1010
- data/spec/support/v5.0/sorbet/rbi/gems/parlour.rbi +0 -214
- data/spec/support/v5.0/sorbet/rbi/gems/puma.rbi +0 -570
- data/spec/support/v5.0/sorbet/rbi/gems/rack-test.rbi +0 -145
- data/spec/support/v5.0/sorbet/rbi/gems/rack.rbi +0 -489
- data/spec/support/v5.0/sorbet/rbi/gems/rails-html-sanitizer.rbi +0 -91
- data/spec/support/v5.0/sorbet/rbi/gems/railties.rbi +0 -472
- data/spec/support/v5.0/sorbet/rbi/gems/sqlite3.rbi +0 -345
- data/spec/support/v5.0/sorbet/rbi/gems/thread_safe.rbi +0 -81
- data/spec/support/v5.0/sorbet/rbi/gems/tzinfo.rbi +0 -407
- data/spec/support/v5.0/sorbet/rbi/sorbet-typed/lib/actionmailer/all/actionmailer.rbi +0 -13
- data/spec/support/v5.0/sorbet/rbi/sorbet-typed/lib/actionpack/all/actionpack.rbi +0 -468
- data/spec/support/v5.0/sorbet/rbi/sorbet-typed/lib/activemodel/all/activemodel.rbi +0 -422
- data/spec/support/v5.0/sorbet/rbi/sorbet-typed/lib/activerecord/all/activerecord.rbi +0 -1263
- data/spec/support/v5.0/sorbet/rbi/sorbet-typed/lib/activesupport/all/activesupport.rbi +0 -458
- data/spec/support/v5.0/sorbet/rbi/sorbet-typed/lib/bundler/all/bundler.rbi +0 -8575
- data/spec/support/v5.0/sorbet/rbi/sorbet-typed/lib/minitest/all/minitest.rbi +0 -99
- data/spec/support/v5.0/sorbet/rbi/sorbet-typed/lib/railties/all/railties.rbi +0 -22
- data/spec/support/v5.0/sorbet/rbi/sorbet-typed/lib/ruby/all/open3.rbi +0 -111
- data/spec/support/v5.0/sorbet/rbi/sorbet-typed/lib/ruby/all/resolv.rbi +0 -543
- data/spec/support/v5.0/sorbet/rbi/todo.rbi +0 -68
- data/spec/support/v5.1/sorbet/config +0 -2
- data/spec/support/v5.1/sorbet/rbi/gems/actionmailer.rbi +0 -382
- data/spec/support/v5.1/sorbet/rbi/gems/actionpack.rbi +0 -3027
- data/spec/support/v5.1/sorbet/rbi/gems/actionview.rbi +0 -1114
- data/spec/support/v5.1/sorbet/rbi/gems/activejob.rbi +0 -238
- data/spec/support/v5.1/sorbet/rbi/gems/activemodel.rbi +0 -547
- data/spec/support/v5.1/sorbet/rbi/gems/activerecord.rbi +0 -3943
- data/spec/support/v5.1/sorbet/rbi/gems/activesupport.rbi +0 -2042
- data/spec/support/v5.1/sorbet/rbi/gems/arel.rbi +0 -1220
- data/spec/support/v5.1/sorbet/rbi/gems/bindex.rbi +0 -36
- data/spec/support/v5.1/sorbet/rbi/gems/byebug.rbi +0 -1039
- data/spec/support/v5.1/sorbet/rbi/gems/concurrent-ruby.rbi +0 -1587
- data/spec/support/v5.1/sorbet/rbi/gems/crass.rbi +0 -92
- data/spec/support/v5.1/sorbet/rbi/gems/erubi.rbi +0 -26
- data/spec/support/v5.1/sorbet/rbi/gems/globalid.rbi +0 -98
- data/spec/support/v5.1/sorbet/rbi/gems/i18n.rbi +0 -191
- data/spec/support/v5.1/sorbet/rbi/gems/jbuilder.rbi +0 -99
- data/spec/support/v5.1/sorbet/rbi/gems/loofah.rbi +0 -129
- data/spec/support/v5.1/sorbet/rbi/gems/mail.rbi +0 -1091
- data/spec/support/v5.1/sorbet/rbi/gems/mini_mime.rbi +0 -51
- data/spec/support/v5.1/sorbet/rbi/gems/nokogiri.rbi +0 -1010
- data/spec/support/v5.1/sorbet/rbi/gems/parlour.rbi +0 -214
- data/spec/support/v5.1/sorbet/rbi/gems/puma.rbi +0 -570
- data/spec/support/v5.1/sorbet/rbi/gems/rack-test.rbi +0 -161
- data/spec/support/v5.1/sorbet/rbi/gems/rack.rbi +0 -489
- data/spec/support/v5.1/sorbet/rbi/gems/rails-html-sanitizer.rbi +0 -91
- data/spec/support/v5.1/sorbet/rbi/gems/railties.rbi +0 -498
- data/spec/support/v5.1/sorbet/rbi/gems/sqlite3.rbi +0 -353
- data/spec/support/v5.1/sorbet/rbi/gems/thread_safe.rbi +0 -81
- data/spec/support/v5.1/sorbet/rbi/gems/tzinfo.rbi +0 -407
- data/spec/support/v5.1/sorbet/rbi/gems/web-console.rbi +0 -73
- data/spec/support/v5.1/sorbet/rbi/sorbet-typed/lib/actionmailer/all/actionmailer.rbi +0 -13
- data/spec/support/v5.1/sorbet/rbi/sorbet-typed/lib/actionpack/all/actionpack.rbi +0 -468
- data/spec/support/v5.1/sorbet/rbi/sorbet-typed/lib/activemodel/all/activemodel.rbi +0 -422
- data/spec/support/v5.1/sorbet/rbi/sorbet-typed/lib/activerecord/all/activerecord.rbi +0 -1263
- data/spec/support/v5.1/sorbet/rbi/sorbet-typed/lib/activesupport/all/activesupport.rbi +0 -458
- data/spec/support/v5.1/sorbet/rbi/sorbet-typed/lib/bundler/all/bundler.rbi +0 -8575
- data/spec/support/v5.1/sorbet/rbi/sorbet-typed/lib/minitest/all/minitest.rbi +0 -99
- data/spec/support/v5.1/sorbet/rbi/sorbet-typed/lib/railties/all/railties.rbi +0 -22
- data/spec/support/v5.1/sorbet/rbi/sorbet-typed/lib/ruby/all/open3.rbi +0 -111
- data/spec/support/v5.1/sorbet/rbi/sorbet-typed/lib/ruby/all/resolv.rbi +0 -543
- data/spec/support/v5.1/sorbet/rbi/todo.rbi +0 -68
- data/spec/support/v5.2-no-sorbet/.gitignore +0 -31
- data/spec/support/v5.2-no-sorbet/Gemfile +0 -39
- data/spec/support/v5.2-no-sorbet/Gemfile.lock +0 -156
- data/spec/support/v5.2-no-sorbet/README.md +0 -24
- data/spec/support/v5.2-no-sorbet/Rakefile +0 -6
- data/spec/support/v5.2-no-sorbet/app/assets/config/manifest.js +0 -2
- data/spec/support/v5.2-no-sorbet/app/assets/images/.keep +0 -0
- data/spec/support/v5.2-no-sorbet/app/assets/stylesheets/application.css +0 -15
- data/spec/support/v5.2-no-sorbet/app/controllers/application_controller.rb +0 -2
- data/spec/support/v5.2-no-sorbet/app/controllers/concerns/.keep +0 -0
- data/spec/support/v5.2-no-sorbet/app/helpers/application_helper.rb +0 -2
- data/spec/support/v5.2-no-sorbet/app/helpers/bar_helper.rb +0 -2
- data/spec/support/v5.2-no-sorbet/app/helpers/baz_helper.rb +0 -2
- data/spec/support/v5.2-no-sorbet/app/helpers/foo_helper.rb +0 -2
- data/spec/support/v5.2-no-sorbet/app/jobs/application_job.rb +0 -2
- data/spec/support/v5.2-no-sorbet/app/mailers/application_mailer.rb +0 -4
- data/spec/support/v5.2-no-sorbet/app/models/application_record.rb +0 -4
- data/spec/support/v5.2-no-sorbet/app/models/concerns/.keep +0 -0
- data/spec/support/v5.2-no-sorbet/app/models/concerns/mythical.rb +0 -10
- data/spec/support/v5.2-no-sorbet/app/models/potion.rb +0 -4
- data/spec/support/v5.2-no-sorbet/app/models/spell_book.rb +0 -4
- data/spec/support/v5.2-no-sorbet/app/models/wand.rb +0 -16
- data/spec/support/v5.2-no-sorbet/app/models/wizard.rb +0 -13
- data/spec/support/v5.2-no-sorbet/app/views/layouts/application.html.erb +0 -14
- data/spec/support/v5.2-no-sorbet/app/views/layouts/mailer.html.erb +0 -13
- data/spec/support/v5.2-no-sorbet/app/views/layouts/mailer.text.erb +0 -1
- data/spec/support/v5.2-no-sorbet/bin/bundle +0 -3
- data/spec/support/v5.2-no-sorbet/bin/rails +0 -4
- data/spec/support/v5.2-no-sorbet/bin/rake +0 -4
- data/spec/support/v5.2-no-sorbet/bin/setup +0 -36
- data/spec/support/v5.2-no-sorbet/bin/update +0 -31
- data/spec/support/v5.2-no-sorbet/bin/yarn +0 -11
- data/spec/support/v5.2-no-sorbet/config.ru +0 -5
- data/spec/support/v5.2-no-sorbet/config/application.rb +0 -33
- data/spec/support/v5.2-no-sorbet/config/boot.rb +0 -3
- data/spec/support/v5.2-no-sorbet/config/database.yml +0 -25
- data/spec/support/v5.2-no-sorbet/config/environment.rb +0 -5
- data/spec/support/v5.2-no-sorbet/config/environments/development.rb +0 -54
- data/spec/support/v5.2-no-sorbet/config/environments/production.rb +0 -80
- data/spec/support/v5.2-no-sorbet/config/environments/test.rb +0 -46
- data/spec/support/v5.2-no-sorbet/config/initializers/application_controller_renderer.rb +0 -8
- data/spec/support/v5.2-no-sorbet/config/initializers/backtrace_silencers.rb +0 -7
- data/spec/support/v5.2-no-sorbet/config/initializers/content_security_policy.rb +0 -25
- data/spec/support/v5.2-no-sorbet/config/initializers/cookies_serializer.rb +0 -5
- data/spec/support/v5.2-no-sorbet/config/initializers/filter_parameter_logging.rb +0 -4
- data/spec/support/v5.2-no-sorbet/config/initializers/inflections.rb +0 -16
- data/spec/support/v5.2-no-sorbet/config/initializers/mime_types.rb +0 -4
- data/spec/support/v5.2-no-sorbet/config/initializers/sorbet_rails.rb +0 -3
- data/spec/support/v5.2-no-sorbet/config/initializers/wrap_parameters.rb +0 -14
- data/spec/support/v5.2-no-sorbet/config/locales/en.yml +0 -33
- data/spec/support/v5.2-no-sorbet/config/puma.rb +0 -34
- data/spec/support/v5.2-no-sorbet/config/routes.rb +0 -4
- data/spec/support/v5.2-no-sorbet/config/storage.yml +0 -34
- data/spec/support/v5.2-no-sorbet/db/migrate/20190620000001_create_wizards.rb +0 -12
- data/spec/support/v5.2-no-sorbet/db/migrate/20190620000002_create_wands.rb +0 -11
- data/spec/support/v5.2-no-sorbet/db/migrate/20190620000003_create_spell_books.rb +0 -8
- data/spec/support/v5.2-no-sorbet/db/migrate/20190620000004_add_more_column_types_to_wands.rb +0 -15
- data/spec/support/v5.2-no-sorbet/db/schema.rb +0 -47
- data/spec/support/v5.2-no-sorbet/db/seeds.rb +0 -7
- data/spec/support/v5.2-no-sorbet/lib/assets/.keep +0 -0
- data/spec/support/v5.2-no-sorbet/lib/mythical_rbi_plugin.rb +0 -16
- data/spec/support/v5.2-no-sorbet/lib/tasks/.keep +0 -0
- data/spec/support/v5.2-no-sorbet/log/.keep +0 -0
- data/spec/support/v5.2-no-sorbet/package.json +0 -5
- data/spec/support/v5.2-no-sorbet/sorbet_test_cases.rb +0 -123
- data/spec/support/v5.2-no-sorbet/storage/.keep +0 -0
- data/spec/support/v5.2-no-sorbet/tmp/.keep +0 -0
- data/spec/support/v5.2-no-sorbet/typed-override.yaml +0 -2
- data/spec/support/v5.2-no-sorbet/vendor/.keep +0 -0
- data/spec/support/v5.2/sorbet/config +0 -2
- data/spec/support/v5.2/sorbet/rbi/gems/actionmailer.rbi +0 -391
- data/spec/support/v5.2/sorbet/rbi/gems/actionpack.rbi +0 -3109
- data/spec/support/v5.2/sorbet/rbi/gems/actionview.rbi +0 -1128
- data/spec/support/v5.2/sorbet/rbi/gems/activejob.rbi +0 -244
- data/spec/support/v5.2/sorbet/rbi/gems/activemodel.rbi +0 -741
- data/spec/support/v5.2/sorbet/rbi/gems/activerecord.rbi +0 -3827
- data/spec/support/v5.2/sorbet/rbi/gems/activestorage.rbi +0 -173
- data/spec/support/v5.2/sorbet/rbi/gems/activesupport.rbi +0 -2167
- data/spec/support/v5.2/sorbet/rbi/gems/arel.rbi +0 -1252
- data/spec/support/v5.2/sorbet/rbi/gems/bindex.rbi +0 -36
- data/spec/support/v5.2/sorbet/rbi/gems/byebug.rbi +0 -1039
- data/spec/support/v5.2/sorbet/rbi/gems/concurrent-ruby.rbi +0 -1587
- data/spec/support/v5.2/sorbet/rbi/gems/crass.rbi +0 -92
- data/spec/support/v5.2/sorbet/rbi/gems/erubi.rbi +0 -26
- data/spec/support/v5.2/sorbet/rbi/gems/globalid.rbi +0 -98
- data/spec/support/v5.2/sorbet/rbi/gems/i18n.rbi +0 -191
- data/spec/support/v5.2/sorbet/rbi/gems/jbuilder.rbi +0 -99
- data/spec/support/v5.2/sorbet/rbi/gems/loofah.rbi +0 -129
- data/spec/support/v5.2/sorbet/rbi/gems/mail.rbi +0 -1091
- data/spec/support/v5.2/sorbet/rbi/gems/marcel.rbi +0 -12
- data/spec/support/v5.2/sorbet/rbi/gems/mini_mime.rbi +0 -51
- data/spec/support/v5.2/sorbet/rbi/gems/nokogiri.rbi +0 -1010
- data/spec/support/v5.2/sorbet/rbi/gems/parlour.rbi +0 -214
- data/spec/support/v5.2/sorbet/rbi/gems/puma.rbi +0 -570
- data/spec/support/v5.2/sorbet/rbi/gems/rack-test.rbi +0 -161
- data/spec/support/v5.2/sorbet/rbi/gems/rack.rbi +0 -493
- data/spec/support/v5.2/sorbet/rbi/gems/rails-html-sanitizer.rbi +0 -91
- data/spec/support/v5.2/sorbet/rbi/gems/railties.rbi +0 -508
- data/spec/support/v5.2/sorbet/rbi/gems/sqlite3.rbi +0 -353
- data/spec/support/v5.2/sorbet/rbi/gems/thread_safe.rbi +0 -81
- data/spec/support/v5.2/sorbet/rbi/gems/tzinfo.rbi +0 -407
- data/spec/support/v5.2/sorbet/rbi/gems/web-console.rbi +0 -73
- data/spec/support/v5.2/sorbet/rbi/sorbet-typed/lib/actionmailer/all/actionmailer.rbi +0 -13
- data/spec/support/v5.2/sorbet/rbi/sorbet-typed/lib/actionpack/all/actionpack.rbi +0 -468
- data/spec/support/v5.2/sorbet/rbi/sorbet-typed/lib/activemodel/all/activemodel.rbi +0 -422
- data/spec/support/v5.2/sorbet/rbi/sorbet-typed/lib/activerecord/>=5.2/activerecord.rbi +0 -17
- data/spec/support/v5.2/sorbet/rbi/sorbet-typed/lib/activerecord/all/activerecord.rbi +0 -1263
- data/spec/support/v5.2/sorbet/rbi/sorbet-typed/lib/activerecord/~>5.2.0/activerecord.rbi +0 -10
- data/spec/support/v5.2/sorbet/rbi/sorbet-typed/lib/activesupport/all/activesupport.rbi +0 -458
- data/spec/support/v5.2/sorbet/rbi/sorbet-typed/lib/bundler/all/bundler.rbi +0 -8575
- data/spec/support/v5.2/sorbet/rbi/sorbet-typed/lib/minitest/all/minitest.rbi +0 -99
- data/spec/support/v5.2/sorbet/rbi/sorbet-typed/lib/railties/all/railties.rbi +0 -22
- data/spec/support/v5.2/sorbet/rbi/sorbet-typed/lib/ruby/all/open3.rbi +0 -111
- data/spec/support/v5.2/sorbet/rbi/sorbet-typed/lib/ruby/all/resolv.rbi +0 -543
- data/spec/support/v5.2/sorbet/rbi/todo.rbi +0 -68
- data/spec/support/v6.0/sorbet/config +0 -2
- data/spec/support/v6.0/sorbet/rbi/gems/actionmailbox.rbi +0 -56
- data/spec/support/v6.0/sorbet/rbi/gems/actionmailer.rbi +0 -20
- data/spec/support/v6.0/sorbet/rbi/gems/actionpack.rbi +0 -2154
- data/spec/support/v6.0/sorbet/rbi/gems/actiontext.rbi +0 -32
- data/spec/support/v6.0/sorbet/rbi/gems/actionview.rbi +0 -1135
- data/spec/support/v6.0/sorbet/rbi/gems/activejob.rbi +0 -80
- data/spec/support/v6.0/sorbet/rbi/gems/activemodel.rbi +0 -751
- data/spec/support/v6.0/sorbet/rbi/gems/activerecord.rbi +0 -5414
- data/spec/support/v6.0/sorbet/rbi/gems/activestorage.rbi +0 -221
- data/spec/support/v6.0/sorbet/rbi/gems/activesupport.rbi +0 -2251
- data/spec/support/v6.0/sorbet/rbi/gems/bindex.rbi +0 -36
- data/spec/support/v6.0/sorbet/rbi/gems/byebug.rbi +0 -1039
- data/spec/support/v6.0/sorbet/rbi/gems/concurrent-ruby.rbi +0 -1587
- data/spec/support/v6.0/sorbet/rbi/gems/crass.rbi +0 -92
- data/spec/support/v6.0/sorbet/rbi/gems/erubi.rbi +0 -26
- data/spec/support/v6.0/sorbet/rbi/gems/globalid.rbi +0 -98
- data/spec/support/v6.0/sorbet/rbi/gems/i18n.rbi +0 -191
- data/spec/support/v6.0/sorbet/rbi/gems/jbuilder.rbi +0 -99
- data/spec/support/v6.0/sorbet/rbi/gems/loofah.rbi +0 -129
- data/spec/support/v6.0/sorbet/rbi/gems/mail.rbi +0 -1542
- data/spec/support/v6.0/sorbet/rbi/gems/marcel.rbi +0 -12
- data/spec/support/v6.0/sorbet/rbi/gems/mini_mime.rbi +0 -51
- data/spec/support/v6.0/sorbet/rbi/gems/nokogiri.rbi +0 -1010
- data/spec/support/v6.0/sorbet/rbi/gems/parlour.rbi +0 -214
- data/spec/support/v6.0/sorbet/rbi/gems/puma.rbi +0 -570
- data/spec/support/v6.0/sorbet/rbi/gems/rack-test.rbi +0 -161
- data/spec/support/v6.0/sorbet/rbi/gems/rack.rbi +0 -481
- data/spec/support/v6.0/sorbet/rbi/gems/rails-html-sanitizer.rbi +0 -91
- data/spec/support/v6.0/sorbet/rbi/gems/railties.rbi +0 -548
- data/spec/support/v6.0/sorbet/rbi/gems/sqlite3.rbi +0 -353
- data/spec/support/v6.0/sorbet/rbi/gems/thread_safe.rbi +0 -81
- data/spec/support/v6.0/sorbet/rbi/gems/tzinfo.rbi +0 -407
- data/spec/support/v6.0/sorbet/rbi/gems/web-console.rbi +0 -72
- data/spec/support/v6.0/sorbet/rbi/gems/zeitwerk.rbi +0 -127
- data/spec/support/v6.0/sorbet/rbi/sorbet-typed/lib/actionmailer/all/actionmailer.rbi +0 -13
- data/spec/support/v6.0/sorbet/rbi/sorbet-typed/lib/actionpack/all/actionpack.rbi +0 -468
- data/spec/support/v6.0/sorbet/rbi/sorbet-typed/lib/activemodel/all/activemodel.rbi +0 -422
- data/spec/support/v6.0/sorbet/rbi/sorbet-typed/lib/activerecord/>=5.2/activerecord.rbi +0 -17
- data/spec/support/v6.0/sorbet/rbi/sorbet-typed/lib/activerecord/all/activerecord.rbi +0 -1263
- data/spec/support/v6.0/sorbet/rbi/sorbet-typed/lib/activerecord/~>6.0.0.rc1/activerecord.rbi +0 -10
- data/spec/support/v6.0/sorbet/rbi/sorbet-typed/lib/activesupport/>=6.0.0.rc1/activesupport.rbi +0 -23
- data/spec/support/v6.0/sorbet/rbi/sorbet-typed/lib/activesupport/all/activesupport.rbi +0 -458
- data/spec/support/v6.0/sorbet/rbi/sorbet-typed/lib/bundler/all/bundler.rbi +0 -8575
- data/spec/support/v6.0/sorbet/rbi/sorbet-typed/lib/minitest/all/minitest.rbi +0 -99
- data/spec/support/v6.0/sorbet/rbi/sorbet-typed/lib/railties/all/railties.rbi +0 -22
- data/spec/support/v6.0/sorbet/rbi/sorbet-typed/lib/ruby/all/open3.rbi +0 -111
- data/spec/support/v6.0/sorbet/rbi/sorbet-typed/lib/ruby/all/resolv.rbi +0 -543
- data/spec/support/v6.0/sorbet/rbi/todo.rbi +0 -70
@@ -4,62 +4,76 @@ class SorbetRails::RoutesRbiFormatter
|
|
4
4
|
|
5
5
|
sig { void }
|
6
6
|
def initialize
|
7
|
-
@
|
7
|
+
@parlour = T.let(Parlour::RbiGenerator.new, Parlour::RbiGenerator)
|
8
8
|
end
|
9
9
|
|
10
10
|
sig { params(title: String).void }
|
11
11
|
def section_title(title)
|
12
|
-
|
12
|
+
nil
|
13
13
|
end
|
14
14
|
|
15
15
|
sig { params(routes: T::Array[T::Hash[Symbol, String]]).void }
|
16
16
|
def section(routes)
|
17
|
-
|
17
|
+
draw_section(routes)
|
18
18
|
end
|
19
19
|
|
20
|
-
sig { params(routes: T.untyped).
|
20
|
+
sig { params(routes: T.untyped).void }
|
21
21
|
def header(routes)
|
22
|
+
@parlour.root.add_comments([
|
23
|
+
'This is an autogenerated file for Rails routes.',
|
24
|
+
'Please run rake rails_rbi:routes to regenerate.'
|
25
|
+
])
|
26
|
+
|
27
|
+
@parlour.root.create_class('ActionController::Base') do |klass|
|
28
|
+
klass.create_include('GeneratedUrlHelpers')
|
29
|
+
end
|
30
|
+
|
31
|
+
@parlour.root.create_module('ActionView::Helpers') do |mod|
|
32
|
+
mod.create_include('GeneratedUrlHelpers')
|
33
|
+
end
|
22
34
|
end
|
23
35
|
|
24
36
|
sig { params(routes: T.untyped, filter: T.untyped).void }
|
25
|
-
def no_routes(routes=nil, filter=nil)
|
26
|
-
@
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
MESSAGE
|
37
|
+
def no_routes(routes = nil, filter = nil)
|
38
|
+
@parlour.root.add_comments([
|
39
|
+
'You do not have any routes defined!',
|
40
|
+
'Please add some routes in config/routes.rb.',
|
41
|
+
'For more information about routes, see the Rails guide: https://guides.rubyonrails.org/routing.html.'
|
42
|
+
])
|
32
43
|
end
|
33
44
|
|
34
45
|
sig { returns(String) }
|
35
46
|
def result
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
# typed: strong
|
40
|
-
class ActionController::Base
|
41
|
-
extend T::Sig
|
42
|
-
|
43
|
-
#{@buffer.join("\n").indent(2)}
|
44
|
-
end
|
45
|
-
MESSAGE
|
47
|
+
# by default parlour doesn't add a \n at the end of file
|
48
|
+
@parlour.rbi + "\n"
|
46
49
|
end
|
47
50
|
|
48
51
|
private
|
49
|
-
|
52
|
+
|
53
|
+
sig { params(routes: T::Array[T::Hash[Symbol, String]]).void }
|
50
54
|
def draw_section(routes)
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
55
|
+
@parlour.root.create_module('GeneratedUrlHelpers') do |klass|
|
56
|
+
routes.each do |r|
|
57
|
+
next unless r[:name].present?
|
58
|
+
|
59
|
+
klass.add_comment_to_next_child("Sigs for route #{r[:path]}")
|
60
|
+
klass.create_method(
|
61
|
+
"#{r[:name]}_path",
|
62
|
+
parameters: [
|
63
|
+
Parlour::RbiGenerator::Parameter.new("*args", type: "T.untyped"),
|
64
|
+
Parlour::RbiGenerator::Parameter.new("**kwargs", type: "T.untyped")
|
65
|
+
],
|
66
|
+
return_type: "String"
|
67
|
+
)
|
68
|
+
klass.create_method(
|
69
|
+
"#{r[:name]}_url",
|
70
|
+
parameters: [
|
71
|
+
Parlour::RbiGenerator::Parameter.new("*args", type: "T.untyped"),
|
72
|
+
Parlour::RbiGenerator::Parameter.new("**kwargs", type: "T.untyped")
|
73
|
+
],
|
74
|
+
return_type: "String"
|
75
|
+
)
|
62
76
|
end
|
63
|
-
end
|
77
|
+
end
|
64
78
|
end
|
65
79
|
end
|
data/sorbet-rails.gemspec
CHANGED
data/spec/bin/run_all_specs.sh
CHANGED
data/spec/bin/run_spec.sh
CHANGED
@@ -6,11 +6,7 @@ wd="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
6
6
|
current_dir=$(pwd)
|
7
7
|
|
8
8
|
if [[ -z $RAILS_VERSION ]]; then
|
9
|
-
|
10
|
-
rails_dir="$wd/../support/v5.2"
|
11
|
-
else
|
12
|
-
rails_dir="$wd/../support/v5.2-no-sorbet"
|
13
|
-
fi
|
9
|
+
rails_dir="$wd/../support/v5.2"
|
14
10
|
else
|
15
11
|
rails_dir="$wd/../support/v$RAILS_VERSION"
|
16
12
|
fi
|
@@ -67,16 +67,10 @@ def create_helpers
|
|
67
67
|
end
|
68
68
|
|
69
69
|
def create_models
|
70
|
-
if ENV['RAILS_VERSION']
|
71
|
-
inject_into_file "app/models/application_record.rb", after: "self.abstract_class = true\n" do
|
72
|
-
# Need to include indentation manually
|
73
|
-
" scope :recent, -> { where('created_at > ?', 1.month.ago) }\n"
|
74
|
-
end
|
75
|
-
else
|
70
|
+
if ENV['RAILS_VERSION'] == '4.2'
|
76
71
|
file "app/models/application_record.rb", <<~RUBY
|
77
72
|
class ApplicationRecord < ActiveRecord::Base
|
78
73
|
self.abstract_class = true
|
79
|
-
scope :recent, -> { where('created_at > ?', 1.month.ago) }
|
80
74
|
end
|
81
75
|
RUBY
|
82
76
|
end
|
@@ -85,6 +79,12 @@ def create_models
|
|
85
79
|
class SpellBook < ApplicationRecord
|
86
80
|
validates :name, length: { minimum: 5 }, presence: true
|
87
81
|
belongs_to :wizard
|
82
|
+
|
83
|
+
enum book_type: {
|
84
|
+
unclassified: 0,
|
85
|
+
biology: 1,
|
86
|
+
dark_art: 999,
|
87
|
+
}
|
88
88
|
end
|
89
89
|
RUBY
|
90
90
|
|
@@ -98,16 +98,16 @@ def create_models
|
|
98
98
|
file "app/models/wand.rb", <<~RUBY
|
99
99
|
class Wand < ApplicationRecord
|
100
100
|
include Mythical
|
101
|
-
|
101
|
+
|
102
102
|
enum core_type: {
|
103
103
|
phoenix_feather: 0,
|
104
104
|
dragon_heartstring: 1,
|
105
105
|
unicorn_tail_hair: 2,
|
106
106
|
basilisk_horn: 3,
|
107
107
|
}
|
108
|
-
|
108
|
+
|
109
109
|
belongs_to :wizard
|
110
|
-
|
110
|
+
|
111
111
|
def wood_type
|
112
112
|
'Type ' + super
|
113
113
|
end
|
@@ -127,6 +127,8 @@ def create_models
|
|
127
127
|
|
128
128
|
has_one :wand
|
129
129
|
has_many :spell_books
|
130
|
+
|
131
|
+
scope :recent, -> { where('created_at > ?', 1.month.ago) }
|
130
132
|
end
|
131
133
|
RUBY
|
132
134
|
|
@@ -159,7 +161,7 @@ def create_migrations
|
|
159
161
|
t.integer :house
|
160
162
|
t.string :parent_email
|
161
163
|
t.text :notes
|
162
|
-
|
164
|
+
|
163
165
|
t.timestamps
|
164
166
|
end
|
165
167
|
end
|
@@ -173,7 +175,7 @@ def create_migrations
|
|
173
175
|
t.references :wizard, unique: true, null: false
|
174
176
|
t.string :wood_type
|
175
177
|
t.integer :core_type
|
176
|
-
|
178
|
+
|
177
179
|
t.timestamps
|
178
180
|
end
|
179
181
|
end
|
@@ -186,6 +188,7 @@ def create_migrations
|
|
186
188
|
create_table :spell_books do |t|
|
187
189
|
t.string :name
|
188
190
|
t.references :wizard
|
191
|
+
t.integer :book_type, null: false, default: 0
|
189
192
|
end
|
190
193
|
end
|
191
194
|
end
|
@@ -228,7 +231,7 @@ end
|
|
228
231
|
source_paths
|
229
232
|
|
230
233
|
if ['4.2', '5.0'].include?(ENV["RAILS_VERSION"])
|
231
|
-
File.open('Gemfile', 'r+') do |f|
|
234
|
+
File.open('Gemfile', 'r+') do |f|
|
232
235
|
out = ""
|
233
236
|
f.each do |line|
|
234
237
|
# We remove sdoc and web-console because they misbehave.
|
@@ -252,16 +255,20 @@ after_bundle do
|
|
252
255
|
create_models
|
253
256
|
create_migrations
|
254
257
|
add_sorbet_test_files
|
255
|
-
|
258
|
+
|
259
|
+
bundle_version = ENV["RAILS_VERSION"] == "4.2" ? "_1.17.3_" : ""
|
260
|
+
|
256
261
|
Bundler.with_clean_env do
|
257
262
|
# Rails 4.2 doesn't have the rails_command method, so just use run.
|
258
|
-
run "bundle exec rake db:migrate"
|
263
|
+
run "bundle #{bundle_version} exec rake db:migrate"
|
259
264
|
end
|
260
265
|
|
261
266
|
if ENV["RUN_WITH_SORBET"] != 'false'
|
262
267
|
Bundler.with_clean_env do
|
263
|
-
run "SRB_YES=true bundle exec srb init"
|
264
|
-
run "bundle exec rake rails_rbi:all"
|
268
|
+
run "SRB_YES=true bundle #{bundle_version} exec srb init"
|
269
|
+
run "bundle #{bundle_version} exec rake rails_rbi:all"
|
270
|
+
run "bundle #{bundle_version} exec srbi rbi hidden-definitions"
|
271
|
+
run "bundle #{bundle_version} exec srb rbi todo"
|
265
272
|
end
|
266
273
|
end
|
267
274
|
say "Done!"
|
@@ -11,37 +11,30 @@ T.assert_type!(wizard.name, T.nilable(String))
|
|
11
11
|
T.assert_type!(wizard.wand, T.nilable(Wand))
|
12
12
|
T.assert_type!(T.must(wizard.wand).wizard, Wizard)
|
13
13
|
|
14
|
-
|
15
|
-
T.
|
14
|
+
# need the exact type to works! they aren't subclass of each other
|
15
|
+
# T.assert_type!(wizard.spell_books, SpellBook::ActiveRecord_Relation)
|
16
|
+
# T.assert_type!(wizard.spell_books, SpellBook::ActiveRecord_AssociationRelation)
|
17
|
+
T.assert_type!(wizard.spell_books, SpellBook::ActiveRecord_Associations_CollectionProxy)
|
16
18
|
|
17
19
|
# -- model relation
|
18
20
|
# default
|
19
|
-
T.assert_type!(Wizard.all,
|
20
|
-
T.reveal_type(Wizard.all) # Wizard::ActiveRecord_Relation
|
21
|
+
T.assert_type!(Wizard.all, Wizard::ActiveRecord_Relation)
|
21
22
|
|
22
23
|
# custom scope
|
23
|
-
T.assert_type!(Wizard.recent,
|
24
|
-
T.reveal_type(Wizard.recent)
|
24
|
+
T.assert_type!(Wizard.recent, Wizard::ActiveRecord_Relation)
|
25
25
|
|
26
26
|
# enum scope
|
27
|
-
T.assert_type!(Wizard.Gryffindor,
|
28
|
-
T.reveal_type(Wizard.Gryffindor)
|
29
|
-
|
30
|
-
# chained scopes
|
31
|
-
T.assert_type!(Wizard.Gryffindor.recent, ActiveRecord::Relation)
|
32
|
-
T.reveal_type(Wizard.Gryffindor.recent)
|
33
|
-
T.assert_type!(Wizard.Gryffindor.recent.unscoped, ActiveRecord::Relation)
|
34
|
-
T.reveal_type(Wizard.Gryffindor.recent.unscoped)
|
27
|
+
T.assert_type!(Wizard.Gryffindor, Wizard::ActiveRecord_Relation)
|
35
28
|
|
36
29
|
# ActiveRecord Querying
|
37
|
-
T.assert_type!(Wizard.
|
38
|
-
T.
|
39
|
-
T.assert_type!(Wizard.
|
40
|
-
T.
|
41
|
-
T.assert_type!(Wizard.
|
42
|
-
T.
|
43
|
-
T.assert_type!(Wizard.
|
44
|
-
T.
|
30
|
+
T.assert_type!(Wizard.Gryffindor.recent, Wizard::ActiveRecord_Relation)
|
31
|
+
T.assert_type!(Wizard.Gryffindor.recent.unscoped, Wizard::ActiveRecord_Relation)
|
32
|
+
T.assert_type!(Wizard.where(id: 1), Wizard::ActiveRecord_Relation)
|
33
|
+
T.assert_type!(Wizard.where(id: 1).recent, Wizard::ActiveRecord_Relation)
|
34
|
+
T.assert_type!(Wizard.where.not(id: 1), Wizard::ActiveRecord_Relation)
|
35
|
+
T.assert_type!(Wizard.preload(:spell_books), Wizard::ActiveRecord_Relation)
|
36
|
+
T.assert_type!(Wizard.eager_load(:spell_books), Wizard::ActiveRecord_Relation)
|
37
|
+
T.assert_type!(Wizard.order(:id), Wizard::ActiveRecord_Relation)
|
45
38
|
|
46
39
|
# Finder methods -- Model
|
47
40
|
T.assert_type!(Wizard.exists?(name: 'Test'), T::Boolean)
|
@@ -73,51 +66,96 @@ T.assert_type!(Wizard.all.find_by_id!(wizard.id), Wizard)
|
|
73
66
|
|
74
67
|
# Finder methods -- CollectionProxy
|
75
68
|
spell_book = wizard.spell_books.first!
|
76
|
-
|
77
|
-
T.assert_type!(
|
78
|
-
T.assert_type!(
|
79
|
-
|
80
|
-
T.assert_type!(
|
81
|
-
|
82
|
-
T.assert_type!(
|
83
|
-
T.assert_type!(
|
84
|
-
T.assert_type!(
|
85
|
-
T.assert_type!(
|
86
|
-
T.assert_type!(
|
87
|
-
T.assert_type!(
|
88
|
-
|
89
|
-
#
|
69
|
+
spell_books = wizard.spell_books
|
70
|
+
T.assert_type!(spell_books.exists?(name: 'Fantastic Beasts'), T::Boolean)
|
71
|
+
T.assert_type!(spell_books.find(spell_book.id), SpellBook)
|
72
|
+
T.assert_type!(spell_books.first!, SpellBook)
|
73
|
+
# T.assert_type!(spell_books.first, T.nilable(SpellBook)) # TODO fix sig for 4.2 and 5.0
|
74
|
+
T.assert_type!(spell_books.last!, SpellBook)
|
75
|
+
# T.assert_type!(spell_books.last, T.nilable(SpellBook)) # TODO fix sig for 4.2 and 5.0
|
76
|
+
T.assert_type!(spell_books.first_n(5), T::Array[SpellBook])
|
77
|
+
T.assert_type!(spell_books.last_n(5), T::Array[SpellBook])
|
78
|
+
T.assert_type!(spell_books.find_by(name: 'Fantastic Beasts'), T.nilable(SpellBook))
|
79
|
+
T.assert_type!(spell_books.find_by!(name: 'Fantastic Beasts'), SpellBook)
|
80
|
+
T.assert_type!(spell_books.find_by_id(spell_book.id), T.nilable(SpellBook))
|
81
|
+
T.assert_type!(spell_books.find_by_id!(spell_book.id), SpellBook)
|
82
|
+
# CollectionProxy query also typed correctly!
|
83
|
+
T.assert_type!(spell_books.where(id: 1), SpellBook::ActiveRecord_AssociationRelation)
|
84
|
+
T.assert_type!(spell_books.preload(:wizard), SpellBook::ActiveRecord_AssociationRelation)
|
85
|
+
T.assert_type!(spell_books.eager_load(:wizard), SpellBook::ActiveRecord_AssociationRelation)
|
86
|
+
T.assert_type!(spell_books.order(:id), SpellBook::ActiveRecord_AssociationRelation)
|
87
|
+
T.assert_type!(spell_books.where.not(id: 1), SpellBook::ActiveRecord_AssociationRelation)
|
88
|
+
T.assert_type!(spell_books.biology, SpellBook::ActiveRecord_AssociationRelation)
|
89
|
+
|
90
|
+
# finder methods -- AssociationRelation
|
91
|
+
spell_books_query = spell_books.where(id: 1)
|
92
|
+
T.assert_type!(spell_books_query.exists?(name: 'Fantastic Beasts'), T::Boolean)
|
93
|
+
T.assert_type!(spell_books_query.find(spell_book.id), SpellBook)
|
94
|
+
T.assert_type!(spell_books_query.first!, SpellBook)
|
95
|
+
# T.assert_type!(spell_books_query.first, T.nilable(SpellBook)) # TODO fix sig for 4.2 and 5.0
|
96
|
+
T.assert_type!(spell_books_query.last!, SpellBook)
|
97
|
+
# T.assert_type!(spell_books_query.last, T.nilable(SpellBook)) # TODO fix sig for 4.2 and 5.0
|
98
|
+
T.assert_type!(spell_books_query.first_n(5), T::Array[SpellBook])
|
99
|
+
T.assert_type!(spell_books_query.last_n(5), T::Array[SpellBook])
|
100
|
+
T.assert_type!(spell_books_query.find_by(name: 'Fantastic Beasts'), T.nilable(SpellBook))
|
101
|
+
T.assert_type!(spell_books_query.find_by!(name: 'Fantastic Beasts'), SpellBook)
|
102
|
+
T.assert_type!(spell_books_query.find_by_id(spell_book.id), T.nilable(SpellBook))
|
103
|
+
T.assert_type!(spell_books_query.find_by_id!(spell_book.id), SpellBook)
|
104
|
+
# Query chaining
|
105
|
+
T.assert_type!(spell_books_query.preload(:wizard), SpellBook::ActiveRecord_AssociationRelation)
|
106
|
+
T.assert_type!(spell_books_query.eager_load(:wizard), SpellBook::ActiveRecord_AssociationRelation)
|
107
|
+
T.assert_type!(spell_books_query.order(:id), SpellBook::ActiveRecord_AssociationRelation)
|
108
|
+
T.assert_type!(spell_books_query.where.not(id: 1), SpellBook::ActiveRecord_AssociationRelation)
|
109
|
+
T.assert_type!(spell_books_query.biology, SpellBook::ActiveRecord_AssociationRelation)
|
110
|
+
|
111
|
+
# Enumerable on activerecord relation
|
90
112
|
T.assert_type!(Wizard.all.to_a, T::Array[Wizard])
|
91
113
|
Wizard.all.each do |w|
|
92
114
|
T.assert_type!(w, Wizard)
|
93
115
|
end
|
94
116
|
Wizard.all.map do |w|
|
95
|
-
T.assert_type!(w, Wizard)
|
117
|
+
T.assert_type!(w, Wizard)
|
96
118
|
end
|
97
119
|
Wizard.all.to_a.map do |w|
|
98
120
|
T.assert_type!(w, Wizard)
|
99
121
|
end
|
100
122
|
|
123
|
+
# enum on association collection proxy
|
101
124
|
T.assert_type!(wizard.spell_books.to_a, T::Array[SpellBook])
|
102
125
|
wizard.spell_books.each do |sp|
|
103
126
|
T.assert_type!(sp, SpellBook)
|
104
127
|
end
|
105
128
|
wizard.spell_books.map do |sp|
|
106
|
-
T.assert_type!(sp, SpellBook)
|
129
|
+
T.assert_type!(sp, SpellBook)
|
107
130
|
end
|
108
131
|
wizard.spell_books.to_a.map do |sp|
|
109
|
-
T.assert_type!(sp, SpellBook)
|
132
|
+
T.assert_type!(sp, SpellBook)
|
133
|
+
end
|
134
|
+
|
135
|
+
# enum on association relation
|
136
|
+
T.assert_type!(wizard.spell_books.where(id: 1).to_a, T::Array[SpellBook])
|
137
|
+
wizard.spell_books.where(id: 1).each do |sp|
|
138
|
+
T.assert_type!(sp, SpellBook)
|
139
|
+
end
|
140
|
+
wizard.spell_books.where(id: 1).map do |sp|
|
141
|
+
T.assert_type!(sp, SpellBook)
|
142
|
+
end
|
143
|
+
wizard.spell_books.where(id: 1).to_a.map do |sp|
|
144
|
+
T.assert_type!(sp, SpellBook)
|
110
145
|
end
|
111
146
|
|
112
147
|
# Model columns
|
113
148
|
T.assert_type!(wizard.id, Integer)
|
114
149
|
T.assert_type!(wizard.id?, T::Boolean)
|
115
150
|
T.assert_type!(wizard.notes, T.nilable(String))
|
116
|
-
T.assert_type!(wizard.house, T.nilable(String))
|
117
151
|
|
118
152
|
# Model enum
|
119
153
|
T.assert_type!(wizard.Gryffindor?, T::Boolean)
|
154
|
+
T.assert_type!(wizard.house, T.nilable(String))
|
120
155
|
T.assert_type!(Wizard.houses, T::Hash[T.any(String, Symbol), Integer])
|
156
|
+
T.assert_type!(spell_book.biology?, T::Boolean)
|
157
|
+
T.assert_type!(spell_book.book_type, String)
|
158
|
+
T.assert_type!(SpellBook.book_types, T::Hash[T.any(String, Symbol), Integer])
|
121
159
|
|
122
160
|
# Mythical plugin
|
123
161
|
T.assert_type!(Wand.mythicals, T::Array[Wand])
|
data/spec/rails_helper.rb
CHANGED
data/spec/sorbet_spec.rb
CHANGED
@@ -12,6 +12,7 @@ RSpec.describe 'sorbet' do
|
|
12
12
|
SpellBook.create!(
|
13
13
|
name: 'Fantastic Beasts',
|
14
14
|
wizard: harry,
|
15
|
+
book_type: :biology,
|
15
16
|
)
|
16
17
|
end
|
17
18
|
let!(:wand) do
|
@@ -23,13 +24,11 @@ RSpec.describe 'sorbet' do
|
|
23
24
|
end
|
24
25
|
|
25
26
|
before(:all) do
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
)
|
32
|
-
end
|
27
|
+
# only initialize sorbet once for all tests because it is slow
|
28
|
+
stdout, stderr, status = Open3.capture3(
|
29
|
+
{'SRB_YES' => '1'}, 'bundle', 'exec', 'srb', 'init',
|
30
|
+
chdir: Rails.root.to_path,
|
31
|
+
)
|
33
32
|
|
34
33
|
# run sorbet-rails rake tasks
|
35
34
|
Rake::Task['rails_rbi:all'].invoke
|
@@ -41,8 +40,15 @@ RSpec.describe 'sorbet' do
|
|
41
40
|
'bundle', 'exec', 'srb', 'rbi', 'hidden-definitions',
|
42
41
|
chdir: Rails.root.to_path,
|
43
42
|
)
|
44
|
-
|
45
|
-
puts stderr, status
|
43
|
+
puts '--- srb rbi hidden-definitions ---'
|
44
|
+
puts stdout, stderr, status
|
45
|
+
|
46
|
+
stdout, stderr, status = Open3.capture3(
|
47
|
+
'bundle', 'exec', 'srb', 'rbi', 'todo',
|
48
|
+
chdir: Rails.root.to_path,
|
49
|
+
)
|
50
|
+
puts '--- srb rbi todo ---'
|
51
|
+
puts stdout, stderr, status
|
46
52
|
end
|
47
53
|
|
48
54
|
it 'returns expected sorbet tc result' do
|
@@ -50,13 +56,9 @@ RSpec.describe 'sorbet' do
|
|
50
56
|
'bundle', 'exec', 'srb', 'tc', '--typed-override=typed-override.yaml',
|
51
57
|
chdir: Rails.root.to_path,
|
52
58
|
)
|
53
|
-
expect(stdout).to eql('')
|
54
|
-
expect(status.exitstatus).to eql(1) # T.reveal_type is considered an error
|
55
59
|
expected_file_path = 'expected_srb_tc_output.txt'
|
56
|
-
# if ENV['SORBET_VERSION']
|
57
|
-
# expected_file_path = File.join(ENV['SORBET_VERSION'], expected_file_path)
|
58
|
-
# end
|
59
60
|
expect_match_file(stderr, expected_file_path)
|
61
|
+
expect(stdout).to eql('')
|
60
62
|
end
|
61
63
|
|
62
64
|
it 'passes sorbet dynamic checks' do
|