Fix: Mock provider raises UnknownAttributeError when response_format is passed #342
Open
aoki-ryusei wants to merge 1 commit into
Open
Conversation
… to Mock provider
Mock::Request had a hardcoded `response_format` method that always returned
`{ type: "text" }` but no attribute definition, causing ActiveModel to raise
UnknownAttributeError when the value was assigned during request casting.
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.
Summary
Fix
ActiveModel::UnknownAttributeErrorraised whenresponse_formatis passed to the Mock provider.Steps to Reproduce
Problem
The Mock provider documentation states that
response_formatis "accepted but not validated or enforced", but in practice passing it caused a crash.The root cause was that
Mock::Requesthad a hardcoded getter method but noattribute :response_formatdeclaration.When
BaseProvidercast the context hash into the request object, ActiveModel tried to call response_format= as asetter, which didn't exist, and raised the error.
Fix
Add
attribute :response_formattoMock::Requestand remove the hardcoded getter. The attribute now accepts any value passed in, while mock behavior remains unchanged — no schema validation or structured output is enforced.How to Verify
Run the reproduction steps above and confirm no error is raised.