Skip to content

Commit

Permalink
datastreams: contrib service writers state the service name
Browse files Browse the repository at this point in the history
  • Loading branch information
Pablo Panero authored and ppanero committed Sep 22, 2022
1 parent f5eb3e3 commit 5c4c37a
Show file tree
Hide file tree
Showing 8 changed files with 32 additions and 24 deletions.
6 changes: 5 additions & 1 deletion invenio_vocabularies/contrib/awards/datastreams.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,11 @@
class AwardsServiceWriter(ServiceWriter):
"""Funders service writer."""

def __init__(self, *args, **kwargs):
"""Constructor."""
service_or_name = kwargs.pop("service_or_name", "awards")
super().__init__(service_or_name=service_or_name, *args, **kwargs)

def _entry_id(self, entry):
"""Get the id from an entry."""
return entry["id"]
Expand Down Expand Up @@ -103,7 +108,6 @@ def apply(self, stream_entry, **kwargs):
{
"type": "awards-service",
"args": {
"service_or_name": "awards",
"identity": system_identity,
},
}
Expand Down
6 changes: 5 additions & 1 deletion invenio_vocabularies/contrib/funders/datastreams.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,11 @@
class FundersServiceWriter(ServiceWriter):
"""Funders service writer."""

def __init__(self, *args, **kwargs):
"""Constructor."""
service_or_name = kwargs.pop("service_or_name", "funders")
super().__init__(service_or_name=service_or_name, *args, **kwargs)

def _entry_id(self, entry):
"""Get the id from an entry."""
return entry["id"]
Expand Down Expand Up @@ -102,7 +107,6 @@ def apply(self, stream_entry, **kwargs):
{
"type": "funders-service",
"args": {
"service_or_name": "funders",
"identity": system_identity,
},
}
Expand Down
4 changes: 2 additions & 2 deletions invenio_vocabularies/contrib/names/datastreams.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,9 @@ class NamesServiceWriter(ServiceWriter):

def __init__(self, *args, scheme_id="orcid", **kwargs):
"""Constructor."""
service_or_name = kwargs.pop("service_or_name", "names")
super().__init__(service_or_name=service_or_name, *args, **kwargs)
self._scheme_id = scheme_id
super().__init__(*args, **kwargs)

def _entry_id(self, entry):
"""Get the id from an entry."""
Expand Down Expand Up @@ -147,7 +148,6 @@ def write(self, stream_entry, *args, **kwargs):
{
"type": "names-service",
"args": {
"service_or_name": "names",
"identity": system_identity,
},
}
Expand Down
4 changes: 2 additions & 2 deletions invenio_vocabularies/datastreams/writers.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ def write(self, stream_entry, *args, **kwargs):
class ServiceWriter(BaseWriter):
"""Writes the entries to an RDM instance using a Service object."""

