sorbet-rails 0.6.2 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (204) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +2 -0
  3. data/README.md +3 -3
  4. data/lib/bundled_rbi/typed_enum.rbi +7 -0
  5. data/lib/sorbet-rails.rb +0 -2
  6. data/lib/sorbet-rails/active_record_rbi_formatter.rb +301 -0
  7. data/lib/sorbet-rails/config.rb +0 -1
  8. data/lib/sorbet-rails/dependent_gem_rbis/activerecord.rbi +11 -0
  9. data/lib/sorbet-rails/deprecation.rb +5 -0
  10. data/lib/sorbet-rails/gem_plugins/active_flag_plugin.rb +0 -1
  11. data/lib/sorbet-rails/gem_plugins/paperclip_plugin.rb +0 -1
  12. data/lib/sorbet-rails/model_plugins/active_record_assoc.rb +36 -8
  13. data/lib/sorbet-rails/model_plugins/active_record_attribute.rb +20 -9
  14. data/lib/sorbet-rails/model_plugins/active_record_enum.rb +0 -1
  15. data/lib/sorbet-rails/model_plugins/active_record_named_scope.rb +15 -6
  16. data/lib/sorbet-rails/model_plugins/active_record_querying.rb +34 -3
  17. data/lib/sorbet-rails/model_plugins/active_storage_methods.rb +1 -1
  18. data/lib/sorbet-rails/model_plugins/base.rb +10 -0
  19. data/lib/sorbet-rails/model_plugins/enumerable_collections.rb +0 -50
  20. data/lib/sorbet-rails/model_plugins/plugins.rb +0 -3
  21. data/lib/sorbet-rails/model_rbi_formatter.rb +6 -10
  22. data/lib/sorbet-rails/model_utils.rb +83 -36
  23. data/lib/sorbet-rails/rails_mixins/generated_url_helpers.rb +2 -3
  24. data/lib/sorbet-rails/railtie.rb +0 -2
  25. data/lib/sorbet-rails/tasks/rails_rbi.rake +32 -24
  26. data/sorbet-rails.gemspec +2 -2
  27. data/spec/active_record_rbi_formatter_spec.rb +24 -0
  28. data/spec/generators/rails-template.rb +90 -6
  29. data/spec/generators/sorbet_test_cases.rb +204 -122
  30. data/spec/model_rbi_formatter_spec.rb +1 -1
  31. data/spec/rails_helper.rb +14 -1
  32. data/spec/rake_rails_rbi_active_record_spec.rb +21 -0
  33. data/spec/rake_rails_rbi_models_spec.rb +7 -0
  34. data/spec/sorbet_spec.rb +12 -1
  35. data/spec/support/v5.0/Gemfile.lock +8 -8
  36. data/spec/support/v5.0/app/models/headmaster.rb +8 -0
  37. data/spec/support/v5.0/app/models/school.rb +2 -0
  38. data/spec/support/v5.0/app/models/spell.rb +5 -0
  39. data/spec/support/v5.0/app/models/spell_book.rb +5 -0
  40. data/spec/support/v5.0/app/models/subject.rb +5 -0
  41. data/spec/support/v5.0/app/models/wizard.rb +6 -1
  42. data/spec/support/v5.0/db/migrate/20190620000010_add_subject.rb +8 -0
  43. data/spec/support/v5.0/db/migrate/20190620000011_add_subjects_wizards.rb +8 -0
  44. data/spec/support/v5.0/db/migrate/20190620000012_add_spell.rb +8 -0
  45. data/spec/support/v5.0/db/migrate/20190620000013_add_spells_spell_books.rb +8 -0
  46. data/spec/support/v5.0/db/migrate/20190620000014_create_headmasters.rb +9 -0
  47. data/spec/support/v5.0/db/schema.rb +28 -1
  48. data/spec/support/v5.0/lib/mythical_rbi_plugin.rb +1 -1
  49. data/spec/support/v5.0/sorbet_test_cases.rb +204 -122
  50. data/spec/support/v5.1/Gemfile.lock +8 -8
  51. data/spec/support/v5.1/app/models/headmaster.rb +8 -0
  52. data/spec/support/v5.1/app/models/school.rb +2 -0
  53. data/spec/support/v5.1/app/models/spell.rb +5 -0
  54. data/spec/support/v5.1/app/models/spell_book.rb +5 -0
  55. data/spec/support/v5.1/app/models/subject.rb +5 -0
  56. data/spec/support/v5.1/app/models/wizard.rb +6 -1
  57. data/spec/support/v5.1/db/migrate/20190620000010_add_subject.rb +8 -0
  58. data/spec/support/v5.1/db/migrate/20190620000011_add_subjects_wizards.rb +8 -0
  59. data/spec/support/v5.1/db/migrate/20190620000012_add_spell.rb +8 -0
  60. data/spec/support/v5.1/db/migrate/20190620000013_add_spells_spell_books.rb +8 -0
  61. data/spec/support/v5.1/db/migrate/20190620000014_create_headmasters.rb +9 -0
  62. data/spec/support/v5.1/db/schema.rb +28 -1
  63. data/spec/support/v5.1/lib/mythical_rbi_plugin.rb +1 -1
  64. data/spec/support/v5.1/sorbet_test_cases.rb +204 -122
  65. data/spec/support/v5.2/Gemfile +1 -1
  66. data/spec/support/v5.2/Gemfile.lock +9 -9
  67. data/spec/support/v5.2/app/models/headmaster.rb +8 -0
  68. data/spec/support/v5.2/app/models/school.rb +2 -0
  69. data/spec/support/v5.2/app/models/spell.rb +5 -0
  70. data/spec/support/v5.2/app/models/spell_book.rb +5 -0
  71. data/spec/support/v5.2/app/models/subject.rb +5 -0
  72. data/spec/support/v5.2/app/models/wizard.rb +5 -0
  73. data/spec/support/v5.2/config/puma.rb +3 -0
  74. data/spec/support/v5.2/db/migrate/20190620000010_add_subject.rb +8 -0
  75. data/spec/support/v5.2/db/migrate/20190620000011_add_subjects_wizards.rb +8 -0
  76. data/spec/support/v5.2/db/migrate/20190620000012_add_spell.rb +8 -0
  77. data/spec/support/v5.2/db/migrate/20190620000013_add_spells_spell_books.rb +8 -0
  78. data/spec/support/v5.2/db/migrate/20190620000014_create_headmasters.rb +9 -0
  79. data/spec/support/v5.2/db/schema.rb +28 -1
  80. data/spec/support/v5.2/lib/mythical_rbi_plugin.rb +1 -1
  81. data/spec/support/v5.2/sorbet_test_cases.rb +204 -122
  82. data/spec/support/v6.0/Gemfile.lock +8 -8
  83. data/spec/support/v6.0/app/models/headmaster.rb +8 -0
  84. data/spec/support/v6.0/app/models/school.rb +2 -0
  85. data/spec/support/v6.0/app/models/spell.rb +5 -0
  86. data/spec/support/v6.0/app/models/spell_book.rb +5 -0
  87. data/spec/support/v6.0/app/models/subject.rb +5 -0
  88. data/spec/support/v6.0/app/models/wizard.rb +6 -1
  89. data/spec/support/v6.0/db/migrate/20190620000010_add_subject.rb +8 -0
  90. data/spec/support/v6.0/db/migrate/20190620000011_add_subjects_wizards.rb +8 -0
  91. data/spec/support/v6.0/db/migrate/20190620000012_add_spell.rb +8 -0
  92. data/spec/support/v6.0/db/migrate/20190620000013_add_spells_spell_books.rb +8 -0
  93. data/spec/support/v6.0/db/migrate/20190620000014_create_headmasters.rb +9 -0
  94. data/spec/support/v6.0/db/schema.rb +28 -1
  95. data/spec/support/v6.0/lib/mythical_rbi_plugin.rb +1 -1
  96. data/spec/support/v6.0/sorbet_test_cases.rb +204 -122
  97. data/spec/test_data/v5.0/expected_active_record_base.rbi +113 -0
  98. data/spec/test_data/v5.0/expected_active_record_relation.rbi +199 -0
  99. data/spec/test_data/v5.0/expected_habtm_subjects.rbi +660 -0
  100. data/spec/test_data/v5.0/expected_habtm_wizards.rbi +660 -0
  101. data/spec/test_data/v5.0/expected_headmaster.rbi +304 -0
  102. data/spec/test_data/v5.0/expected_internal_metadata.rbi +38 -401
  103. data/spec/test_data/v5.0/expected_potion.rbi +38 -401
  104. data/spec/test_data/v5.0/expected_robe.rbi +38 -403
  105. data/spec/test_data/v5.0/expected_schema_migration.rbi +38 -401
  106. data/spec/test_data/v5.0/expected_school.rbi +47 -401
  107. data/spec/test_data/v5.0/expected_spell.rbi +292 -0
  108. data/spec/test_data/v5.0/expected_spell/habtm_spell_books.rbi +295 -0
  109. data/spec/test_data/v5.0/expected_spell_book.rbi +86 -432
  110. data/spec/test_data/v5.0/expected_spell_book/habtm_spell_books.rbi +637 -0
  111. data/spec/test_data/v5.0/expected_spell_book/habtm_spells.rbi +295 -0
  112. data/spec/test_data/v5.0/expected_squib.rbi +122 -477
  113. data/spec/test_data/v5.0/expected_subject.rbi +292 -0
  114. data/spec/test_data/v5.0/expected_subject/habtm_wizards.rbi +295 -0
  115. data/spec/test_data/v5.0/expected_wand.rbi +75 -442
  116. data/spec/test_data/v5.0/expected_wizard.rbi +144 -498
  117. data/spec/test_data/v5.0/expected_wizard/habtm_subjects.rbi +295 -0
  118. data/spec/test_data/v5.0/expected_wizard_wo_spellbook.rbi +138 -498
  119. data/spec/test_data/v5.1/expected_active_record_base.rbi +113 -0
  120. data/spec/test_data/v5.1/expected_active_record_relation.rbi +178 -0
  121. data/spec/test_data/v5.1/expected_habtm_subjects.rbi +672 -0
  122. data/spec/test_data/v5.1/expected_habtm_wizards.rbi +672 -0
  123. data/spec/test_data/v5.1/expected_headmaster.rbi +310 -0
  124. data/spec/test_data/v5.1/expected_internal_metadata.rbi +38 -407
  125. data/spec/test_data/v5.1/expected_potion.rbi +38 -407
  126. data/spec/test_data/v5.1/expected_robe.rbi +38 -409
  127. data/spec/test_data/v5.1/expected_schema_migration.rbi +38 -407
  128. data/spec/test_data/v5.1/expected_school.rbi +47 -407
  129. data/spec/test_data/v5.1/expected_spell.rbi +298 -0
  130. data/spec/test_data/v5.1/expected_spell/habtm_spell_books.rbi +301 -0
  131. data/spec/test_data/v5.1/expected_spell_book.rbi +86 -438
  132. data/spec/test_data/v5.1/expected_spell_book/habtm_spell_books.rbi +649 -0
  133. data/spec/test_data/v5.1/expected_spell_book/habtm_spells.rbi +301 -0
  134. data/spec/test_data/v5.1/expected_squib.rbi +123 -484
  135. data/spec/test_data/v5.1/expected_subject.rbi +298 -0
  136. data/spec/test_data/v5.1/expected_subject/habtm_wizards.rbi +301 -0
  137. data/spec/test_data/v5.1/expected_wand.rbi +75 -448
  138. data/spec/test_data/v5.1/expected_wizard.rbi +145 -505
  139. data/spec/test_data/v5.1/expected_wizard/habtm_subjects.rbi +301 -0
  140. data/spec/test_data/v5.1/expected_wizard_wo_spellbook.rbi +139 -505
  141. data/spec/test_data/v5.2/expected_active_record_base.rbi +113 -0
  142. data/spec/test_data/v5.2/expected_active_record_relation.rbi +175 -0
  143. data/spec/test_data/v5.2/expected_attachment.rbi +38 -407
  144. data/spec/test_data/v5.2/expected_blob.rbi +60 -426
  145. data/spec/test_data/v5.2/expected_habtm_subjects.rbi +672 -0
  146. data/spec/test_data/v5.2/expected_habtm_wizards.rbi +672 -0
  147. data/spec/test_data/v5.2/expected_headmaster.rbi +310 -0
  148. data/spec/test_data/v5.2/expected_internal_metadata.rbi +38 -407
  149. data/spec/test_data/v5.2/expected_potion.rbi +38 -407
  150. data/spec/test_data/v5.2/expected_robe.rbi +38 -409
  151. data/spec/test_data/v5.2/expected_schema_migration.rbi +38 -407
  152. data/spec/test_data/v5.2/expected_school.rbi +47 -407
  153. data/spec/test_data/v5.2/expected_spell.rbi +298 -0
  154. data/spec/test_data/v5.2/expected_spell/habtm_spell_books.rbi +301 -0
  155. data/spec/test_data/v5.2/expected_spell_book.rbi +86 -438
  156. data/spec/test_data/v5.2/expected_spell_book/habtm_spell_books.rbi +649 -0
  157. data/spec/test_data/v5.2/expected_spell_book/habtm_spells.rbi +301 -0
  158. data/spec/test_data/v5.2/expected_squib.rbi +133 -488
  159. data/spec/test_data/v5.2/expected_subject.rbi +298 -0
  160. data/spec/test_data/v5.2/expected_subject/habtm_wizards.rbi +301 -0
  161. data/spec/test_data/v5.2/expected_wand.rbi +75 -448
  162. data/spec/test_data/v5.2/expected_wizard.rbi +155 -509
  163. data/spec/test_data/v5.2/expected_wizard/habtm_subjects.rbi +301 -0
  164. data/spec/test_data/v5.2/expected_wizard_wo_spellbook.rbi +149 -509
  165. data/spec/test_data/v6.0/expected_active_record_base.rbi +113 -0
  166. data/spec/test_data/v6.0/expected_active_record_relation.rbi +175 -0
  167. data/spec/test_data/v6.0/expected_attachment.rbi +38 -431
  168. data/spec/test_data/v6.0/expected_blob.rbi +60 -450
  169. data/spec/test_data/v6.0/expected_habtm_subjects.rbi +720 -0
  170. data/spec/test_data/v6.0/expected_habtm_wizards.rbi +720 -0
  171. data/spec/test_data/v6.0/expected_headmaster.rbi +334 -0
  172. data/spec/test_data/v6.0/expected_internal_metadata.rbi +38 -431
  173. data/spec/test_data/v6.0/expected_potion.rbi +38 -431
  174. data/spec/test_data/v6.0/expected_robe.rbi +38 -433
  175. data/spec/test_data/v6.0/expected_routes.rbi +14 -7
  176. data/spec/test_data/v6.0/expected_schema_migration.rbi +38 -431
  177. data/spec/test_data/v6.0/expected_school.rbi +47 -431
  178. data/spec/test_data/v6.0/expected_spell.rbi +322 -0
  179. data/spec/test_data/v6.0/expected_spell/habtm_spell_books.rbi +325 -0
  180. data/spec/test_data/v6.0/expected_spell_book.rbi +98 -474
  181. data/spec/test_data/v6.0/expected_spell_book/habtm_spell_books.rbi +697 -0
  182. data/spec/test_data/v6.0/expected_spell_book/habtm_spells.rbi +325 -0
  183. data/spec/test_data/v6.0/expected_squib.rbi +162 -541
  184. data/spec/test_data/v6.0/expected_subject.rbi +322 -0
  185. data/spec/test_data/v6.0/expected_subject/habtm_wizards.rbi +325 -0
  186. data/spec/test_data/v6.0/expected_wand.rbi +91 -488
  187. data/spec/test_data/v6.0/expected_wizard.rbi +184 -562
  188. data/spec/test_data/v6.0/expected_wizard/habtm_subjects.rbi +325 -0
  189. data/spec/test_data/v6.0/expected_wizard_wo_spellbook.rbi +178 -562
  190. metadata +170 -24
  191. data/lib/bundled_rbi/active_record_base.rbi +0 -83
  192. data/lib/bundled_rbi/active_record_relation.rbi +0 -122
  193. data/lib/bundled_rbi/parameters.rbi +0 -28
  194. data/lib/sorbet-rails/custom_types/boolean_string.rb +0 -32
  195. data/lib/sorbet-rails/custom_types/integer_string.rb +0 -35
  196. data/lib/sorbet-rails/model_plugins/active_record_finder_methods.rb +0 -131
  197. data/lib/sorbet-rails/rails_mixins/custom_params_methods.rb +0 -46
  198. data/spec/boolean_string_spec.rb +0 -59
  199. data/spec/custom_params_methods_spec.rb +0 -138
  200. data/spec/integer_string_spec.rb +0 -46
  201. data/spec/support/v5.0/typed-override.yaml +0 -2
  202. data/spec/support/v5.1/typed-override.yaml +0 -2
  203. data/spec/support/v5.2/typed-override.yaml +0 -2
  204. data/spec/support/v6.0/typed-override.yaml +0 -2
