Пример #1
0
def test_patrons_get(client, user_librarian_no_email):
    """Test record retrieval."""
    patron = user_librarian_no_email
    item_url = url_for('invenio_records_rest.ptrn_item', pid_value='ptrn1')
    list_url = url_for('invenio_records_rest.ptrn_list', q='pid:ptrn1')

    res = client.get(item_url)
    assert res.status_code == 200

    assert res.headers['ETag'] == '"{}"'.format(patron.revision_id)

    data = get_json(res)
    assert patron.dumps() == data['metadata']

    # Check metadata
    for k in ['created', 'updated', 'metadata', 'links']:
        assert k in data

    # Check self links
    res = client.get(to_relative_url(data['links']['self']))
    assert res.status_code == 200
    assert data == get_json(res)
    assert patron.dumps() == data['metadata']

    res = client.get(list_url)
    assert res.status_code == 200
    data = get_json(res)

    assert data['hits']['hits'][0]['metadata'] == patron.replace_refs()
def test_libraries_get(client, lib_martigny):
    """Test record retrieval."""
    item_url = url_for('invenio_records_rest.lib_item', pid_value='lib1')
    list_url = url_for('invenio_records_rest.lib_list', q='pid:lib1')

    res = client.get(item_url)
    assert res.status_code == 200

    assert res.headers['ETag'] == '"{}"'.format(lib_martigny.revision_id)

    data = get_json(res)
    assert lib_martigny.dumps() == data['metadata']

    # Check metadata
    for k in ['created', 'updated', 'metadata', 'links']:
        assert k in data

    # Check self links
    res = client.get(to_relative_url(data['links']['self']))
    assert res.status_code == 200
    assert data == get_json(res)
    assert lib_martigny.dumps() == data['metadata']

    res = client.get(list_url)
    assert res.status_code == 200
    data = get_json(res)

    assert data['hits']['hits'][0]['metadata'] == lib_martigny.replace_refs()
Пример #3
0
def test_templates_get(client, templ_doc_public_martigny):
    """Test template retrieval."""
    template = templ_doc_public_martigny
    item_url = url_for('invenio_records_rest.tmpl_item', pid_value='tmpl1')

    res = client.get(item_url)
    assert res.status_code == 200
    assert res.headers['ETag'] == '"{}"'.format(template.revision_id)
    data = get_json(res)
    assert template.dumps() == data['metadata']

    # Check metadata
    for k in ['created', 'updated', 'metadata', 'links']:
        assert k in data

    # Check self links
    res = client.get(to_relative_url(data['links']['self']))
    assert res.status_code == 200
    json = get_json(res)
    assert data == json
    assert template.dumps() == data['metadata']

    list_url = url_for('invenio_records_rest.tmpl_list', q='pid:tmpl1')
    res = client.get(list_url)
    assert res.status_code == 200
    data = get_json(res)
    assert data['hits']['hits'][0]['metadata'] == template.replace_refs()
Пример #4
0
def test_budgets_get(client, budget_2020_martigny):
    """Test record retrieval."""
    item_url = url_for('invenio_records_rest.budg_item', pid_value='budg1')
    budget = budget_2020_martigny
    res = client.get(item_url)
    assert res.status_code == 200

    assert res.headers['ETag'] == '"{}"'.format(budget.revision_id)

    data = get_json(res)
    assert budget.dumps() == data['metadata']

    # Check metadata
    for k in ['created', 'updated', 'metadata', 'links']:
        assert k in data

    # Check self links
    res = client.get(to_relative_url(data['links']['self']))
    assert res.status_code == 200
    assert data == get_json(res)
    assert budget.dumps() == data['metadata']

    list_url = url_for('invenio_records_rest.budg_list', pid='budg1')
    res = client.get(list_url)
    assert res.status_code == 200
    data = get_json(res)

    assert data['hits']['hits'][0]['metadata'] == budget.replace_refs()
