Fix specs about upsert_keys and literal #71
Merged
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.
A word about the key specs.
In the key specs, an instance was created like :
upserted = Vehicle.new(id: v.id, wheels_count: 1)
.But this one doesn't pass the validation because the field
name
is empty.The
upsert
returns false because of the error on the validation.So yes the assertion
expect(upserted.id).to eq(vehicule.id)
is always true, but nothing happens in the DB: the spec doesn't test anything.About the literal key.
I miss the thing (in #70) that due to
extract_options!
, theliteral
key is removed fromupsert_keys
and stored in theupsert_options
attribute (like thewhere
attribute).So we don't have to check to class of
upsert_key
, but just check if theupsert_options
constains theliteral
key.I trust the specs, but nothing happend in DB.