Refactor some relation_controller tests to use factories.

This commit is contained in:
Andy Allan 2017-05-17 11:29:11 +01:00
parent c7d612df2d
commit 63a2f1f1b4

View file

@ -193,13 +193,17 @@ class RelationControllerTest < ActionController::TestCase
# ------------------------------------- # -------------------------------------
def test_create def test_create
basic_authorization users(:normal_user).email, "test" private_user = create(:user, :data_public => false)
private_changeset = create(:changeset, :user => private_user)
user = create(:user)
changeset = create(:changeset, :user => user)
node = create(:node)
way = create(:way_with_nodes, :nodes_count => 2)
# put the relation in a dummy fixture changset basic_authorization private_user.email, "test"
changeset_id = changesets(:normal_user_first_change).id
# create an relation without members # create an relation without members
content "<osm><relation changeset='#{changeset_id}'><tag k='test' v='yes' /></relation></osm>" content "<osm><relation changeset='#{private_changeset.id}'><tag k='test' v='yes' /></relation></osm>"
put :create put :create
# hope for forbidden, due to user # hope for forbidden, due to user
assert_response :forbidden, assert_response :forbidden,
@ -208,9 +212,8 @@ class RelationControllerTest < ActionController::TestCase
### ###
# create an relation with a node as member # create an relation with a node as member
# This time try with a role attribute in the relation # This time try with a role attribute in the relation
nid = current_nodes(:used_node_1).id content "<osm><relation changeset='#{private_changeset.id}'>" +
content "<osm><relation changeset='#{changeset_id}'>" + "<member ref='#{node.id}' type='node' role='some'/>" +
"<member ref='#{nid}' type='node' role='some'/>" +
"<tag k='test' v='yes' /></relation></osm>" "<tag k='test' v='yes' /></relation></osm>"
put :create put :create
# hope for forbidden due to user # hope for forbidden due to user
@ -220,9 +223,8 @@ class RelationControllerTest < ActionController::TestCase
### ###
# create an relation with a node as member, this time test that we don't # create an relation with a node as member, this time test that we don't
# need a role attribute to be included # need a role attribute to be included
nid = current_nodes(:used_node_1).id content "<osm><relation changeset='#{private_changeset.id}'>" +
content "<osm><relation changeset='#{changeset_id}'>" + "<member ref='#{node.id}' type='node'/>" + "<tag k='test' v='yes' /></relation></osm>"
"<member ref='#{nid}' type='node'/>" + "<tag k='test' v='yes' /></relation></osm>"
put :create put :create
# hope for forbidden due to user # hope for forbidden due to user
assert_response :forbidden, assert_response :forbidden,
@ -230,11 +232,9 @@ class RelationControllerTest < ActionController::TestCase
### ###
# create an relation with a way and a node as members # create an relation with a way and a node as members
nid = current_nodes(:used_node_1).id content "<osm><relation changeset='#{private_changeset.id}'>" +
wid = current_ways(:used_way).id "<member type='node' ref='#{node.id}' role='some'/>" +
content "<osm><relation changeset='#{changeset_id}'>" + "<member type='way' ref='#{way.id}' role='other'/>" +
"<member type='node' ref='#{nid}' role='some'/>" +
"<member type='way' ref='#{wid}' role='other'/>" +
"<tag k='test' v='yes' /></relation></osm>" "<tag k='test' v='yes' /></relation></osm>"
put :create put :create
# hope for forbidden, due to user # hope for forbidden, due to user
@ -242,13 +242,10 @@ class RelationControllerTest < ActionController::TestCase
"relation upload did not return success status" "relation upload did not return success status"
## Now try with the public user ## Now try with the public user
basic_authorization users(:public_user).email, "test" basic_authorization user.email, "test"
# put the relation in a dummy fixture changset
changeset_id = changesets(:public_user_first_change).id
# create an relation without members # create an relation without members
content "<osm><relation changeset='#{changeset_id}'><tag k='test' v='yes' /></relation></osm>" content "<osm><relation changeset='#{changeset.id}'><tag k='test' v='yes' /></relation></osm>"
put :create put :create
# hope for success # hope for success
assert_response :success, assert_response :success,
@ -263,9 +260,9 @@ class RelationControllerTest < ActionController::TestCase
"saved relation contains members but should not" "saved relation contains members but should not"
assert_equal checkrelation.tags.length, 1, assert_equal checkrelation.tags.length, 1,
"saved relation does not contain exactly one tag" "saved relation does not contain exactly one tag"
assert_equal changeset_id, checkrelation.changeset.id, assert_equal changeset.id, checkrelation.changeset.id,
"saved relation does not belong in the changeset it was assigned to" "saved relation does not belong in the changeset it was assigned to"
assert_equal users(:public_user).id, checkrelation.changeset.user_id, assert_equal user.id, checkrelation.changeset.user_id,
"saved relation does not belong to user that created it" "saved relation does not belong to user that created it"
assert_equal true, checkrelation.visible, assert_equal true, checkrelation.visible,
"saved relation is not visible" "saved relation is not visible"
@ -276,9 +273,8 @@ class RelationControllerTest < ActionController::TestCase
### ###
# create an relation with a node as member # create an relation with a node as member
# This time try with a role attribute in the relation # This time try with a role attribute in the relation
nid = current_nodes(:used_node_1).id content "<osm><relation changeset='#{changeset.id}'>" +
content "<osm><relation changeset='#{changeset_id}'>" + "<member ref='#{node.id}' type='node' role='some'/>" +
"<member ref='#{nid}' type='node' role='some'/>" +
"<tag k='test' v='yes' /></relation></osm>" "<tag k='test' v='yes' /></relation></osm>"
put :create put :create
# hope for success # hope for success
@ -294,9 +290,9 @@ class RelationControllerTest < ActionController::TestCase
"saved relation does not contain exactly one member" "saved relation does not contain exactly one member"
assert_equal checkrelation.tags.length, 1, assert_equal checkrelation.tags.length, 1,
"saved relation does not contain exactly one tag" "saved relation does not contain exactly one tag"
assert_equal changeset_id, checkrelation.changeset.id, assert_equal changeset.id, checkrelation.changeset.id,
"saved relation does not belong in the changeset it was assigned to" "saved relation does not belong in the changeset it was assigned to"
assert_equal users(:public_user).id, checkrelation.changeset.user_id, assert_equal user.id, checkrelation.changeset.user_id,
"saved relation does not belong to user that created it" "saved relation does not belong to user that created it"
assert_equal true, checkrelation.visible, assert_equal true, checkrelation.visible,
"saved relation is not visible" "saved relation is not visible"
@ -308,9 +304,8 @@ class RelationControllerTest < ActionController::TestCase
### ###
# create an relation with a node as member, this time test that we don't # create an relation with a node as member, this time test that we don't
# need a role attribute to be included # need a role attribute to be included
nid = current_nodes(:used_node_1).id content "<osm><relation changeset='#{changeset.id}'>" +
content "<osm><relation changeset='#{changeset_id}'>" + "<member ref='#{node.id}' type='node'/>" + "<tag k='test' v='yes' /></relation></osm>"
"<member ref='#{nid}' type='node'/>" + "<tag k='test' v='yes' /></relation></osm>"
put :create put :create
# hope for success # hope for success
assert_response :success, assert_response :success,
@ -325,9 +320,9 @@ class RelationControllerTest < ActionController::TestCase
"saved relation does not contain exactly one member" "saved relation does not contain exactly one member"
assert_equal checkrelation.tags.length, 1, assert_equal checkrelation.tags.length, 1,
"saved relation does not contain exactly one tag" "saved relation does not contain exactly one tag"
assert_equal changeset_id, checkrelation.changeset.id, assert_equal changeset.id, checkrelation.changeset.id,
"saved relation does not belong in the changeset it was assigned to" "saved relation does not belong in the changeset it was assigned to"
assert_equal users(:public_user).id, checkrelation.changeset.user_id, assert_equal user.id, checkrelation.changeset.user_id,
"saved relation does not belong to user that created it" "saved relation does not belong to user that created it"
assert_equal true, checkrelation.visible, assert_equal true, checkrelation.visible,
"saved relation is not visible" "saved relation is not visible"
@ -338,11 +333,9 @@ class RelationControllerTest < ActionController::TestCase
### ###
# create an relation with a way and a node as members # create an relation with a way and a node as members
nid = current_nodes(:used_node_1).id content "<osm><relation changeset='#{changeset.id}'>" +
wid = current_ways(:used_way).id "<member type='node' ref='#{node.id}' role='some'/>" +
content "<osm><relation changeset='#{changeset_id}'>" + "<member type='way' ref='#{way.id}' role='other'/>" +
"<member type='node' ref='#{nid}' role='some'/>" +
"<member type='way' ref='#{wid}' role='other'/>" +
"<tag k='test' v='yes' /></relation></osm>" "<tag k='test' v='yes' /></relation></osm>"
put :create put :create
# hope for success # hope for success
@ -358,9 +351,9 @@ class RelationControllerTest < ActionController::TestCase
"saved relation does not have exactly two members" "saved relation does not have exactly two members"
assert_equal checkrelation.tags.length, 1, assert_equal checkrelation.tags.length, 1,
"saved relation does not contain exactly one tag" "saved relation does not contain exactly one tag"
assert_equal changeset_id, checkrelation.changeset.id, assert_equal changeset.id, checkrelation.changeset.id,
"saved relation does not belong in the changeset it was assigned to" "saved relation does not belong in the changeset it was assigned to"
assert_equal users(:public_user).id, checkrelation.changeset.user_id, assert_equal user.id, checkrelation.changeset.user_id,
"saved relation does not belong to user that created it" "saved relation does not belong to user that created it"
assert_equal true, checkrelation.visible, assert_equal true, checkrelation.visible,
"saved relation is not visible" "saved relation is not visible"
@ -472,14 +465,15 @@ class RelationControllerTest < ActionController::TestCase
# Test creating a relation, with some invalid XML # Test creating a relation, with some invalid XML
# ------------------------------------- # -------------------------------------
def test_create_invalid_xml def test_create_invalid_xml
basic_authorization users(:public_user).email, "test" user = create(:user)
changeset = create(:changeset, :user => user)
node = create(:node)
# put the relation in a dummy fixture changeset that works basic_authorization user.email, "test"
changeset_id = changesets(:public_user_first_change).id
# create some xml that should return an error # create some xml that should return an error
content "<osm><relation changeset='#{changeset_id}'>" + content "<osm><relation changeset='#{changeset.id}'>" +
"<member type='type' ref='#{current_nodes(:used_node_1).id}' role=''/>" + "<member type='type' ref='#{node.id}' role=''/>" +
"<tag k='tester' v='yep'/></relation></osm>" "<tag k='tester' v='yep'/></relation></osm>"
put :create put :create
# expect failure # expect failure