Пример #5
0
def test_circ_policies_get(client, circ_policy_default_martigny):
    """Test policy retrieval."""
    circ_policy = circ_policy_default_martigny
    item_url = url_for('invenio_records_rest.cipo_item', pid_value='cipo1')

    res = client.get(item_url)
    assert res.status_code == 200

    assert res.headers['ETag'] == '"{}"'.format(circ_policy.revision_id)

    data = get_json(res)
    assert circ_policy.dumps() == data['metadata']

    # Check metadata
    for k in ['created', 'updated', 'metadata', 'links']:
        assert k in data

    # Check self links
    res = client.get(to_relative_url(data['links']['self']))
    assert res.status_code == 200
    json = get_json(res)
    assert data == json
    assert circ_policy.dumps() == data['metadata']

    list_url = url_for('invenio_records_rest.cipo_list', pid='cipo1')
    res = client.get(list_url)
    assert res.status_code == 200
    data = get_json(res)

    assert data['hits']['hits'][0]['metadata'] == circ_policy.replace_refs()
Пример #6
0
def test_mef_persons_get(client, mef_person):
    """Test record retrieval."""
    item_url = url_for('invenio_records_rest.pers_item', pid_value='pers1')

    res = client.get(item_url)
    assert res.status_code == 200

    assert res.headers['ETag'] == '"{}"'.format(mef_person.revision_id)

    data = get_json(res)
    assert mef_person.dumps() == data['metadata']

    # Check metadata
    for k in ['created', 'updated', 'metadata', 'links']:
        assert k in data

    # Check self links
    res = client.get(to_relative_url(data['links']['self']))
    assert res.status_code == 200
    assert data == get_json(res)
    assert mef_person.dumps() == data['metadata']

    list_url = url_for('invenio_records_rest.pers_list', pid='pers1')
    res = client.get(list_url)
    assert res.status_code == 200
    data = get_json(res)

    assert data['hits']['hits'][0]['metadata'] == mef_person.replace_refs()
Пример #7
0
def test_patrons_get(client, librarian_martigny):
    """Test record retrieval."""
    patron = librarian_martigny
    item_url = url_for('invenio_records_rest.ptrn_item',
                       pid_value=librarian_martigny.pid)
    list_url = url_for('invenio_records_rest.ptrn_list',
                       q='pid:{pid}'.format(pid=librarian_martigny.pid))

    res = client.get(item_url)
    assert res.status_code == 200

    assert res.headers['ETag'] == '"{}"'.format(patron.revision_id)

    data = get_json(res)
    assert patron.dumps() == data['metadata']

    # Check metadata
    for k in ['created', 'updated', 'metadata', 'links']:
        assert k in data

    # Check self links
    res = client.get(to_relative_url(data['links']['self']))
    assert res.status_code == 200
    assert data == get_json(res)
    assert patron.dumps() == data['metadata']

    res = client.get(list_url)
    assert res.status_code == 200
    data = get_json(res)
    result = data['hits']['hits'][0]['metadata']
    # organisation has been added during the indexing
    del (result['organisation'])
    assert result == patron.replace_refs().dumps()
Пример #8
0
def test_ill_requests_get(client, ill_request_martigny):
    """Test record retrieval."""
    ill_request = ill_request_martigny
    item_url = url_for('invenio_records_rest.illr_item', pid_value='illr1')
    res = client.get(item_url)
    assert res.status_code == 200
    assert res.headers['ETag'] == '"{}"'.format(ill_request.revision_id)

    data = get_json(res)
    assert ill_request.dumps() == data['metadata']

    # Check metadata
    for k in ['created', 'updated', 'metadata', 'links']:
        assert k in data

    # Check self links
    res = client.get(to_relative_url(data['links']['self']))
    assert res.status_code == 200
    assert data == get_json(res)
    assert ill_request.dumps() == data['metadata']

    list_url = url_for('invenio_records_rest.illr_list', pid='illr1')
    res = client.get(list_url)
    assert res.status_code == 200
    data = get_json(res)

    metadata = data['hits']['hits'][0]['metadata']
    del metadata['organisation']  # organisation is added only for indexation
    assert metadata == ill_request.replace_refs()
