mirror of
https://github.com/thoughtbot/factory_bot.git
synced 2022-11-09 11:43:51 -05:00
2b524b060d
Closes #970 In this code we are passing an implicit declaration `user`, rather than the symbol `:user`: ```rb factory :post do author factory: user end ``` This will raise a confusing error: `undefined method 'name' for :comment:Symbol`. This is coming from the implicit declaration `#==` method, called on lib/factory_bot/attribute_list.rb#56. The method wasn't ever designed to compare against objects of different classes. I added some tests for all the declaration classes to handle being compared against other kinds of objects. Co-authored-by: Dusan Orlovic <duleorlovic@gmail.com>
28 lines
537 B
Ruby
28 lines
537 B
Ruby
module FactoryBot
|
|
class Declaration
|
|
# @api private
|
|
class Dynamic < Declaration
|
|
def initialize(name, ignored = false, block = nil)
|
|
super(name, ignored)
|
|
@block = block
|
|
end
|
|
|
|
def ==(other)
|
|
self.class == other.class &&
|
|
name == other.name &&
|
|
ignored == other.ignored &&
|
|
block == other.block
|
|
end
|
|
|
|
protected
|
|
|
|
attr_reader :block
|
|
|
|
private
|
|
|
|
def build
|
|
[Attribute::Dynamic.new(name, @ignored, @block)]
|
|
end
|
|
end
|
|
end
|
|
end
|