-
-
Notifications
You must be signed in to change notification settings - Fork 2.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add support for before build callback #1639
base: main
Are you sure you want to change the base?
Add support for before build callback #1639
Conversation
Probably the easiest thing to do is to add a test to Spitballing here, something like: class TitleSetter
def self.title=(new_title)
@@title = new_title
end
def self.title
@@title
end
end
define_model("Article", title: :string)
FactoryBot.define do
factory :article_with_before_callbacks, class: :article do
before(:build) { TitleSetter.title = "title from before build" }
after(:build) { TitleSetter.title = "title from after build" }
title { TitleSetter.title }
end
end
it "runs the before callback" do
article = FactoryBot.build(:article_with_before_callbacks)
expect(article.title).to eq("title from before build")
end |
@mike-burns Thank you for your suggestion 🙏 also would something like this do it? define_model("User", full_name: :string)
FactoryBot.define do
factory :user_with_before_callbacks, class: :user do
before(:build) { user.full_name = "first }
after(:build) { user.full_name = "#{user.full_name} last" }
end
end
it "runs the before callback" do
article = FactoryBot.build(:user_with_before_callbacks)
expect(user.full_name).to eq("first last")
end |
We need to make sure My theory on why my suggestion works is this timeline:
(For what it's worth, I'm not sure your current code calls the callback before the object is built.) |
@mike-burns you are right the approach was not correct and it was actually called after the build, thanks for raising the hand! |
Hey @mike-burns , sorry to ping you again 😅 I am just wondering if the new approach is okay or do I need to investigate other options? Thank you |
Oh hey, this approach is good, thanks for taking it on. I need to find time to do a final review and merge it. I can do small tweaks from here and give you credit. |
Thank you, much appreciated 🙏 |
Hey @sarahraqueld , sorry for pinging..I am just keen to have some contributions in the gem (if possible) 😅 so I would appreciate it if someone can take a look on this PR and tell me if there is any change I need to do. (I also had another PR here 🙈) |
Hi @mohammednasser-32, me and @smaboshe are trying our best to deal with all the issues and PRs we inherited when we became maintainers. We thank you for your patience, and will review this today. |
@sarahraqueld @smaboshe Thank you so much, much appreciated and sorry for the noise 🙏 |
@mohammednasser-32 We see that the CI seems to be stuck. Can you rebase your branch and push to see if that triggers the tests to run correctly this time? |
change the approach for calling the before_build_callback, now it is called before the object is built, and thus called without any attributes
13a5f67
to
6a63eea
Compare
86c4370
to
35db09f
Compare
@sarahraqueld Done |
Hey @smaboshe, since this already got approved I was just wondering if there is plan for it to get merged soon? Thank you 🙏 |
Fixes #1633
add support for
before(:build)
callback as requested in the issueTested the changes by adding the local gem to a project
I am honestly not sure how to add unit tests for the change, any help would be appreciated