diff --git a/tests/unit/routes/test_person_router.py b/tests/unit/routes/test_person_router.py index 4b2ab07e..c47624a3 100644 --- a/tests/unit/routes/test_person_router.py +++ b/tests/unit/routes/test_person_router.py @@ -228,113 +228,113 @@ def testInvalidPerson(self, client): assert response.status_code == 404 -# class TestGetOrphanedPersons: -# def testGetOrphanedPersons(self, client): -# person1 = models.Person() -# patient1 = models.Patient(person=person1, data={}) - -# person2 = models.Person() -# client.session.add_all([patient1, person2]) -# client.session.flush() - -# response = client.get("/person/orphaned") -# assert response.status_code == 200 -# assert response.json() == { -# "data": [str(person2.reference_id)], -# "meta": {"next_cursor": None, "next": None}, -# } - -# def test_no_orphaned_persons(self, client): -# response = client.get("/person/orphaned") -# assert response.status_code == 200 -# assert response.json() == { -# "data": [], -# "meta": {"next_cursor": None, "next": None}, -# } - -# def test_get_orphaned_persons_with_limit(self, client): -# person1 = models.Person(id=1) -# person2 = models.Person(id=2) -# person3 = models.Person(id=3) -# person4 = models.Person(id=4) -# client.session.add_all([person1, person2, person3, person4]) -# client.session.flush() - -# response = client.get("/person/orphaned?limit=2") -# assert response.status_code == 200 -# assert response.json() == { -# "data": [str(person1.reference_id), str(person2.reference_id)], -# "meta": { -# "next_cursor": str(person2.reference_id), -# "next": f"http://testserver/person/orphaned?limit=2&cursor={str(person2.reference_id)}", -# }, -# } - -# response = client.get(f"/person/orphaned?limit=2&cursor={person2.reference_id}") -# assert response.json() == { -# "data": [str(person3.reference_id), str(person4.reference_id)], -# "meta": { -# "next_cursor": str(person4.reference_id), -# "next": f"http://testserver/person/orphaned?limit=2&cursor={str(person4.reference_id)}", -# }, -# } - -# response = client.get(f"/person/orphaned?limit=5&cursor={person2.reference_id}") -# assert response.json() == { -# "data": [str(person3.reference_id), str(person4.reference_id)], -# "meta": {"next_cursor": None, "next": None}, -# } - -# def test_get_orphaned_persons_with_cursor(self, client): -# person1 = models.Person(reference_id=uuid.uuid4(), id=1) -# patient1 = models.Patient(person=person1) -# patient2 = models.Patient(person=None) -# person3 = models.Person(id=3) -# person4 = models.Person(id=4) -# client.session.add_all([patient1, patient2, person3, person4]) -# client.session.flush() - -# # Retrieve 1 person after person 1, return no cursor -# response = client.get(f"/person/orphaned?&cursor={person3.reference_id}") -# assert response.status_code == 200 -# assert response.json() == { -# "data": [str(person4.reference_id)], -# "meta": { -# "next_cursor": None, -# "next": None, -# }, -# } - -# # Retrieve 1 person after person 1, return cursor for person 3 -# response = client.get(f"/person/orphaned?limit=1&cursor={person1.reference_id}") -# assert response.json() == { -# "data": [str(person3.reference_id)], -# "meta": { -# "next_cursor": str(person3.reference_id), -# "next": f"http://testserver/person/orphaned?limit=1&cursor={str(person3.reference_id)}", -# }, -# } - -# # Retrieve 2 persons after person 2, return cursor for person 4 -# response = client.get(f"/person/orphaned?limit=2&cursor={person1.reference_id}") -# assert response.json() == { -# "data": [str(person3.reference_id), str(person4.reference_id)], -# "meta": { -# "next_cursor": str(person4.reference_id), -# "next": f"http://testserver/person/orphaned?limit=2&cursor={str(person4.reference_id)}", -# }, -# } - -# def test_invalid_cursor(self, client): -# # Return 422 if bad patient reference_id is provided as cursor -# response = client.get(f"/person/orphaned?limit=1&cursor={uuid.uuid4()}") -# assert response.status_code == 422 -# assert response.json() == { -# "detail": [ -# { -# "loc": ["query", "cursor"], -# "msg": "Cursor is an invalid Person reference_id", -# "type": "value_error", -# } -# ] -# } +class TestGetOrphanedPersons: + def testGetOrphanedPersons(self, client): + person1 = models.Person() + patient1 = models.Patient(person=person1, data={}) + + person2 = models.Person() + client.session.add_all([patient1, person2]) + client.session.flush() + + response = client.get("/person/orphaned") + assert response.status_code == 200 + assert response.json() == { + "data": [str(person2.reference_id)], + "meta": {"next_cursor": None, "next": None}, + } + + def test_no_orphaned_persons(self, client): + response = client.get("/person/orphaned") + assert response.status_code == 200 + assert response.json() == { + "data": [], + "meta": {"next_cursor": None, "next": None}, + } + + def test_get_orphaned_persons_with_limit(self, client): + person1 = models.Person(id=1) + person2 = models.Person(id=2) + person3 = models.Person(id=3) + person4 = models.Person(id=4) + client.session.add_all([person1, person2, person3, person4]) + client.session.flush() + + response = client.get("/person/orphaned?limit=2") + assert response.status_code == 200 + assert response.json() == { + "data": [str(person1.reference_id), str(person2.reference_id)], + "meta": { + "next_cursor": str(person2.reference_id), + "next": f"http://testserver/person/orphaned?limit=2&cursor={str(person2.reference_id)}", + }, + } + + response = client.get(f"/person/orphaned?limit=2&cursor={person2.reference_id}") + assert response.json() == { + "data": [str(person3.reference_id), str(person4.reference_id)], + "meta": { + "next_cursor": str(person4.reference_id), + "next": f"http://testserver/person/orphaned?limit=2&cursor={str(person4.reference_id)}", + }, + } + + response = client.get(f"/person/orphaned?limit=5&cursor={person2.reference_id}") + assert response.json() == { + "data": [str(person3.reference_id), str(person4.reference_id)], + "meta": {"next_cursor": None, "next": None}, + } + + def test_get_orphaned_persons_with_cursor(self, client): + person1 = models.Person(reference_id=uuid.uuid4(), id=1) + patient1 = models.Patient(person=person1) + patient2 = models.Patient(person=None) + person3 = models.Person(id=3) + person4 = models.Person(id=4) + client.session.add_all([patient1, patient2, person3, person4]) + client.session.flush() + + # Retrieve 1 person after person 1, return no cursor + response = client.get(f"/person/orphaned?&cursor={person3.reference_id}") + assert response.status_code == 200 + assert response.json() == { + "data": [str(person4.reference_id)], + "meta": { + "next_cursor": None, + "next": None, + }, + } + + # Retrieve 1 person after person 1, return cursor for person 3 + response = client.get(f"/person/orphaned?limit=1&cursor={person1.reference_id}") + assert response.json() == { + "data": [str(person3.reference_id)], + "meta": { + "next_cursor": str(person3.reference_id), + "next": f"http://testserver/person/orphaned?limit=1&cursor={str(person3.reference_id)}", + }, + } + + # Retrieve 2 persons after person 2, return cursor for person 4 + response = client.get(f"/person/orphaned?limit=2&cursor={person1.reference_id}") + assert response.json() == { + "data": [str(person3.reference_id), str(person4.reference_id)], + "meta": { + "next_cursor": str(person4.reference_id), + "next": f"http://testserver/person/orphaned?limit=2&cursor={str(person4.reference_id)}", + }, + } + + def test_invalid_cursor(self, client): + # Return 422 if bad patient reference_id is provided as cursor + response = client.get(f"/person/orphaned?limit=1&cursor={uuid.uuid4()}") + assert response.status_code == 422 + assert response.json() == { + "detail": [ + { + "loc": ["query", "cursor"], + "msg": "Cursor is an invalid Person reference_id", + "type": "value_error", + } + ] + }