Skip to content

Commit

Permalink
refactor tests an clean-up tests, split up cases stop pointless reloads
Browse files Browse the repository at this point in the history
  • Loading branch information
Johnetordoff committed Jan 24, 2025
1 parent 2342d3e commit b8e7358
Show file tree
Hide file tree
Showing 3 changed files with 450 additions and 426 deletions.
111 changes: 46 additions & 65 deletions api_tests/institutions/views/test_institution_relationship_nodes.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,43 +38,43 @@ def node(self):

@pytest.fixture()
def user(self, institution):
user = AuthUserFactory()
user.add_or_update_affiliated_institution(institution)
user.save()
return user
user_auth = AuthUserFactory()
user_auth.add_or_update_affiliated_institution(institution)
user_auth.save()
return user_auth

@pytest.fixture()
def node_one(self, user, institution):
node = NodeFactory(creator=user)
node.affiliated_institutions.add(institution)
node.save()
return node
project = NodeFactory(creator=user)
project.affiliated_institutions.add(institution)
project.save()
return project

@pytest.fixture()
def node_without_institution(self, user):
return NodeFactory(creator=user)

@pytest.fixture()
def node_public(self, user, institution):
node_public = NodeFactory(is_public=True)
node_public.affiliated_institutions.add(institution)
node_public.save()
return node_public
project = NodeFactory(is_public=True)
project.affiliated_institutions.add(institution)
project.save()
return project

@pytest.fixture()
def admin(self, institution, node_public):
user = AuthUserFactory()
user.add_or_update_affiliated_institution(institution)
node_public.add_contributor(user, permissions=permissions.ADMIN)
user.save()
return user
user_auth = AuthUserFactory()
user_auth.add_or_update_affiliated_institution(institution)
node_public.add_contributor(user_auth, permissions=permissions.ADMIN)
user_auth.save()
return user_auth

@pytest.fixture()
def node_private(self, user, institution):
node_private = NodeFactory()
node_private.affiliated_institutions.add(institution)
node_private.save()
return node_private
project = NodeFactory()
project.affiliated_institutions.add(institution)
project.save()
return project

