Refactor update element consistency check

This commit is contained in:
Anton Khorev 2024-03-30 10:38:57 +03:00
parent 29432d5e9f
commit 09f6b83486
4 changed files with 143 additions and 6 deletions

View file

@ -276,4 +276,51 @@ class RelationTest < ActiveSupport::TestCase
relation.create_with_history(user)
end
end
test "raises id precondition exception when updating" do
user = create(:user)
relation = Relation.new(:id => 23)
new_relation = Relation.new(:id => 42)
assert_raises OSM::APIPreconditionFailedError do
relation.update_from(new_relation, user)
end
end
test "raises version mismatch exception when updating" do
user = create(:user)
relation = Relation.new(:id => 42, :version => 7)
new_relation = Relation.new(:id => 42, :version => 12)
assert_raises OSM::APIVersionMismatchError do
relation.update_from(new_relation, user)
end
end
test "raises missing changeset exception when updating" do
user = create(:user)
relation = Relation.new(:id => 42, :version => 12)
new_relation = Relation.new(:id => 42, :version => 12)
assert_raises OSM::APIChangesetMissingError do
relation.update_from(new_relation, user)
end
end
test "raises user-changeset mismatch exception when updating" do
user = create(:user)
changeset = create(:changeset)
relation = Relation.new(:id => 42, :version => 12)
new_relation = Relation.new(:id => 42, :version => 12, :changeset => changeset)
assert_raises OSM::APIUserChangesetMismatchError do
relation.update_from(new_relation, user)
end
end
test "raises already closed changeset exception when updating" do
user = create(:user)
changeset = create(:changeset, :closed, :user => user)
relation = Relation.new(:id => 42, :version => 12)
new_relation = Relation.new(:id => 42, :version => 12, :changeset => changeset)
assert_raises OSM::APIChangesetAlreadyClosedError do
relation.update_from(new_relation, user)
end
end
end