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
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