Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/deseng 444: Engagement Metadata API #2362

Merged
merged 19 commits into from
Jan 25, 2024
Merged
Changes from 1 commit
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
[sonarcloud] Change content-type literals to use constant enums; remo…
…ve asserts on tuples
NatSquared committed Jan 24, 2024
commit 91133e7113b2b20d93df87a224362d4d87c7bd9d
29 changes: 15 additions & 14 deletions met-api/tests/unit/api/test_engagement_metadata.py
Original file line number Diff line number Diff line change
@@ -19,6 +19,7 @@
import json
from http import HTTPStatus
from faker import Faker
from met_api.utils.enums import ContentType
from met_api.services.engagement_metadata_service import EngagementMetadataService
from met_api.services.metadata_taxon_service import MetadataTaxonService
from tests.utilities.factory_utils import (
@@ -47,7 +48,7 @@ def test_get_engagement_metadata(client, jwt, session):
existing_metadata = engagement_metadata_service.get_by_engagement(engagement.id)
assert existing_metadata is not None
response = client.get(f'/api/engagements/{engagement.id}/metadata',
headers=headers, content_type='application/json')
headers=headers, content_type=ContentType.JSON.value)
assert response.status_code == HTTPStatus.OK
metadata_list = response.json
assert len(metadata_list) == 1
@@ -65,7 +66,7 @@ def test_add_engagement_metadata(client, jwt, session):
response = client.post(f'/api/engagements/{engagement.id}/metadata',
headers=headers,
data=json.dumps(data),
content_type='application/json')
content_type=ContentType.JSON.value)
assert response.status_code == HTTPStatus.CREATED
assert response.json.get('id') is not None
assert response.json.get('value') == data['value']
@@ -78,24 +79,24 @@ def test_add_engagement_metadata_invalid_engagement(client, jwt, session):
response = client.post(f'/api/engagements/{engagement.id+1}/metadata',
headers=headers,
data=json.dumps(data),
content_type='application/json')
assert (response.status_code == HTTPStatus.NOT_FOUND, f"Wrong response code; "
content_type=ContentType.JSON.value)
assert response.status_code == HTTPStatus.NOT_FOUND, (f"Wrong response code; "
f"HTTP {response.status_code} -> {response.text}")


def test_add_engagement_metadata_invalid_tenant(client, jwt, session):
"""Test that metadata cannot be added to an engagement in another tenant."""
taxon, engagement, tenant, headers = factory_metadata_requirements(jwt)
_, engagement, tenant, headers = factory_metadata_requirements(jwt)
# create a second tenant to test with
tenant2 = factory_tenant_model(TestTenantInfo.tenant2)
assert tenant2.id != tenant.id
taxon2 = factory_metadata_taxon_model(tenant2.id)
data = {'taxon_id':taxon2.id, 'value': fake.sentence()}
taxon = factory_metadata_taxon_model(tenant2.id)
data = {'taxon_id':taxon.id, 'value': fake.sentence()}
response = client.post(f'/api/engagements/{engagement.id}/metadata',
headers=headers,
data=json.dumps(data),
content_type='application/json')
assert (response.status_code == HTTPStatus.BAD_REQUEST, f"Wrong response code; "
content_type=ContentType.JSON.value)
assert response.status_code == HTTPStatus.BAD_REQUEST, (f"Wrong response code; "
f"HTTP {response.status_code} -> {response.text}")

def test_add_engagement_metadata_invalid_user(client, jwt, session):
@@ -107,7 +108,7 @@ def test_add_engagement_metadata_invalid_user(client, jwt, session):
response = client.post(f'/api/engagements/{engagement.id}/metadata',
headers=headers,
data=json.dumps(metadata_info),
content_type='application/json')
content_type=ContentType.JSON.value)
assert response.status_code == HTTPStatus.UNAUTHORIZED

def test_update_engagement_metadata(client, jwt, session):
@@ -121,8 +122,8 @@ def test_update_engagement_metadata(client, jwt, session):
response = client.patch(f'/api/engagements/{engagement.id}/metadata/{metadata.id}',
headers=headers,
data=json.dumps({'value': 'new value'}),
content_type='application/json')
assert (response.status_code == HTTPStatus.OK, f"Wrong response code; "
content_type=ContentType.JSON.value)
assert response.status_code == HTTPStatus.OK, (f"Wrong response code; "
f"HTTP {response.status_code} -> {response.text}")
assert response.json is not None
assert response.json.get('id') == metadata.id
@@ -139,6 +140,6 @@ def test_delete_engagement_metadata(client, jwt, session):
})
response = client.delete(f'/api/engagements/{engagement.id}/metadata/{metadata.id}',
headers=headers,
content_type='application/json')
assert (response.status_code == HTTPStatus.OK, f"Wrong response code; "
content_type=ContentType.JSON.value)
assert response.status_code == HTTPStatus.OK, (f"Wrong response code; "
f"HTTP {response.status_code} -> {response.text}")
11 changes: 6 additions & 5 deletions met-api/tests/unit/api/test_metadata_taxa.py
Original file line number Diff line number Diff line change
@@ -18,6 +18,7 @@