@pytest.fixture()
def url_institution_nodes(self, institution):
Expand Down Expand Up @@ -104,18 +104,25 @@ def test_node_does_not_exist(self, app, user, node_without_institution, url_inst
res = app.post_json_api(
url_institution_nodes,
make_payload('notIdatAll'),
expect_errors=True, auth=user.auth
expect_errors=True,
auth=user.auth
)

assert res.status_code == 404

def test_node_type_does_not_exist(self, app, user, node_without_institution, url_institution_nodes):

# test_node_type_does_not_exist
res = app.post_json_api(
url_institution_nodes,
{'data': [{'type': 'dugtrio', 'id': node_without_institution._id}]},
expect_errors=True, auth=user.auth
{
'data': [
{
'type': 'dugtrio',
'id': node_without_institution._id
}
]
},
expect_errors=True,
auth=user.auth
)

assert res.status_code == 409
Expand All @@ -137,11 +144,7 @@ def test_user_with_nodes_and_permissions(
node_without_institution.reload()
assert institution in node_without_institution.affiliated_institutions.all()

def test_user_does_not_have_node(
self, app, node,
url_institution_nodes, user,
institution
):
def test_user_does_not_have_node(self, app, node, url_institution_nodes, user, institution):
res = app.post_json_api(
url_institution_nodes,
make_payload(node._id),
Expand All @@ -152,11 +155,7 @@ def test_user_does_not_have_node(
node.reload()
assert institution not in node.affiliated_institutions.all()

def test_user_is_admin(
self, app, node_without_institution,
url_institution_nodes, user,
institution
):
def test_user_is_admin(self, app, node_without_institution, url_institution_nodes, user, institution):
res = app.post_json_api(
url_institution_nodes,
make_payload(node_without_institution._id),
Expand All @@ -166,11 +165,7 @@ def test_user_is_admin(
node_without_institution.reload()
assert institution in node_without_institution.affiliated_institutions.all()

def test_user_is_read_write(
self, app, node,
url_institution_nodes,
institution
):
def test_user_is_read_write(self, app, node, url_institution_nodes, institution, user):
user = AuthUserFactory()
user.add_or_update_affiliated_institution(institution)
node.add_contributor(user)
Expand All @@ -185,11 +180,7 @@ def test_user_is_read_write(
node.reload()
assert institution in node.affiliated_institutions.all()

def test_user_is_read_only(
self, app, node,
url_institution_nodes,
institution
):
def test_user_is_read_only(self, app, node, url_institution_nodes, institution, user):
user = AuthUserFactory()
user.add_or_update_affiliated_institution(institution)
node.add_contributor(user, permissions=permissions.READ)
Expand All @@ -198,15 +189,15 @@ def test_user_is_read_only(
res = app.post_json_api(
url_institution_nodes,
make_payload(node._id),
auth=user.auth, expect_errors=True
auth=user.auth,
expect_errors=True
)

assert res.status_code == 403
node.reload()
assert institution not in node.affiliated_institutions.all()

def test_user_is_admin_but_not_affiliated(
self, app, url_institution_nodes, institution):
def test_user_is_admin_but_not_affiliated(self, app, url_institution_nodes, institution, user):
user = AuthUserFactory()
node = NodeFactory(creator=user)
res = app.post_json_api(
Expand Down Expand Up @@ -288,10 +279,7 @@ def test_only_add_existent_with_permissions(

assert res.status_code == 204

def test_delete_user_is_admin(
self, app, url_institution_nodes,
node_one, user, institution
):
def test_delete_user_is_admin(self, app, url_institution_nodes, node_one, user, institution):
res = app.delete_json_api(
url_institution_nodes,
make_payload(node_one._id),
Expand All @@ -301,11 +289,7 @@ def test_delete_user_is_admin(
assert res.status_code == 204
assert institution not in node_one.affiliated_institutions.all()

def test_delete_user_is_read_write(
self, app, node_private,
user, url_institution_nodes,
institution
):
def test_delete_user_is_read_write(self, app, node_private, user, url_institution_nodes, institution):
node_private.add_contributor(user)
node_private.save()

Expand All @@ -319,10 +303,7 @@ def test_delete_user_is_read_write(
assert res.status_code == 204
assert institution not in node_private.affiliated_institutions.all()

def test_delete_user_is_read_only(
self, node_private, user,
app, url_institution_nodes,
institution):
def test_delete_user_is_read_only(self, node_private, user, app, url_institution_nodes, institution):
node_private.add_contributor(user, permissions=permissions.READ)
node_private.save()

Expand Down Expand Up @@ -350,8 +331,8 @@ def test_delete_user_is_admin_and_affiliated_with_inst(
node_one.reload()
assert institution not in node_one.affiliated_institutions.all()

def test_delete_user_is_admin_but_not_affiliated_with_inst(
self, institution, app, url_institution_nodes):
def test_delete_user_is_admin_but_not_affiliated_with_inst(self, institution, app, url_institution_nodes, node,
user):
user = AuthUserFactory()
node = NodeFactory(creator=user)
node.affiliated_institutions.add(institution)
Expand Down Expand Up @@ -414,7 +395,7 @@ def test_email_sent_on_affiliation_addition(self, app, user, institution, node_w
mocked_send_mail.assert_called_once()
call_args = mocked_send_mail.call_args[1]
assert institution in call_args['institution_added']
assert set([current_institution, institution]) == set(call_args['current_affiliations'])
assert {current_institution, institution} == set(call_args['current_affiliations'])

def test_email_sent_on_affiliation_removal(self, app, admin, institution, node_public, url_institution_nodes):
current_institution = InstitutionFactory()
Expand Down
Loading

0 comments on commit b8e7358

Please sign in to comment.