Пример #9
0
def test_documents_get(client, document):
    """Test record retrieval."""
    item_url = url_for('invenio_records_rest.doc_item', pid_value='doc1')

    res = client.get(item_url)
    assert res.status_code == 200

    assert res.headers['ETag'] == '"{}"'.format(document.revision_id)

    data = get_json(res)
    assert document.dumps() == data['metadata']

    # Check metadata
    for k in ['created', 'updated', 'metadata', 'links']:
        assert k in data

    # Check self links
    res = client.get(to_relative_url(data['links']['self']))
    assert res.status_code == 200
    assert data == get_json(res)
    assert document.dumps() == data['metadata']

    list_url = url_for('invenio_records_rest.doc_list', pid='doc1')
    res = client.get(list_url)
    assert res.status_code == 200
    data = get_json(res)

    assert data['hits']['hits'][0]['metadata'] == document.replace_refs()

    res = client.get(
        url_for('api_documents.import_bnf_ean', ean='9782070541270'))
    assert res.status_code == 401
Пример #10
0
def test_acq_accounts_get(client, acq_account_fiction_martigny):
    """Test record retrieval."""
    item_url = url_for('invenio_records_rest.acac_item', pid_value='acac1')
    acq_account = acq_account_fiction_martigny
    res = client.get(item_url)
    assert res.status_code == 200

    assert res.headers['ETag'] == '"{}"'.format(acq_account.revision_id)

    data = get_json(res)
    assert acq_account.dumps() == data['metadata']

    # Check metadata
    for k in ['created', 'updated', 'metadata', 'links']:
        assert k in data

    # Check self links
    res = client.get(to_relative_url(data['links']['self']))
    assert res.status_code == 200
    assert data == get_json(res)
    assert acq_account.dumps() == data['metadata']

    list_url = url_for('invenio_records_rest.acac_list', pid='acac1')
    res = client.get(list_url)
    assert res.status_code == 200
    data = get_json(res)

    assert data['hits']['hits'][0]['metadata']['pid'] == 'acac1'
Пример #11
0
def test_patron_types_get(client, patron_type_children_martigny):
    """Test record retrieval."""
    item_url = url_for('invenio_records_rest.ptty_item', pid_value='ptty1')
    patron_type = patron_type_children_martigny
    res = client.get(item_url)
    assert res.status_code == 200

    assert res.headers['ETag'] == '"{}"'.format(patron_type.revision_id)

    data = get_json(res)
    assert patron_type.dumps() == data['metadata']

    # Check metadata
    for k in ['created', 'updated', 'metadata', 'links']:
        assert k in data

    # Check self links
    res = client.get(to_relative_url(data['links']['self']))
    assert res.status_code == 200
    assert data == get_json(res)
    assert patron_type.dumps() == data['metadata']

    list_url = url_for('invenio_records_rest.ptty_list', pid='ptty1')
    res = client.get(list_url)
    assert res.status_code == 200
    data = get_json(res)

    assert data['hits']['hits'][0]['metadata'] == patron_type.replace_refs()
Пример #12
0
def test_patrons_profile(client, user_librarian_no_email):
    """."""
    # check redirection
    res = client.get(url_for('patrons.profile'))
    assert res.status_code == 302
    assert to_relative_url(res.location) == unquote(url_for(
        'security.login', next='/patrons/profile'))

    # check with logged user
    login_user_via_session(client, user_librarian_no_email.user)
    res = client.get(url_for('patrons.profile'))
    assert res.status_code == 200