@@ -1,59 +0,0 @@
1
- require 'rails_helper'
2
- require 'sorbet-rails/custom_types/boolean_string'
3
- require 'sorbet-runtime'
4
-
5
- RSpec.describe BooleanString do
6
- shared_examples 'boolean string' do |str|
7
- it 'acts as BooleanString perfectly' do
8
- expect(str.is_a?(BooleanString)).to be(true)
9
- expect(str.kind_of?(BooleanString)).to be(true)
10
- expect(str.instance_of?(BooleanString)).to be(true)
11
- expect(BooleanString === str).to be(true)
12
- end
13
- end
14
-
15
- include_examples 'boolean string', 'true'
16
- include_examples 'boolean string', 'false'
17
- include_examples 'boolean string', 'True'
18
- include_examples 'boolean string', 'False'
19
-
20
- shared_examples 'non boolean string' do |str|
21
- it 'does not acts as BooleanString' do
22
- expect(str.is_a?(BooleanString)).to be(false)
23
- expect(str.kind_of?(BooleanString)).to be(false)
24
- expect(str.instance_of?(BooleanString)).to be(false)
25
- expect(BooleanString === str).to be(false)
26
- end
27
- end
28
-
29
- include_examples 'non boolean string', 'yes'
30
- include_examples 'non boolean string', 'no'
31
- include_examples 'non boolean string', 'alala'
32
-
33
- context 'sorbet recognizes it at runtime' do
34
- it 'lets boolean string pass runtime check' do
35
- expect(T.let('true', BooleanString)).to eql('true')
36
- end
37
-
38
- it 'doesnt let normal string pass runtime typecheck' do
39
- expect {
40
- T.let('yes', BooleanString)
41
- }.to raise_error(TypeError)
42
- end
43
- end
44
-
45
- context 'using with TypeAssert' do
46
- let!(:ta) { TA[BooleanString].new }
47
-
48
- it 'lets boolean string pass runtime typecheck' do
49
- expect(ta.assert('true')).to eql('true')
50
- end
51
-
52
- it 'doesnt let normal string pass runtime typecheck' do
53
- expect {
54
- ta.assert('yes')
55
- }.to raise_error(TypeError)
56
- end
57
- end
58
- end
59
-
@@ -1,138 +0,0 @@
1
- require 'rails_helper'
2
-
3
- describe ActionController::Parameters do
4
- let!(:params) do
5
- ActionController::Parameters.new({
6
- age: 11,
7
- name: 'Harry Potter',
8
- info: {
9
- birthday: Date.parse('1980-07-31'),
10
- friends: [
11
- 'Hermione',
12
- 'Ron',
13
- ],
14
- grandson: nil,
15
- },
16
- })
17
- end
18
- let!(:params_info) { params.require(:info) }
19
-
20
- context 'require_typed' do
21
- it 'gets basic param correctly' do
22
- val = params.require_typed(:age, TA[Integer].new)
23
- expect(val).to eql(11)
24
-
25
- val = params.require_typed(:name, TA[String].new)
26
- expect(val).to eql('Harry Potter')
27
- end
28
-
29
- it 'gets param with complex type correctly' do
30
- val = params.require_typed(:age, TA[T.any(String, Integer)].new)
31
- expect(val).to eql(11)
32
- end
33
-
34
- it 'gets param object correctly' do
35
- val = params.require_typed(:info, TA[ActionController::Parameters].new)
36
- expect(val.is_a?(ActionController::Parameters))
37
- expect(val).to eql(params_info)
38
-
39
- friends = val.require_typed(:friends, TA[T::Array[String]].new)
40
- expect(friends).to eql([
41
- 'Hermione',
42
- 'Ron',
43
- ])
44
- end
45
-
46
- it 'raises error when param doesnt exist' do
47
- expect {
48
- params.require_typed(:nonexistence, TA[String].new)
49
- }.to raise_error(ActionController::ParameterMissing)
50
- end
51
-
52
- it 'raises error when param is nil' do
53
- expect {
54
- params_info.require_typed(:grandson, TA[T::Array[String]].new)
55
- }.to raise_error(ActionController::ParameterMissing)
56
- end
57
-
58
- it 'raises error when param has wrong type' do
59
- expect {
60
- params.require_typed(:age, TA[String].new)
61
- }.to raise_error(ActionController::BadRequest)
62
- end
63
-
64
- it 'raises error when param has wrong complex type' do
65
- expect {
66
- params.require_typed(:age, TA[T::Array[String]].new)
67
- }.to raise_error(ActionController::BadRequest)
68
- end
69
- end
70
-
71
- context 'fetch_typed' do
72
- it 'gets basic param correctly' do
73
- val = params.fetch_typed(:age, TA[Integer].new)
74
- expect(val).to eql(11)
75
-
76
- val = params.fetch_typed(:name, TA[String].new)
77
- expect(val).to eql('Harry Potter')
78
- end
79
-
80
- it 'gets param object correctly' do
81
- val = params.fetch_typed(:info, TA[ActionController::Parameters].new)
82
- expect(val.is_a?(ActionController::Parameters))
83
- expect(val).to eql(params_info)
84
-
85
- friends = val.fetch_typed(:friends, TA[T::Array[String]].new)
86
- expect(friends).to eql([
87
- 'Hermione',
88
- 'Ron',
89
- ])
90
- end
91
-
92
- it 'raises error when param doesnt exist' do
93
- expect {
94
- val = params.fetch_typed(:nonexistence, TA[String].new)
95
- }.to raise_error(ActionController::ParameterMissing)
96
- end
97
-
98
- it 'raises error when param has wrong type' do
99
- expect {
100
- val = params.fetch_typed(:age, TA[String].new)
101
- }.to raise_error(ActionController::BadRequest)
102
- end
103
-
104
- it 'returns nil when param is nil' do
105
- grandson = params_info.fetch_typed(:grandson, TA[T.nilable(T::Array[String])].new)
106
- expect(grandson).to eql(nil)
107
- end
108
-
109
- context 'when there is a default value' do
110
- it 'uses default value when param is nil and has a default' do
111
- fetched = params.fetch_typed(:nonexistence, TA[T::Array[String]].new, [])
112
- expect(fetched).to eql([])
113
- end
114
-
115
- it 'ignores default value when there is a real value' do
116
- name = params.fetch_typed(:name, TA[String].new, 'John Doe')
117
- expect(name).to eql('Harry Potter')
118
- end
119
-
120
- it 'converts hash default value into a params' do
121
- # this is `fetch` documented behavior
122
- fetched = params.fetch_typed(
123
- :nonexistence,
124
- TA[ActionController::Parameters].new,
125
- { unknown: "baby" },
126
- )
127
- expect(fetched.is_a?(ActionController::Parameters)).to be(true)
128
- expect(fetched.permit(:unknown).to_h).to eql({ "unknown" => "baby" })
129
- end
130
-
131
- it 'raises error when param is nil and given a wrong default' do
132
- expect {
133
- fetched = params.fetch_typed(:nonexistence, TA[T::Array].new, 5)
134
- }.to raise_error(ActionController::BadRequest)
135
- end
136
- end
137
- end
138
- end
@@ -1,46 +0,0 @@
1
- require 'rails_helper'
2
- require 'sorbet-rails/custom_types/integer_string'
3
- require 'sorbet-runtime'
4
-
5
- RSpec.describe IntegerString do
6
- it 'lets integer string acts as IntegerString perfectly' do
7
- expect('1'.is_a?(IntegerString)).to be(true)
8
- expect('12'.kind_of?(IntegerString)).to be(true)
9
- expect('123'.instance_of?(IntegerString)).to be(true)
10
- expect(IntegerString === '1234').to be(true)
11
- end
12
-
13
- it 'does not let other string acts as IntegerString' do
14
- expect('a1'.is_a?(IntegerString)).to be(false)
15
- expect('a12'.kind_of?(IntegerString)).to be(false)
16
- expect('a123'.instance_of?(IntegerString)).to be(false)
17
- expect(IntegerString === 'a1234').to be(false)
18
- end
19
-
20
- context 'sorbet recognizes it at runtime' do
21
- it 'lets integer string pass runtime check' do
22
- expect(T.let('123', IntegerString)).to eql('123')
23
- end
24
-
25
- it 'doesnt let normal string pass runtime typecheck' do
26
- expect {
27
- T.let('a123', IntegerString)
28
- }.to raise_error(TypeError)
29
- end
30
- end
31
-
32
- context 'using with TypeAssert' do
33
- let!(:ta) { TA[IntegerString].new }
34
-
35
- it 'lets integer string pass runtime typecheck' do
36
- expect(ta.assert('123')).to eql('123')
37
- end
38
-
39
- it 'doesnt let normal string pass runtime typecheck' do
40
- expect {
41
- ta.assert('a123')
42
- }.to raise_error(TypeError)
43
- end
44
- end
45
- end
46
-
@@ -1,2 +0,0 @@
1
- true:
2
- - ./sorbet_test_cases.rb
@@ -1,2 +0,0 @@
1
- true:
2
- - ./sorbet_test_cases.rb
@@ -1,2 +0,0 @@
1
- true:
2
- - ./sorbet_test_cases.rb
@@ -1,2 +0,0 @@
1
- true:
2
- - ./sorbet_test_cases.rb