Exemplo n.º 1
0
def test_item_dumps(client, item_lib_martigny, org_martigny,
                    librarian_martigny_no_email):
    """Test item dumps and elastic search version."""
    item_dumps = Item(item_lib_martigny.dumps()).replace_refs()

    assert item_dumps.get('available')
    assert item_dumps.get('organisation').get('pid') == org_martigny.pid

    login_user_via_session(client, librarian_martigny_no_email.user)
    record_url = url_for('invenio_records_rest.item_item',
                         pid_value=item_lib_martigny.pid)

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

    item_es = Item(get_json(res).get('metadata'))
    assert item_es.available
    assert item_es.organisation_pid == org_martigny.pid
Exemplo n.º 2
0
def test_provisional_items_creation(client, document, org_martigny,
                                    holding_lib_martigny_w_patterns,
                                    provisional_item_lib_martigny_data,
                                    json_header, item_lib_martigny,
                                    patron_martigny,
                                    system_librarian_martigny):
    """Test creation of provisional items."""
    holding = holding_lib_martigny_w_patterns
    provisional_item_lib_martigny_data['holding'] = \
        {'$ref': get_ref_for_pid('hold', holding.pid)}
    item = Item.create(provisional_item_lib_martigny_data,
                       dbcommit=True,
                       reindex=True)

    item_url = url_for('invenio_records_rest.item_item', pid_value=item.pid)
    res = client.get(item_url)
    assert res.status_code == 200
    item_es = Item(get_json(res).get('metadata'))
    assert item_es.get('type') == TypeOfItem.PROVISIONAL
    assert item_es.status == ItemStatus.ON_SHELF
    assert item_es.holding_pid == holding.pid

    # TEST: logged patrons can not have the provisional items in the results.
    # for both global and insitutional view.
    login_user_via_session(client, patron_martigny.user)

    list_url = url_for('invenio_records_rest.item_list', view='org1')
    response = client.get(list_url, headers=json_header)
    assert response.status_code == 200
    data = get_json(response)
    items = data['hits']['hits']
    assert len(items) == 1
    assert items[0]['metadata']['pid'] == item_lib_martigny.pid

    list_url = url_for('invenio_records_rest.item_list', view='global')
    response = client.get(list_url, headers=json_header)
    assert response.status_code == 200
    data = get_json(response)
    items = data['hits']['hits']
    assert len(items) == 1
    assert items[0]['metadata']['pid'] == item_lib_martigny.pid

    # TEST: logged librarians can have the provisional items in the results.
    # provisional items are still not available for the global and other views.
    login_user_via_session(client, system_librarian_martigny.user)

    list_url = url_for('invenio_records_rest.item_list')
    response = client.get(list_url, headers=json_header)
    assert response.status_code == 200
    data = get_json(response)
    items = data['hits']['hits']
    assert len(items) == 2

    list_url = url_for('invenio_records_rest.item_list', view='global')
    response = client.get(list_url, headers=json_header)
    assert response.status_code == 200
    data = get_json(response)
    items = data['hits']['hits']
    assert len(items) == 1
    assert items[0]['metadata']['pid'] == item_lib_martigny.pid

    list_url = url_for('invenio_records_rest.item_list', view='org1')
    response = client.get(list_url, headers=json_header)
    assert response.status_code == 200
    data = get_json(response)
    items = data['hits']['hits']
    assert len(items) == 1
    assert items[0]['metadata']['pid'] == item_lib_martigny.pid