[WIP] Adding a new belongs_to association [for factories.#950
Open
[WIP] Adding a new belongs_to association [for factories.#950
Conversation
| def {{ type_declaration.var }}(%m : {{ type_declaration.type.stringify.gsub(/Factory$/, "").id }}) | ||
| {{ type_declaration.var }}_id(%m.id) | ||
| end | ||
| def create_{{ type_declaration.var }}(&blk : {{ type_declaration.type }} ->) |
Member
There was a problem hiding this comment.
Does this allow calling the method without a block? I'm not sure it does
Member
Author
There was a problem hiding this comment.
Ooo, good call. I'll add that in.
Member
Author
|
Putting this in WIP... Just ran in to an issue that I'm not sure how to handle yet.. If your Factory has class CommentFactory < Avram::Factory
belongs_to post : PostFactory
def initialize
body("Test Comment")
create_post(&.title("Test Post"))
end
end
# the post title will be "Test Post" here...
TempCommentFactory.create(&.create_post(&.title("A new post")))This is because it chains the |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #385
This PR adds in a new
belongs_toassociation macro for Factory that allows you to association another model and build on demand.One weird thing I ran in to is naming order with requires, but I think that's just a Crystal thing...
For example, with a
require "./factories/**", doing this will throw aundefined constant PostFactorybecause in alphabetical order, "PostFactory" comes after "CommentFactory", so the file hasn't been loaded. You'd just need to do an extrarequire "./post_factory"at the top if that's the case...