Пример #13
0
def test_notifications_get(
        client, notification_availability_martigny):
    """Test record retrieval."""
    record = notification_availability_martigny
    pid = record.get('pid')

    item_url = url_for(
        'invenio_records_rest.notif_item', pid_value=pid)
    list_url = url_for(
        'invenio_records_rest.notif_list', q='pid:' + pid)
    item_url_with_resolve = url_for(
        'invenio_records_rest.notif_item',
        pid_value=record.pid,
        resolve=1,
        sources=1
    )

    res = client.get(item_url)
    assert res.status_code == 200

    assert res.headers['ETag'] == '"{}"'.format(record.revision_id)

    data = get_json(res)
    assert record.dumps() == data['metadata']

    # Check metadata
    for k in ['created', 'updated', 'metadata', 'links']:
        assert k in data

    # Check self links
    res = client.get(to_relative_url(data['links']['self']))
    assert res.status_code == 200
    assert data == get_json(res)
    assert record.dumps() == data['metadata']

    # check resolve
    res = client.get(item_url_with_resolve)
    assert res.status_code == 200
    data = get_json(res)
    assert record.replace_refs().dumps() == data['metadata']

    res = client.get(list_url)
    assert res.status_code == 200
    data = get_json(res)

    result = data['hits']['hits'][0]['metadata']
    # organisation has been added during the indexing
    del(result['organisation'])
    assert result == record.replace_refs()

    record.delete(dbcommit=True, delindex=True)
    flush_index(NotificationsSearch.Meta.index)
Пример #14
0
def test_documents_get(client, document):
    """Test record retrieval."""
    def clean_authorized_access_point(data):
        """Clean contribution from authorized_access_point_"""
        contributions = []
        for contribution in data.get('contribution', []):
            agent = {}
            for item in contribution['agent']:
                if item == 'authorized_access_point':
                    agent['preferred_name'] = contribution['agent'][item]
                elif not item.startswith('authorized_access_point_'):
                    agent[item] = contribution['agent'][item]
            contribution['agent'] = agent
            contributions.append(contribution)

        data.pop('sort_date_new', None)
        data.pop('sort_date_old', None)
        data.pop('sort_title', None)
        data.pop('isbn', None)
        return data

    item_url = url_for('invenio_records_rest.doc_item', pid_value='doc1')

    res = client.get(item_url)
    assert res.status_code == 200

    assert res.headers['ETag'] == '"{}"'.format(document.revision_id)

    data = get_json(res)
    assert document.dumps() == clean_authorized_access_point(data['metadata'])

    # Check self links
    res = client.get(to_relative_url(data['links']['self']))
    assert res.status_code == 200
    assert data == get_json(res)
    assert document.dumps() == clean_authorized_access_point(data['metadata'])

    list_url = url_for('invenio_records_rest.doc_list')
    res = client.get(list_url)
    assert res.status_code == 200
    data = get_json(res)
    data_clean = clean_authorized_access_point(
        data['hits']['hits'][0]['metadata']
    )
    document = document.replace_refs().dumps()
    assert document == data_clean

    list_url = url_for('invenio_records_rest.doc_list', q="Vincent Berthe")
    res = client.get(list_url)
    assert res.status_code == 200
    data = get_json(res)
    assert data['hits']['total']['value'] == 1
def test_patron_transactions_get(client, patron_transaction_overdue_martigny):
    """Test record retrieval."""
    transaction = patron_transaction_overdue_martigny
    pid = transaction.pid
    item_url = url_for('invenio_records_rest.pttr_item', pid_value=pid)
    list_url = url_for(
        'invenio_records_rest.pttr_list', q='pid:' + pid)
    item_url_with_resolve = url_for(
        'invenio_records_rest.pttr_item',
        pid_value=pid,
        resolve=1,
        sources=1
    )

    res = client.get(item_url)
    assert res.status_code == 200

    assert res.headers['ETag'] == '"{}"'.format(transaction.revision_id)

    data = get_json(res)
    assert transaction.dumps() == data['metadata']

    # Check metadata
    for k in ['created', 'updated', 'metadata', 'links']:
        assert k in data

    # Check self links
    res = client.get(to_relative_url(data['links']['self']))
    assert res.status_code == 200
    assert data == get_json(res)
    assert transaction.dumps() == data['metadata']

    # check resolve
    res = client.get(item_url_with_resolve)
    assert res.status_code == 200
    data = get_json(res)
    assert transaction.replace_refs().dumps() == data['metadata']

    res = client.get(list_url)
    assert res.status_code == 200
    data = get_json(res)
    result = data['hits']['hits'][0]['metadata']
    del(result['document'])
    del(result['library'])
    del(result['item'])
    assert result == transaction.replace_refs()
