Skip to content

Commit

Permalink
Merge pull request #5 from oarepo/checkfield
Browse files Browse the repository at this point in the history
Checkfield
  • Loading branch information
SilvyPuzzlewell authored Jul 26, 2023
2 parents 9b99eef + 8431fd4 commit d923e94
Show file tree
Hide file tree
Showing 7 changed files with 64 additions and 4 deletions.
1 change: 1 addition & 0 deletions oarepo_model_builder_drafts/invenio/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@
"drafts-parent-metadata": "templates/invenio_drafts_parent_metadata.py.jinja2", # adds draft parent metadata classes
"drafts-record-service-config": "templates/invenio_drafts_record_service_config.py.jinja2",
"drafts-parent-state": "templates/invenio_drafts_parent_state.py.jinja2",
"drafts-has-draft-checkfield": "templates/invenio_drafts_has_draft_checkfield.py.jinja2",
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
from oarepo_model_builder.invenio.invenio_base import InvenioBaseClassPythonBuilder


class InvenioDraftsHasDraftCheckfieldBuilder(InvenioBaseClassPythonBuilder):
TYPE = "invenio_drafts_has_draft_checkfield"
section = "record"
template = "drafts-has-draft-checkfield"

def finish(self, **extra_kwargs):
super().finish(parent_record=self.current_model.parent_record, **extra_kwargs)
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from oarepo_runtime.drafts.systemfields.has_draftcheck import HasDraftCheckField

class {{ vars.record|class_header }}:
has_draft = HasDraftCheckField(config_key="HAS_DRAFT_CUSTOM_FIELD")

{{ parent_record.record.class|base_name }}.has_draft = HasDraftCheckField(draft_cls={{ vars.record.class|base_name }}, config_key="HAS_DRAFT_CUSTOM_FIELD")
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,5 @@ def _get_output_module(self):
def finish(self, **extra_kwargs):
tests = getattr(self.current_model, "section_tests")
super().finish(
fixtures=tests.fixtures, test_constants=tests.constants, **extra_kwargs
fixtures=tests.fixtures, test_constants=tests.constants, parent_record=self.current_model.parent_record, **extra_kwargs
)
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,10 @@ def {{ fixtures.sample_record }}(app, db, input_data):
uow.commit()
return record

@pytest.fixture()
def vocab_cf(app, db, cache):
from oarepo_runtime.cf.mappings import prepare_cf_indices

prepare_cf_indices()


Original file line number Diff line number Diff line change
@@ -1,7 +1,19 @@
import copy

{{ vars.record.class|generate_import }}
{{ parent_record.record.class|generate_import }}
{{ vars.resource_config.class|generate_import }}

#todo move to conftest
from invenio_records_resources.services.custom_fields import BooleanCF
import pytest
@pytest.fixture(scope="module")
def app_config(app_config):
app_config["HAS_DRAFT"] = [
BooleanCF("has_draft")
]
return app_config

def _assert_single_item_response(response):
"""Assert the fields present on a single item response."""
response_fields = response.json.keys()
Expand Down Expand Up @@ -144,7 +156,7 @@ def test_mutiple_edit(client, input_data, search_clear):
assert response.json["revision_id"] == {{ test_constants.revision_id3 }}


def test_redirect_to_latest_version(client, input_data):
def test_redirect_to_latest_version(client, input_data, search_clear):
"""Creates a new version of a record.

Publishes the draft to obtain 2 versions of a record.
Expand All @@ -167,4 +179,28 @@ def test_redirect_to_latest_version(client, input_data):
response = client.get(f"{{"{" }} {{ vars.resource_config.class|base_name }}.url_prefix{{ "}" }}{recid}/versions/latest")

assert response.status_code == 301
assert response.headers["location"] == latest_version_self_link
assert response.headers["location"] == latest_version_self_link


def test_list_drafts(client, input_data, vocab_cf, search_clear):
assert len(client.get({{ vars.resource_config.class|base_name }}.url_prefix).json["hits"]["hits"]) == 0
assert len(client.get(f"user{{"{" }} {{ vars.resource_config.class|base_name }}.url_prefix{{ "}" }}").json["hits"]["hits"]) == 0

create_draft_response = client.post(ThesisResourceConfig.url_prefix, json=input_data)
assert create_draft_response.status_code == 201
recid = create_draft_response.json["id"]

{{ vars.record.class|base_name }}.index.refresh()
{{ parent_record.record.class|base_name }}.index.refresh()
assert len(client.get({{ vars.resource_config.class|base_name }}.url_prefix).json["hits"]["hits"]) == 0
assert len(client.get(f"user{{"{" }} {{ vars.resource_config.class|base_name }}.url_prefix{{ "}" }}").json["hits"]["hits"]) == 1

response_publish = client.post(
f"{ThesisResourceConfig.url_prefix}{recid}/draft/actions/publish"
)
assert response_publish.status_code == 202

{{ vars.record.class|base_name }}.index.refresh()
{{ parent_record.record.class|base_name }}.index.refresh()
assert len(client.get({{ vars.resource_config.class|base_name }}.url_prefix).json["hits"]["hits"]) == 1
assert len(client.get(f"user{{"{" }} {{ vars.resource_config.class|base_name }}.url_prefix{{ "}" }}").json["hits"]["hits"]) == 0
3 changes: 2 additions & 1 deletion setup.cfg
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[metadata]
name = oarepo-model-builder-drafts
version = 4.0.0
version = 4.0.1
description =
authors = Ronald Krist <[email protected]>
readme = README.md
Expand Down Expand Up @@ -40,6 +40,7 @@ oarepo_model_builder.builders.draft:
0340-invenio_record_dumper = oarepo_model_builder.invenio.invenio_record_dumper:InvenioRecordDumperBuilder
2800-invenio_drafts_record_metadata_extra_fields = oarepo_model_builder_drafts.invenio.invenio_drafts_record_metadata_extra_fields:InvenioDraftsRecordMetadataExtraFieldsBuilder
2900-invenio_drafts_record_extra_fields = oarepo_model_builder_drafts.invenio.invenio_drafts_record_extra_fields:InvenioDraftsRecordExtraFieldsBuilder
3000-invenio_drafts_has_draft_checkfield = oarepo_model_builder_drafts.invenio.invenio_drafts_has_draft_checkfield:InvenioDraftsHasDraftCheckfieldBuilder
5150-invenio_drafts_parent_state = oarepo_model_builder_drafts.invenio.invenio_drafts_parent_state:InvenioDraftsParentStateBuilder
5200-invenio_drafts_record_service_config = oarepo_model_builder_drafts.invenio.invenio_drafts_record_service_config:InvenioDraftsRecordServiceConfigBuilder
3500-invenio_drafts_setup_cfg = oarepo_model_builder_drafts.invenio.invenio_drafts_setup_cfg:InvenioDraftsSetupCfgBuilder
Expand Down

0 comments on commit d923e94

Please sign in to comment.