Esempio n. 1
0
def test_postcode_search_results(app_test_client):
    # Given
    postcode = 'AB1 2CD'
    url_safe_postcode = urllib.parse.quote(postcode)
    case = {
        'organisationName': 'test_org',
        'addressLine1': 'Somewhere',
        'addressLine2': 'Over The',
        'addressLine3': 'Rainbow',
        'townName': 'Newport',
        'postcode': postcode,
        'caseType': 'HH',
        'addressLevel': 'U',
        'estabType': 'HOUSEHOLD',
        'caseRef': '123456789'
    }

    # Mock the case API response
    responses.add(responses.GET, f'{TestConfig.CASE_API_URL}/cases/postcode/{url_safe_postcode}',
                  body=json.dumps([case]))

    # When
    response = app_test_client.get(f'/postcode/?postcode={url_safe_postcode}')

    # Then
    unittest_helper.assertEqual(response.status_code, 200)
    unittest_helper.assertIn(f'1 result for postcode: "{postcode}"'.encode(), response.data)

    # Check the address summary line is there
    unittest_helper.assertIn(
        ', '.join([v for k, v in case.items() if k in ADDRESS_SUMMARY_FIELDS]).encode(),
        response.data)
    for value in case.values():
        unittest_helper.assertIn(value.encode(), response.data)
def assert_case_details(case_details_payload, response):
    for value in case_details_payload.values():
        if isinstance(value, list):
            for item in value:
                assert_case_details(item, response)
        elif isinstance(value, dict):
            assert_case_details(value, response)
        else:
            unittest_helper.assertIn(value.encode(), response.data)
def test_get_qid_for_linking(app_test_client):
    # Given
    case_id = str(uuid.uuid4())
    qid = '1234567890'

    qid_payload = {
        'caseId': case_id,
        'questionnaireId': qid,
    }

    # Mock the case API response
    responses.add(responses.GET,
                  f'{TestConfig.CASE_API_URL}/qids/{qid}',
                  body=json.dumps(qid_payload))
    # When
    response = app_test_client.get(
        f'case-details/link-qid/?qid={qid}&case_id={case_id}')

    # Then
    unittest_helper.assertEqual(response.status_code, 200)
    unittest_helper.assertIn(f'<b>QID:</b> {qid}'.encode(), response.data)
    unittest_helper.assertIn(f'<b>Case ID:</b> {case_id}'.encode(),
                             response.data)
    unittest_helper.assertIn(
        'Warning: This QID is already linked to a case. If you submit it will be re-linked.'
        .encode(), response.data)
    unittest_helper.assertIn('Link QID'.encode(), response.data)
Esempio n. 4
0
def test_postcode_search_no_results(app_test_client):
    # Given
    no_matches_postcode = 'test'

    # Mock the case API response
    responses.add(responses.GET,
                  f'{TestConfig.CASE_API_URL}/cases/postcode/{no_matches_postcode}',
                  status=404)

    # When
    response = app_test_client.get(f'/postcode/?postcode={no_matches_postcode}')

    # Then
    unittest_helper.assertEqual(response.status_code, 200)
    unittest_helper.assertIn(f'0 results for postcode: "{no_matches_postcode}"'.encode(), response.data)
Esempio n. 5
0
def test_postcode_search(app_test_client):
    # When
    response = app_test_client.get('/')

    # Then
    unittest_helper.assertEqual(response.status_code, 200)
    unittest_helper.assertIn(b'Census ROps Case Management', response.data)
    unittest_helper.assertIn(b'Search cases', response.data)
    unittest_helper.assertIn(b'Enter a postcode', response.data)
def test_submitting_qid_link_to_case_api(app_test_client):
    # Given
    case_id = str(uuid.uuid4())
    qid = '1234567890'
    url_safe_case_id = urllib.parse.quote(case_id)

    qid_case_api_payload = {
        'caseId': case_id,
        'questionnaireId': qid,
    }
    request_qid_payload = {
        'case_id': case_id,
        'qid': qid,
    }
    event_payload = json.dumps({"caseId": case_id, "qid": qid})

    case_details_payload = {
        'id':
        case_id,
        'organisationName':
        'test_org',
        'addressLine1':
        'Somewhere',
        'addressLine2':
        'Over The',
        'addressLine3':
        'Rainbow',
        'townName':
        'Newport',
        'postcode':
        'XX0 0XX',
        'caseType':
        'HH',
        'addressLevel':
        'U',
        'estabType':
        'HOUSEHOLD',
        'caseRef':
        '123456789',
        'events': [
            {
                'id': '14063759-c608-4f9f-8fa5-988f52260d7f',
                'eventType': 'QUESTIONNAIRE_LINKED',
                'rmEventProcessed': '2020-08-26T07:38:47.453158Z',
                'eventDescription': 'Questionnaire Linked',
                'eventDate': '2020-08-26T07:38:47.453158Z',
                'type': 'None',
                'channel': 'RM',
                'transactionId': 'None',
                'eventPayload': event_payload
            },
        ]
    }

    responses.add(
        responses.GET,
        f'{TestConfig.CASE_API_URL}/cases/case-details/{url_safe_case_id}',
        body=json.dumps(case_details_payload))

    # Mock the case API response
    responses.add(responses.PUT,
                  f'{TestConfig.CASE_API_URL}/qids/link',
                  json=qid_case_api_payload)
    # When
    response = app_test_client.post('case-details/link-qid/submit/',
                                    follow_redirects=True,
                                    data=request_qid_payload)

    # Then
    unittest_helper.assertEqual(response.status_code, 200)
    unittest_helper.assertIn('QUESTIONNAIRE_LINKED'.encode(), response.data)
    unittest_helper.assertIn('QID link has been submitted'.encode(),
                             response.data)
def test_get_qid_failed_linking(app_test_client):
    # Given
    case_id = str(uuid.uuid4())
    qid = '1234567890'
    url_safe_case_id = urllib.parse.quote(case_id)

    case_details_payload = {
        'id':
        case_id,
        'organisationName':
        'test_org',
        'addressLine1':
        'Somewhere',
        'addressLine2':
        'Over The',
        'addressLine3':
        'Rainbow',
        'townName':
        'Newport',
        'postcode':
        'XX0 0XX',
        'caseType':
        'HH',
        'addressLevel':
        'U',
        'estabType':
        'HOUSEHOLD',
        'caseRef':
        '123456789',
        'events': [
            {
                'id': '14063759-c608-4f9f-8fa5-988f52260d7f',
                'eventType': 'SAMPLE_LOADED',
                'rmEventProcessed': '2020-08-26T07:38:47.453158Z',
                'eventDescription': 'Create case sample received',
                'eventDate': '2020-08-26T07:38:47.453158Z',
                'type': 'None',
                'channel': 'RM',
                'transactionId': 'None',
                'eventPayload': '{\"testKey\": \"testValue\"}'
            },
        ]
    }
    # Mock the case API response
    responses.add(responses.GET,
                  f'{TestConfig.CASE_API_URL}/qids/{qid}',
                  status=404)

    responses.add(
        responses.GET,
        f'{TestConfig.CASE_API_URL}/cases/case-details/{url_safe_case_id}',
        body=json.dumps(case_details_payload))
    # When
    response = app_test_client.get(
        f'case-details/link-qid/?qid={qid}&case_id={case_id}',
        follow_redirects=True)

    # Then
    unittest_helper.assertEqual(response.status_code, 200)
    unittest_helper.assertIn('QID does not exist in RM'.encode(),
                             response.data)