From 29e1edc63891c7db7f80934e7048e42936601553 Mon Sep 17 00:00:00 2001 From: Justin Littman Date: Wed, 12 Feb 2025 19:01:35 -0500 Subject: [PATCH] Return version description with version status. refs https://github.com/sul-dlss/hungry-hungry-hippo/issues/704 --- Gemfile.lock | 2 -- app/controllers/versions_controller.rb | 5 ++++- openapi.yml | 4 ++++ spec/requests/versions_spec.rb | 12 +++++++++--- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index e2e646b4d..2fe9b3ad8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -87,8 +87,6 @@ GEM attr_extras (7.1.0) base64 (0.2.0) bcrypt_pbkdf (1.1.1) - bcrypt_pbkdf (1.1.1-arm64-darwin) - bcrypt_pbkdf (1.1.1-x86_64-darwin) benchmark (0.4.0) bigdecimal (3.1.9) bootsnap (1.18.4) diff --git a/app/controllers/versions_controller.rb b/app/controllers/versions_controller.rb index 8cefd668c..a61ae4632 100644 --- a/app/controllers/versions_controller.rb +++ b/app/controllers/versions_controller.rb @@ -141,6 +141,8 @@ def load_repository_object_version def status_for(druid:, version:) version_service = VersionService.new(druid:, version:) workflow_state_service = WorkflowStateService.new(druid:, version:) + repository_object = RepositoryObject.find_by!(external_identifier: druid) + version_description = repository_object.versions.select(:version_description).find_by!(version:).version_description { versionId: version, @@ -149,7 +151,8 @@ def status_for(druid:, version:) assembling: workflow_state_service.assembling?, accessioning: workflow_state_service.accessioning?, closeable: version_service.can_close?, - discardable: version_service.can_discard? + discardable: version_service.can_discard?, + versionDescription: version_description } end end diff --git a/openapi.yml b/openapi.yml index 72b3f5c11..9d9add550 100644 --- a/openapi.yml +++ b/openapi.yml @@ -3395,6 +3395,7 @@ components: - accessioning - closeable - discardable + - versionDescription properties: versionId: type: integer @@ -3414,6 +3415,9 @@ components: closeable: type: boolean description: whether the version can be closed + versionDescription: + type: string + description: a message that explains what changed BackgroundJobResultResponse: type: object properties: diff --git a/spec/requests/versions_spec.rb b/spec/requests/versions_spec.rb index 6ec74d534..97892e025 100644 --- a/spec/requests/versions_spec.rb +++ b/spec/requests/versions_spec.rb @@ -193,6 +193,7 @@ before do allow(VersionService).to receive(:new).and_return(version_service) allow(WorkflowStateService).to receive(:new).and_return(workflow_state_service) + create(:repository_object_version, :with_repository_object, external_identifier: druid, version: 1) end it 'returns the version status for an object' do @@ -206,7 +207,8 @@ assembling: true, accessioning: false, closeable: true, - discardable: true + discardable: true, + versionDescription: 'Best version ever' }) end end @@ -219,6 +221,8 @@ let(:workflow_state_service2) { instance_double(WorkflowStateService, assembling?: false, accessioning?: true) } before do + create(:repository_object_version, :with_repository_object, external_identifier: druids[0], version: 1) + create(:repository_object_version, :with_repository_object, external_identifier: druids[1], version: 2) allow(CocinaObjectStore).to receive(:version).with(druids[0]).and_return(1) allow(CocinaObjectStore).to receive(:version).with(druids[1]).and_return(2) allow(CocinaObjectStore).to receive(:version).with(druids[2]).and_raise(CocinaObjectStore::CocinaObjectNotFoundError) @@ -241,7 +245,8 @@ assembling: true, accessioning: false, closeable: true, - discardable: true + discardable: true, + versionDescription: 'Best version ever' }, 'druid:fp165nz4391' => { versionId: 2, @@ -250,7 +255,8 @@ assembling: false, accessioning: true, closeable: false, - discardable: false + discardable: false, + versionDescription: 'Best version ever' }) end end