mirror of
https://github.com/thoughtbot/factory_bot.git
synced 2022-11-09 11:43:51 -05:00
![Colin Ross](/assets/img/avatar_default.png)
* Alphabetize gem listing in various Gemfiles [Rubocop Bundler/OrderedGems] * Fix alignment of if/else/end statement [Rubocop Layout/ElseAlignment] * Method definitions should have a empty line between them [Rubocop Layout/EmptyLineBetweenDefs] * Modules, Classes, and blocks should have an empty line around them [Rubocop] Cops: Layout/EmptyLinesAroundBlockBody Layout/EmptyLinesAroundModuleBody Layout/EmptyLinesAroundClassBody Layout/EmptyLinesAroundAccessModifier * Keep a blank line before and after access modifiers [Rubocop Layout/EmptyLinesAroundAccessModifier] * Remove misc extra whitespace [Rubocop Layout/ExtraSpacing] * Indent the first line of the right-hand-side of a multi-line assignment [Rubocop Layout/IndentAssignment] * Remove extraneous whitespace [Rubocop] Cops: Layout/IndentationWidth Layout/LeadingCommentSpace Layout/SpaceAroundEqualsInParameterDefault Layout/SpaceInsideArrayLiteralBrackets Layout/SpaceInsideBlockBraces Layout/SpaceInsideParens Layout/TrailingBlankLines * Revert rubocop changes to gemfiles; exclude files from rubocop checks The files in gemfiles/ are generated by Appraisal, so we shouldn't edit them. Instead, let's tell RuboCop to exclude this directory.
67 lines
1.7 KiB
Ruby
67 lines
1.7 KiB
Ruby
describe "declaring attributes on a Factory that are private methods on Object" do
|
|
before do
|
|
define_model("Website", system: :boolean, link: :string, sleep: :integer)
|
|
|
|
FactoryBot.define do
|
|
factory :website do
|
|
system { false }
|
|
link { "http://example.com" }
|
|
sleep { 15 }
|
|
end
|
|
end
|
|
end
|
|
|
|
subject { FactoryBot.build(:website, sleep: -5) }
|
|
|
|
its(:system) { should eq false }
|
|
its(:link) { should eq "http://example.com" }
|
|
its(:sleep) { should eq -5 }
|
|
end
|
|
|
|
describe "assigning overrides that are also private methods on object" do
|
|
before do
|
|
define_model("Website", format: :string, y: :integer, more_format: :string, some_funky_method: :string)
|
|
|
|
Object.class_eval do
|
|
private
|
|
|
|
def some_funky_method(args)
|
|
end
|
|
end
|
|
|
|
FactoryBot.define do
|
|
factory :website do
|
|
more_format { "format: #{format}" }
|
|
end
|
|
end
|
|
end
|
|
|
|
after do
|
|
Object.send(:undef_method, :some_funky_method)
|
|
end
|
|
|
|
subject { FactoryBot.build(:website, format: "Great", y: 12345, some_funky_method: "foobar!") }
|
|
its(:format) { should eq "Great" }
|
|
its(:y) { should eq 12345 }
|
|
its(:more_format) { should eq "format: Great" }
|
|
its(:some_funky_method) { should eq "foobar!" }
|
|
end
|
|
|
|
describe "accessing methods from the instance within a dynamic attribute that is also a private method on object" do
|
|
before do
|
|
define_model("Website", more_format: :string) do
|
|
def format
|
|
"This is an awesome format"
|
|
end
|
|
end
|
|
|
|
FactoryBot.define do
|
|
factory :website do
|
|
more_format { "format: #{format}" }
|
|
end
|
|
end
|
|
end
|
|
|
|
subject { FactoryBot.build(:website) }
|
|
its(:more_format) { should eq "format: This is an awesome format" }
|
|
end
|