felicity-lims/felicity/tests/sample_workflow/test_08_sample.py
2023-04-07 17:52:19 +02:00

104 lines
2.7 KiB
Python

import logging
import pytest
from felicity.apps.impress.tasks import impress_results
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
@pytest.mark.asyncio
@pytest.mark.order(90)
async def test_sample_publish(gql_client, auth_data):
add_gql = """
mutation PublishSamples ($samples: [SamplePublishInputType!]!) {
publishSamples(samples: $samples){
... on OperationSuccess{
__typename
message
}
... on OperationError {
__typename
error
suggestion
}
}
}
"""
response = await gql_client.post(
"/felicity-gql",
json={
"query": add_gql,
"variables": {
"samples": [
{"uid": 1, "action": "publish"},
{"uid": 2, "action": "publish"},
{"uid": 3, "action": "publish"},
{"uid": 4, "action": "publish"},
{"uid": 5, "action": "publish"},
],
},
},
headers=auth_data["headers"],
)
logger.info(f"publishing samples response: {response} {response.json()}")
assert response.status_code == 200
_data = response.json()["data"]["publishSamples"]
assert _data["message"] == "Your results are being published in the background."
# process job for the next test
await impress_results(6)
@pytest.mark.asyncio
@pytest.mark.order(91)
async def test_sample_invalidate(gql_client, auth_data):
add_gql = """
mutation InvalidateSamples ($samples: [Int!]!) {
invalidateSamples(samples: $samples){
... on SampleListingType{
__typename
samples {
uid
status
sampleId
}
}
... on OperationError {
__typename
error
suggestion
}
}
}
"""
response = await gql_client.post(
"/felicity-gql",
json={
"query": add_gql,
"variables": {
"samples": [1],
},
},
headers=auth_data["headers"],
)
logger.info(f"publishing samples response: {response} {response.json()}")
assert response.status_code == 200
_data = response.json()["data"]["invalidateSamples"]
assert len(_data["samples"]) == 2
for _, sample in enumerate(_data["samples"]):
if sample["uid"] == 1:
assert sample["status"] == "invalidated"
assert sample["sampleId"].endswith("_R01") is False
else:
assert sample["status"] == "received"
assert sample["sampleId"].endswith("_R01") is True