Skip to content

Commit b9bc5a7

Browse files
committed
Remove NilClass parameters from AR fixture methods
1 parent c03731e commit b9bc5a7

2 files changed

Lines changed: 17 additions & 20 deletions

File tree

lib/tapioca/dsl/compilers/active_record_fixtures.rb

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ module Compilers
2626
# # test_case.rbi
2727
# # typed: true
2828
# class ActiveSupport::TestCase
29-
# sig { params(fixture_name: NilClass, other_fixtures: NilClass).returns(T::Array[Post]) }
30-
# sig { params(fixture_name: T.any(String, Symbol), other_fixtures: NilClass).returns(Post) }
29+
# sig { returns(T::Array[Post]) } # No parameters: returns all fixtures
30+
# sig { params(fixture_name: T.any(String, Symbol)).returns(Post) } # One name: return that specific fixture
3131
# sig { params(fixture_name: T.any(String, Symbol), other_fixtures: T.any(String, Symbol))
3232
# .returns(T::Array[Post]) }
3333
# def posts(fixture_name = nil, *other_fixtures); end
@@ -110,19 +110,16 @@ def create_fixture_method(mod, name)
110110
node.add_opt_param("fixture_name", "nil")
111111
node.add_rest_param("other_fixtures")
112112

113-
node.add_sig do |sig|
114-
sig.add_param("fixture_name", "NilClass")
115-
sig.add_param("other_fixtures", "NilClass")
113+
node.add_sig do |sig| # No-parameter overload: returns an Array of all fixtures
116114
sig.return_type = "T::Array[#{return_type}]"
117115
end
118116

119-
node.add_sig do |sig|
117+
node.add_sig do |sig| # One parameter overload: returns the requested fixture
120118
sig.add_param("fixture_name", "T.any(String, Symbol)")
121-
sig.add_param("other_fixtures", "NilClass")
122119
sig.return_type = return_type
123120
end
124121

125-
node.add_sig do |sig|
122+
node.add_sig do |sig| # Multi-parameter overload: returns an Array of the requested fixtures
126123
sig.add_param("fixture_name", "T.any(String, Symbol)")
127124
sig.add_param("other_fixtures", "T.any(String, Symbol)")
128125
sig.return_type = "T::Array[#{return_type}]"

spec/tapioca/dsl/compilers/active_record_fixtures_spec.rb

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,8 @@ class Post < ActiveRecord::Base
7979
# typed: strong
8080
8181
class ActiveSupport::TestCase
82-
sig { params(fixture_name: NilClass, other_fixtures: NilClass).returns(T::Array[Post]) }
83-
sig { params(fixture_name: T.any(String, Symbol), other_fixtures: NilClass).returns(Post) }
82+
sig { returns(T::Array[Post]) }
83+
sig { params(fixture_name: T.any(String, Symbol)).returns(Post) }
8484
sig { params(fixture_name: T.any(String, Symbol), other_fixtures: T.any(String, Symbol)).returns(T::Array[Post]) }
8585
def posts(fixture_name = nil, *other_fixtures); end
8686
end
@@ -107,8 +107,8 @@ class Post < ActiveRecord::Base
107107
# typed: strong
108108
109109
class ActiveSupport::TestCase
110-
sig { params(fixture_name: NilClass, other_fixtures: NilClass).returns(T::Array[Post]) }
111-
sig { params(fixture_name: T.any(String, Symbol), other_fixtures: NilClass).returns(Post) }
110+
sig { returns(T::Array[Post]) }
111+
sig { params(fixture_name: T.any(String, Symbol)).returns(Post) }
112112
sig { params(fixture_name: T.any(String, Symbol), other_fixtures: T.any(String, Symbol)).returns(T::Array[Post]) }
113113
def posts(fixture_name = nil, *other_fixtures); end
114114
end
@@ -146,13 +146,13 @@ class User < ActiveRecord::Base
146146
# typed: strong
147147
148148
class ActiveSupport::TestCase
149-
sig { params(fixture_name: NilClass, other_fixtures: NilClass).returns(T::Array[Blog::Post]) }
150-
sig { params(fixture_name: T.any(String, Symbol), other_fixtures: NilClass).returns(Blog::Post) }
149+
sig { returns(T::Array[Blog::Post]) }
150+
sig { params(fixture_name: T.any(String, Symbol)).returns(Blog::Post) }
151151
sig { params(fixture_name: T.any(String, Symbol), other_fixtures: T.any(String, Symbol)).returns(T::Array[Blog::Post]) }
152152
def blog_posts(fixture_name = nil, *other_fixtures); end
153153
154-
sig { params(fixture_name: NilClass, other_fixtures: NilClass).returns(T::Array[User]) }
155-
sig { params(fixture_name: T.any(String, Symbol), other_fixtures: NilClass).returns(User) }
154+
sig { returns(T::Array[User]) }
155+
sig { params(fixture_name: T.any(String, Symbol)).returns(User) }
156156
sig { params(fixture_name: T.any(String, Symbol), other_fixtures: T.any(String, Symbol)).returns(T::Array[User]) }
157157
def users(fixture_name = nil, *other_fixtures); end
158158
end
@@ -181,8 +181,8 @@ class Post < ActiveRecord::Base
181181
# typed: strong
182182
183183
class ActiveSupport::TestCase
184-
sig { params(fixture_name: NilClass, other_fixtures: NilClass).returns(T::Array[Post]) }
185-
sig { params(fixture_name: T.any(String, Symbol), other_fixtures: NilClass).returns(Post) }
184+
sig { returns(T::Array[Post]) }
185+
sig { params(fixture_name: T.any(String, Symbol)).returns(Post) }
186186
sig { params(fixture_name: T.any(String, Symbol), other_fixtures: T.any(String, Symbol)).returns(T::Array[Post]) }
187187
def posts_with_other_names(fixture_name = nil, *other_fixtures); end
188188
end
@@ -204,8 +204,8 @@ def posts_with_other_names(fixture_name = nil, *other_fixtures); end
204204
# typed: strong
205205
206206
class ActiveSupport::TestCase
207-
sig { params(fixture_name: NilClass, other_fixtures: NilClass).returns(T::Array[T.untyped]) }
208-
sig { params(fixture_name: T.any(String, Symbol), other_fixtures: NilClass).returns(T.untyped) }
207+
sig { returns(T::Array[T.untyped]) }
208+
sig { params(fixture_name: T.any(String, Symbol)).returns(T.untyped) }
209209
sig { params(fixture_name: T.any(String, Symbol), other_fixtures: T.any(String, Symbol)).returns(T::Array[T.untyped]) }
210210
def posts(fixture_name = nil, *other_fixtures); end
211211
end

0 commit comments

Comments
 (0)