Пример #16
0
def test_stats_get(client, stats, csv_header):
    """Test record retrieval."""
    item_url = url_for('invenio_records_rest.stat_item', pid_value=stats.pid)
    res = client.get(item_url)
    assert res.status_code == 200

    assert res.headers['ETag']

    data = get_json(res)

    # Check metadata
    for k in ['created', 'updated', 'metadata', 'links']:
        assert k in data

    # Check self links
    res = client.get(to_relative_url(data['links']['self']))
    assert res.status_code == 200

    # CSV format
    item_url = url_for('invenio_records_rest.stat_item',
                       pid_value=stats.pid,
                       format='csv')
    res = client.get(item_url, headers=csv_header)
    assert res.status_code == 200

    data = get_csv(res)
    assert data == (
        'library id,library name,number_of_active_patrons,'
        'number_of_checkins,number_of_checkouts,'
        'number_of_deleted_items,number_of_documents,'
        'number_of_items,number_of_librarians,number_of_libraries,'
        'number_of_new_items,number_of_new_patrons,'
        'number_of_order_lines,number_of_patrons,'
        'number_of_renewals,number_of_requests,'
        'number_of_satisfied_ill_request\r\n'
        'lib3,Library of Fully,0,0,0,0,1,1,0,2,1,0,0,0,0,0,0\r\n'
        'lib1,Library of Martigny-ville,0,0,0,0,1,1,0,2,1,0,0,0,0,0,0\r\n'
        'lib4,Library of Sion,0,0,0,0,1,1,0,1,1,0,0,0,0,0,0\r\n')

    list_url = url_for('invenio_records_rest.stat_list')
    res = client.get(list_url)
    assert res.status_code == 200
    data = get_json(res)
    assert data['hits']['hits']
Пример #17
0
def test_holdings_get(client, item_lib_martigny, item_lib_martigny_masked):
    """Test record retrieval."""
    holding = Holding.get_record_by_pid(item_lib_martigny.holding_pid)
    item_url = url_for('invenio_records_rest.hold_item', pid_value=holding.pid)
    list_url = url_for(
        'invenio_records_rest.hold_list', q='pid:' + holding.pid)
    item_url_with_resolve = url_for(
        'invenio_records_rest.hold_item',
        pid_value=holding.pid,
        resolve=1,
        sources=1
    )

    res = client.get(item_url)
    assert res.status_code == 200

    assert res.headers['ETag'] == '"{}"'.format(holding.revision_id)

    data = get_json(res)
    assert holding.dumps() == data['metadata']

    # Check metadata
    for k in ['created', 'updated', 'metadata', 'links']:
        assert k in data

    # Check self links
    res = client.get(to_relative_url(data['links']['self']))
    assert res.status_code == 200
    assert data == get_json(res)
    assert holding.dumps() == data['metadata']

    # check resolve
    res = client.get(item_url_with_resolve)
    assert res.status_code == 200
    data = get_json(res)
    assert holding.replace_refs().dumps() == data['metadata']

    res = client.get(list_url)
    assert res.status_code == 200
    data = get_json(res)
    result = data['hits']['hits'][0]['metadata']
    assert result.pop('public_items_count') == 1
    assert result.pop('items_count') == 2
    assert result == holding.replace_refs()
Пример #18
0
def test_locations_get(client, loc_public_martigny):
    """Test record retrieval."""
    location = loc_public_martigny
    item_url = url_for('invenio_records_rest.loc_item', pid_value=location.pid)
    list_url = url_for(
        'invenio_records_rest.loc_list', q='pid:' + location.pid)
    item_url_with_resolve = url_for(
        'invenio_records_rest.loc_item',
        pid_value=location.pid,
        resolve=1,
        sources=1
    )

    res = client.get(item_url)
    assert res.status_code == 200

    assert res.headers['ETag'] == '"{}"'.format(location.revision_id)

    data = get_json(res)
    assert location.dumps() == data['metadata']

    # Check metadata
    for k in ['created', 'updated', 'metadata', 'links']:
        assert k in data

    # Check self links
    res = client.get(to_relative_url(data['links']['self']))
    assert res.status_code == 200
    assert data == get_json(res)
    assert location.dumps() == data['metadata']

    # check resolve
    res = client.get(item_url_with_resolve)
    assert res.status_code == 200
    data = get_json(res)
    assert location.replace_refs().dumps() == data['metadata']

    res = client.get(list_url)
    assert res.status_code == 200
    data = get_json(res)
    result = data['hits']['hits'][0]['metadata']
    # organisation has been added during the indexing
    del (result['organisation'])
    assert result == location.replace_refs()
