def test_valid_put(app, resolver): """Test VALID record patch request (PATCH .../records/<record_id>).""" with app.app_context(): # create the record using the internal API pid, internal_record = create_record(test_data) with app.test_client() as client: headers = [('Content-Type', 'application/json'), ('Accept', 'application/json')] res = client.put(url_for('invenio_records_rest.recid_item', pid_value=pid.pid_value), data=json.dumps(test_data_patched), headers=headers) assert res.status_code == 200 # check that the returned record matches the given data response_data = json.loads(res.get_data(as_text=True)) assert response_data['metadata'] == test_data_patched # check that an internal record returned id and that it contains # the same data assert 'id' in response_data.keys() pid, internal_record = resolver.resolve(response_data['id']) assert internal_record == response_data['metadata'] # check that the returned self link returns the same data subtest_self_link(response_data, res.headers, client)
def subtest_expected_hits(hits, expected, client): """Check that returned search hits are as expected.""" assert len(hits) == len(expected) for idx, record_data in enumerate(hits): expected_id = expected[idx][0] expected_data = expected[idx][1] # check that the returned self link returns the same data subtest_self_link(record_data, None, client) assert str(record_data['id']) == expected_id assert record_data['metadata'] == expected_data
def test_valid_get(app): """Test VALID record get request (GET .../records/<record_id>).""" with app.app_context(): # create the record using the internal API pid, record = create_record(test_data) with app.test_client() as client: headers = [('Accept', 'application/json')] res = client.get(url_for('invenio_records_rest.recid_item', pid_value=pid.pid_value), headers=headers) assert res.status_code == 200 # check that the returned record matches the given data response_data = json.loads(res.get_data(as_text=True)) assert response_data['metadata'] == control_num(test_data) # check the returned id assert 'id' in response_data.keys() assert str(response_data['id']) == pid.pid_value # check that the returned self link returns the same data subtest_self_link(response_data, res.headers, client)
def test_valid_create(app, resolver): """Test VALID record creation request (POST .../records/).""" with app.app_context(): with app.test_client() as client: headers = [('Content-Type', 'application/json'), ('Accept', 'application/json')] res = client.post(url_for('invenio_records_rest.recid_list'), data=json.dumps(test_data), headers=headers) assert res.status_code == 201 # check that the returned record matches the given data response_data = json.loads(res.get_data(as_text=True)) # note that recid_minter ingests the control_number. assert response_data['metadata'] == control_num(test_data) # check that an internal record returned id and that it contains # the same data assert 'id' in response_data.keys() pid, internal_record = resolver.resolve(response_data['id']) assert internal_record == response_data['metadata'] # check that the returned self link returns the same data subtest_self_link(response_data, res.headers, client)