import json
from http import HTTPStatus
from met_api.utils.enums import ContentType
from met_api.models.engagement_metadata import MetadataTaxon
from met_api.services.engagement_metadata_service import EngagementMetadataService
from met_api.services.metadata_taxon_service import MetadataTaxonService
@@ -36,7 +37,7 @@ def test_get_tenant_metadata_taxa(client, jwt, session):
metadata_taxon = factory_metadata_taxon_model(tenant.id)
assert metatada_taxon_service.get_by_tenant(tenant.id) is not None
response = client.get(f'/api/tenants/{tenant.short_name}/metadata/taxa',
headers=headers, content_type='application/json')
headers=headers, content_type=ContentType.JSON.value)
assert response.status_code == HTTPStatus.OK, response.text
metadata_taxon_list = response.json
assert len(metadata_taxon_list) == 1, metadata_taxon_list
@@ -49,7 +50,7 @@ def test_get_taxon_by_id(client, jwt, session):
metadata_taxon = factory_metadata_taxon_model(tenant.id)
assert metatada_taxon_service.get_by_id(metadata_taxon.id) is not None
response = client.get(f'/api/tenants/{tenant.short_name}/metadata/taxon/{metadata_taxon.id}',
headers=headers, content_type='application/json')
headers=headers, content_type=ContentType.JSON.value)
assert response.status_code == HTTPStatus.OK, response.text
metadata_taxon = response.json
assert metadata_taxon['id'] is not None
@@ -61,7 +62,7 @@ def test_add_metadata_taxon(client, jwt, session):
response = client.post(f'/api/tenants/{tenant.short_name}/metadata/taxa',
headers=headers,
data=json.dumps(TestEngagementMetadataTaxonInfo.taxon1),
content_type='application/json')
content_type=ContentType.JSON.value)
assert response.status_code == HTTPStatus.CREATED
assert response.json.get('id') is not None
assert response.json.get('name') == TestEngagementMetadataTaxonInfo.taxon1['name']
@@ -77,7 +78,7 @@ def test_update_metadata_taxon(client, jwt, session):
response = client.patch(f'/api/tenants/{tenant.short_name}/metadata/taxon/{taxon.id}',
headers=headers,
data=json.dumps(data),
content_type='application/json')
content_type=ContentType.JSON.value)
assert response.status_code == HTTPStatus.OK, response.text
assert response.json.get('id') is not None, response.json
assert response.json.get('name') == TestEngagementMetadataTaxonInfo.taxon2['name']
@@ -95,7 +96,7 @@ def test_reorder_tenant_metadata_taxa(client, jwt, session):
data=json.dumps({'taxon_ids':[
taxon3.id, taxon1.id, taxon2.id
]}),
content_type='application/json')
content_type=ContentType.JSON.value)
assert response.status_code == HTTPStatus.OK, response.text
assert len(response.json) == 3
assert response.json[0].get('id') == taxon3.id
14 changes: 7 additions & 7 deletions met-api/tests/unit/models/test_engagement_metadata.py
Original file line number Diff line number Diff line change
@@ -34,11 +34,11 @@ def test_create_basic_engagement_metadata(session):
"taxon_id": taxon.id,
"value": fake.text(max_nb_chars=256)
})
assert (engagement_metadata.id is not None,
"Engagement Metadata ID is missing")
assert engagement_metadata.id is not None, (
"Engagement Metadata ID is missing")
engagement_metadata_existing = EngagementMetadata.find_by_id(engagement_metadata.id)
assert (engagement_metadata.value == engagement_metadata_existing.value,
"Engagement Metadata value is missing or incorrect")
assert engagement_metadata.value == engagement_metadata_existing.value, (
"Engagement Metadata value is missing or incorrect")

def test_engagement_metadata_relationships(session):
"""Assert that engagement metadata relationships are working."""
@@ -75,9 +75,9 @@ def test_create_engagement_metadata(session):
})
assert engagement_metadata.id is not None, "Engagement Metadata ID is missing"
engagement_metadata_existing = EngagementMetadata.find_by_id(engagement_metadata.id)
assert (engagement_metadata.value == engagement_metadata_existing.value,
assert engagement_metadata.value == engagement_metadata_existing.value, (
"Engagement Metadata value is missing or incorrect")
assert (engagement_metadata.taxon_id == engagement_metadata_existing.taxon_id,
assert engagement_metadata.taxon_id == engagement_metadata_existing.taxon_id, (
"Engagement Metadata taxon ID is missing or incorrect")
assert (engagement_metadata.engagement_id == engagement_metadata_existing.engagement_id,
assert engagement_metadata.engagement_id == engagement_metadata_existing.engagement_id, (
"Engagement Metadata engagement ID is missing or incorrect")