Пример #19
0
def test_acq_receipt_lines_get(client, acq_receipt_line_1_fiction_martigny):
    """Test record retrieval."""
    item_url = url_for('invenio_records_rest.acrl_item', pid_value='acrl1')
    acq_receipt_line = deepcopy(acq_receipt_line_1_fiction_martigny)
    res = client.get(item_url)
    assert res.status_code == 200

    assert res.headers['ETag'] == '"{}"'.format(acq_receipt_line.revision_id)

    data = get_json(res)
    assert acq_receipt_line.dumps() == data['metadata']

    # Check metadata
    for k in ['created', 'updated', 'metadata', 'links']:
        assert k in data

    # Check self links
    res = client.get(to_relative_url(data['links']['self']))
    assert res.status_code == 200
    assert data == get_json(res)
    assert acq_receipt_line.dumps() == data['metadata']

    list_url = url_for('invenio_records_rest.acrl_list', pid='acrl1')
    res = client.get(list_url)
    assert res.status_code == 200
    data = get_json(res)

    metadata = data['hits']['hits'][0]['metadata']

    total_amount = metadata['total_amount']
    assert total_amount == 1000.0

    # remove dynamically added fields
    del metadata['acq_account']
    del metadata['total_amount']
    del metadata['document']
    assert data['hits']['hits'][0]['metadata'] == \
        acq_receipt_line.replace_refs()
Пример #20
0
def test_acq_receipt_get(
    client,
    org_martigny, vendor2_martigny,
    acq_receipt_fiction_saxon
):
    """Test record retrieval."""
    acre = acq_receipt_fiction_saxon
    acq_receipt = deepcopy(acre)
    item_url = url_for('invenio_records_rest.acre_item', pid_value=acre.pid)
    list_url = url_for('invenio_records_rest.acre_list', q=f'pid:{acre.pid}')

    res = client.get(item_url)
    assert res.status_code == 200
    assert res.headers['ETag'] == '"{}"'.format(acq_receipt.revision_id)
    data = get_json(res)
    assert acq_receipt.dumps() == data['metadata']

    # Check metadata
    for k in ['created', 'updated', 'metadata', 'links']:
        assert k in data

    # Check self links
    res = client.get(to_relative_url(data['links']['self']))
    assert res.status_code == 200
    assert data == get_json(res)
    assert acq_receipt.dumps() == data['metadata']

    res = client.get(list_url)
    assert res.status_code == 200
    data = get_json(res)

    metadata = data['hits']['hits'][0]['metadata']
    # remove dynamically added fields
    del metadata['quantity']
    del metadata['receipt_lines']
    del metadata['total_amount']
    assert metadata == acq_receipt.replace_refs()
Пример #21
0
def test_contributions_get(client, contribution_person):
    """Test record retrieval."""
    item_url = url_for('invenio_records_rest.cont_item', pid_value='cont_pers')

    res = client.get(item_url)
    assert res.status_code == 200

    assert res.headers['ETag'] == '"{}"'.format(
        contribution_person.revision_id)

    data = get_json(res)
    assert contribution_person.dumps() == data['metadata']
    assert contribution_person.dumps() == data['metadata']

    # Check metadata
    for k in ['created', 'updated', 'metadata', 'links']:
        assert k in data

    # Check self links
    res = client.get(to_relative_url(data['links']['self']))
    assert res.status_code == 200
    assert data == get_json(res)
    assert contribution_person.dumps() == data['metadata']

    list_url = url_for('invenio_records_rest.cont_list', pid='cont_pers')
    res = client.get(list_url)
    assert res.status_code == 200
    data = get_json(res)
    contribution_person = contribution_person.replace_refs()
    contribution_person['organisations'] = \
        contribution_person.organisation_pids
    contribution_person['type'] = ContributionType.PERSON
    contribution_person['type'] = ContributionType.PERSON

    assert data['hits']['hits'][0]['metadata'] == \
        contribution_person.replace_refs()
