end
def test_update
- node = create(:node)
- create(:old_node, :node_id => node.id, :version => 1)
+ node = create(:node, :lat => 12.6543, :lon => 65.1234)
+ create(:old_node, :node_id => node.id, :version => 1, :lat => node.lat, :lon => node.lon)
+
node_template = Node.find(node.id)
assert_not_nil node_template
node.create_with_history(user)
end
end
+
+ test "raises id precondition exception when updating" do
+ user = create(:user)
+ node = Node.new(:id => 23)
+ new_node = Node.new(:id => 42)
+ assert_raises OSM::APIPreconditionFailedError do
+ node.update_from(new_node, user)
+ end
+ end
+
+ test "raises version mismatch exception when updating" do
+ user = create(:user)
+ node = Node.new(:id => 42, :version => 7)
+ new_node = Node.new(:id => 42, :version => 12)
+ assert_raises OSM::APIVersionMismatchError do
+ node.update_from(new_node, user)
+ end
+ end
+
+ test "raises missing changeset exception when updating" do
+ user = create(:user)
+ node = Node.new(:id => 42, :version => 12)
+ new_node = Node.new(:id => 42, :version => 12)
+ assert_raises OSM::APIChangesetMissingError do
+ node.update_from(new_node, user)
+ end
+ end
+
+ test "raises user-changeset mismatch exception when updating" do
+ user = create(:user)
+ changeset = create(:changeset)
+ node = Node.new(:id => 42, :version => 12)
+ new_node = Node.new(:id => 42, :version => 12, :changeset => changeset)
+ assert_raises OSM::APIUserChangesetMismatchError do
+ node.update_from(new_node, user)
+ end
+ end
+
+ test "raises already closed changeset exception when updating" do
+ user = create(:user)
+ changeset = create(:changeset, :closed, :user => user)
+ node = Node.new(:id => 42, :version => 12)
+ new_node = Node.new(:id => 42, :version => 12, :changeset => changeset)
+ assert_raises OSM::APIChangesetAlreadyClosedError do
+ node.update_from(new_node, user)
+ end
+ end
+
+ test "raises id precondition exception when deleting" do
+ user = create(:user)
+ node = Node.new(:id => 23, :visible => true)
+ new_node = Node.new(:id => 42, :visible => false)
+ assert_raises OSM::APIPreconditionFailedError do
+ node.delete_with_history!(new_node, user)
+ end
+ end
end