This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

at main 1.8 kB View raw
1from __future__ import annotations 2 3from unittest.mock import patch 4 5import pytest 6from fastapi.testclient import TestClient 7 8from app.main import app 9from app.questionnaires import IssueUriError, QuestionnaireNotFoundError 10 11client = TestClient(app) 12 13SAMPLE_URI = "at://did:plc:zmjoeu3stwcn44647rhxa44o/sh.tangled.repo.issue/3lvzel2uo3a22" 14SAMPLE_PAYLOAD = { 15 "issue": SAMPLE_URI, 16 "version": 2, 17 "introduction": {"project": "p", "issue": "i", "approach": "a"}, 18 "items": [], 19} 20 21 22def test_questionnaire_missing_param(): 23 res = client.get("/questionnaire") 24 assert res.status_code == 400 25 26 27def test_questionnaire_not_found(): 28 with patch("app.questionnaires.load_questionnaire_payload") as load: 29 load.side_effect = QuestionnaireNotFoundError(SAMPLE_URI) 30 res = client.get("/questionnaire", params={"issue": SAMPLE_URI}) 31 assert res.status_code == 404 32 33 34def test_questionnaire_returns_payload(): 35 with patch("app.questionnaires.load_questionnaire_payload", return_value=SAMPLE_PAYLOAD): 36 res = client.get("/questionnaire", params={"issue": SAMPLE_URI}) 37 assert res.status_code == 200 38 assert res.json() == SAMPLE_PAYLOAD 39 40 41def test_questionnaire_accepts_issue_uri_alias(): 42 with patch("app.questionnaires.load_questionnaire_payload", return_value=SAMPLE_PAYLOAD) as load: 43 res = client.get("/questionnaire", params={"issue-uri": SAMPLE_URI}) 44 assert res.status_code == 200 45 load.assert_called_once_with(SAMPLE_URI) 46 47 48def test_questionnaire_bad_issue_uri(): 49 with patch( 50 "app.questionnaires.load_questionnaire_payload", 51 side_effect=IssueUriError("bad"), 52 ): 53 res = client.get("/questionnaire", params={"issue": "not-a-uri"}) 54 assert res.status_code == 400