Пример #22
0
def test_documents_get(client, document):
    """Test record retrieval."""
    item_url = url_for('invenio_records_rest.doc_item', pid_value='doc1')

    res = client.get(item_url)
    assert res.status_code == 200

    assert res.headers['ETag'] == '"{}"'.format(document.revision_id)

    data = get_json(res)
    assert document.dumps() == data['metadata']

    # Check metadata
    for k in ['created', 'updated', 'metadata', 'links']:
        assert k in data

    # Check self links
    res = client.get(to_relative_url(data['links']['self']))
    assert res.status_code == 200
    assert data == get_json(res)
    assert document.dumps() == data['metadata']

    list_url = url_for('invenio_records_rest.doc_list')
    res = client.get(list_url)
    assert res.status_code == 200
    data = get_json(res)
    document = document.replace_refs()

    assert data['hits']['hits'][0]['metadata'] == \
        document.replace_refs().dumps()

    list_url = url_for('invenio_records_rest.doc_list', q="Vincent Berthe")
    res = client.get(list_url)
    assert res.status_code == 200
    data = get_json(res)
    assert data['hits']['total'] == 1
Пример #23
0
def test_patrons_profile(client, librarian_martigny_no_email,
                         loan_pending_martigny, patron_martigny_no_email,
                         loc_public_martigny, item_type_standard_martigny,
                         item_lib_martigny, json_header,
                         circ_policy_short_martigny, ill_request_martigny):
    """Test patron profile."""
    # check redirection
    res = client.get(url_for('patrons.profile'))
    assert res.status_code == 302
    assert to_relative_url(res.location) == unquote(
        url_for('security.login', next='/global/patrons/profile'))

    # check with logged user
    login_user_via_session(client, patron_martigny_no_email.user)
    res = client.get(url_for('patrons.profile'))
    assert res.status_code == 200

    # create patron transactions
    data = {
        'patron_pid': patron_martigny_no_email.pid,
        'item_pid': item_lib_martigny.pid,
        'pickup_location_pid': loc_public_martigny.pid,
        'transaction_location_pid': loc_public_martigny.pid,
        'transaction_user_pid': librarian_martigny_no_email.pid
    }
    loan = item_lib_martigny.request(**data)
    loan_pid = loan[1].get('request').get('pid')
    pending_loan = loan_pending_martigny
    pending_loan_pid = pending_loan.get('pid')
    assert pending_loan['state'] == LoanState.PENDING

    # patron successfully cancelled the request
    res = client.post(url_for('patrons.profile'),
                      data={
                          'loan_pid': pending_loan_pid,
                          'type': 'cancel'
                      })
    assert res.status_code == 302  # Check redirect
    pending_loan = Loan.get_record_by_pid(pending_loan_pid)
    assert pending_loan['state'] == LoanState.CANCELLED
    loan = item_lib_martigny.checkout(**data)

    # patron successfully renew the item
    res = client.post(url_for('patrons.profile'),
                      data={
                          'loan_pid': loan_pid,
                          'type': 'renew'
                      })
    assert res.status_code == 302  # check redirect

    # disable possiblity to renew the item
    circ_policy_short_martigny['number_renewals'] = 0
    circ_policy_short_martigny.update(circ_policy_short_martigny,
                                      dbcommit=True,
                                      reindex=True)

    # patron fails to renew the item
    res = client.post(url_for('patrons.profile'),
                      data={
                          'loan_pid': loan_pid,
                          'type': 'renew'
                      })
    assert res.status_code == 302  # Check redirect

    # checkin item to create history for this patron
    data['transaction_location_pid'] = loc_public_martigny.pid
    data['pid'] = loan_pid
    loan = item_lib_martigny.checkin(**data)