def __init__(self, service_or_name, identity, *args, update=False, **kwargs):
def __init__(self, service_or_name, *args, identity=None, update=False, **kwargs):
"""Constructor.
:param service_or_name: a service instance or a key of the
Expand All @@ -51,7 +51,7 @@ def __init__(self, service_or_name, identity, *args, update=False, **kwargs):
service_or_name = current_service_registry.get(service_or_name)

self._service = service_or_name
self._identity = system_identity
self._identity = identity or system_identity
self._update = update

super().__init__(*args, **kwargs)
Expand Down
12 changes: 6 additions & 6 deletions tests/contrib/awards/test_awards_datastreams.py
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ def test_awards_transformer(app, dict_award_entry, expected_from_award_json):
def test_awards_service_writer_create(
app, es_clear, example_funder_ec, award_full_data
):
awards_writer = AwardsServiceWriter("awards", system_identity)
awards_writer = AwardsServiceWriter()
award_rec = awards_writer.write(StreamEntry(award_full_data))
award_dict = award_rec.entry.to_dict()

Expand All @@ -136,7 +136,7 @@ def test_awards_funder_id_not_exist(
example_funder_ec,
award_full_data_invalid_id,
):
awards_writer = AwardsServiceWriter("awards", system_identity)
awards_writer = AwardsServiceWriter()
with pytest.raises(WriterError) as err:
awards_writer.write(StreamEntry(award_full_data_invalid_id))
expected_error = [
Expand All @@ -153,7 +153,7 @@ def test_awards_funder_id_not_exist(
def test_awards_funder_id_not_exist_no_funders(
app, es_clear, award_full_data_invalid_id
):
awards_writer = AwardsServiceWriter("awards", system_identity)
awards_writer = AwardsServiceWriter()
with pytest.raises(WriterError) as err:
awards_writer.write(StreamEntry(award_full_data_invalid_id))
expected_error = [
Expand Down Expand Up @@ -183,7 +183,7 @@ def test_awards_transformer_ec_functionality(
def test_awards_service_writer_duplicate(
app, es_clear, example_funder_ec, award_full_data
):
writer = AwardsServiceWriter("awards", system_identity)
writer = AwardsServiceWriter()
award_rec = writer.write(stream_entry=StreamEntry(award_full_data))
Award.index.refresh() # refresh index to make changes live
with pytest.raises(WriterError) as err:
Expand All @@ -200,7 +200,7 @@ def test_awards_service_writer_update_existing(
app, es_clear, example_funder_ec, award_full_data, service
):
# create vocabulary
writer = AwardsServiceWriter("awards", system_identity, update=True)
writer = AwardsServiceWriter(update=True)
orig_award_rec = writer.write(stream_entry=StreamEntry(award_full_data))
Award.index.refresh() # refresh index to make changes live
# update vocabulary
Expand All @@ -227,7 +227,7 @@ def test_awards_service_writer_update_non_existing(
updated_award = deepcopy(award_full_data)
updated_award["title"] = {"en": "New Test title"}
# check changes vocabulary
writer = AwardsServiceWriter("awards", system_identity, update=True)
writer = AwardsServiceWriter(update=True)
award_rec = writer.write(stream_entry=StreamEntry(updated_award))
award_rec = service.read(system_identity, award_rec.entry.id)
award_dict = award_rec.to_dict()
Expand Down
8 changes: 4 additions & 4 deletions tests/contrib/funders/test_funders_datastreams.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ def test_ror_transformer(app, dict_ror_entry, expected_from_ror_json):


def test_funders_service_writer_create(app, es_clear, funder_full_data):
writer = FundersServiceWriter("funders", system_identity)
writer = FundersServiceWriter()
funder_rec = writer.write(StreamEntry(funder_full_data))
funder_dict = funder_rec.entry.to_dict()
assert dict(funder_dict, **funder_full_data) == funder_dict
Expand All @@ -83,7 +83,7 @@ def test_funders_service_writer_create(app, es_clear, funder_full_data):


def test_funders_service_writer_duplicate(app, es_clear, funder_full_data):
writer = FundersServiceWriter("funders", system_identity)
writer = FundersServiceWriter()
funder_rec = writer.write(stream_entry=StreamEntry(funder_full_data))
Funder.index.refresh() # refresh index to make changes live
with pytest.raises(WriterError) as err:
Expand All @@ -100,7 +100,7 @@ def test_funders_service_writer_update_existing(
app, es_clear, funder_full_data, service
):
# create vocabulary
writer = FundersServiceWriter("funders", system_identity, update=True)
writer = FundersServiceWriter(update=True)
orig_funder_rec = writer.write(stream_entry=StreamEntry(funder_full_data))
Funder.index.refresh() # refresh index to make changes live
# update vocabulary
Expand All @@ -126,7 +126,7 @@ def test_funders_service_writer_update_non_existing(
updated_funder = deepcopy(funder_full_data)
updated_funder["name"] = "New name"
# check changes vocabulary
writer = FundersServiceWriter("funders", system_identity, update=True)
writer = FundersServiceWriter(update=True)
funder_rec = writer.write(stream_entry=StreamEntry(updated_funder))
funder_rec = service.read(system_identity, funder_rec.entry.id)
funder_dict = funder_rec.to_dict()
Expand Down
8 changes: 4 additions & 4 deletions tests/contrib/names/test_names_datastreams.py
Original file line number Diff line number Diff line change
Expand Up @@ -147,15 +147,15 @@ def test_orcid_http_reader(_, bytes_xml_data):


def test_names_service_writer_create(app, es_clear, name_full_data):
writer = NamesServiceWriter("names", system_identity)
writer = NamesServiceWriter()
record = writer.write(StreamEntry(name_full_data))
record = record.entry.to_dict()

assert dict(record, **name_full_data) == record


def test_names_service_writer_duplicate(app, es_clear, name_full_data):
writer = NamesServiceWriter("names", system_identity)
writer = NamesServiceWriter()
_ = writer.write(stream_entry=StreamEntry(name_full_data))
Name.index.refresh() # refresh index to make changes live
with pytest.raises(WriterError) as err:
Expand All @@ -167,7 +167,7 @@ def test_names_service_writer_duplicate(app, es_clear, name_full_data):

def test_names_service_writer_update_existing(app, es_clear, name_full_data):
# create vocabulary
writer = NamesServiceWriter("names", system_identity, update=True)
writer = NamesServiceWriter(update=True)
name = writer.write(stream_entry=StreamEntry(name_full_data))
Name.index.refresh() # refresh index to make changes live
# update vocabulary
Expand All @@ -191,7 +191,7 @@ def test_names_service_writer_update_non_existing(app, es_clear, name_full_data)
updated_name["given_name"] = "Pablo"
updated_name["family_name"] = "Panero"
# check changes vocabulary
writer = NamesServiceWriter("names", system_identity, update=True)
writer = NamesServiceWriter(update=True)
name = writer.write(stream_entry=StreamEntry(updated_name))
service = current_service_registry.get("names")
record = service.read(system_identity, name.entry.id)
Expand Down
8 changes: 4 additions & 4 deletions tests/datastreams/test_writers.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@


def test_service_writer_non_existing(lang_type, lang_data, service, identity):
writer = ServiceWriter(service, identity)
writer = ServiceWriter(service, identity=identity)
lang = writer.write(stream_entry=StreamEntry(lang_data))
record = service.read(identity, ("languages", lang.entry.id))
record = record.to_dict()
Expand All @@ -29,7 +29,7 @@ def test_service_writer_non_existing(lang_type, lang_data, service, identity):


def test_service_writer_duplicate(lang_type, lang_data, service, identity):
writer = ServiceWriter(service, identity)
writer = ServiceWriter(service, identity=identity)
_ = writer.write(stream_entry=StreamEntry(lang_data))
with pytest.raises(WriterError) as err:
writer.write(stream_entry=StreamEntry(lang_data))
Expand All @@ -40,7 +40,7 @@ def test_service_writer_duplicate(lang_type, lang_data, service, identity):

def test_service_writer_update_existing(lang_type, lang_data, service, identity):
# create vocabulary
writer = ServiceWriter(service, identity, update=True)
writer = ServiceWriter(service, identity=identity, update=True)
lang = writer.write(stream_entry=StreamEntry(lang_data))
# update vocabulary
updated_lang = deepcopy(lang_data)
Expand All @@ -60,7 +60,7 @@ def test_service_writer_update_non_existing(lang_type, lang_data, service, ident
updated_lang["description"]["en"] = "Updated english description"
updated_lang["tags"].append("updated")
# check changes vocabulary
writer = ServiceWriter(service, identity, update=True)
writer = ServiceWriter(service, identity=identity, update=True)
lang = writer.write(stream_entry=StreamEntry(updated_lang))
record = service.read(identity, ("languages", lang.entry.id))
record = record.to_dict()
Expand Down

0 comments on commit 5c4c37a

Please sign in to comment.