From 07c4fbe7a7d54a26bd5241facfb8ef60a554fc81 Mon Sep 17 00:00:00 2001 From: Naomi Dushay Date: Thu, 22 Aug 2019 15:57:11 -0700 Subject: [PATCH] disc report: better error for missing container name or manifest --- app/services/discovery_report.rb | 2 +- spec/services/discovery_report_spec.rb | 15 ++++++++++++ spec/test_data/media_missing/manifest.csv | 2 ++ .../media_missing/media_manifest.csv | 1 + .../project_config_files/media_missing.yaml | 24 +++++++++++++++++++ 5 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 spec/test_data/media_missing/manifest.csv create mode 100644 spec/test_data/media_missing/media_manifest.csv create mode 100644 spec/test_data/project_config_files/media_missing.yaml diff --git a/app/services/discovery_report.rb b/app/services/discovery_report.rb index d2dc8583..0f3564c0 100644 --- a/app/services/discovery_report.rb +++ b/app/services/discovery_report.rb @@ -57,7 +57,7 @@ def process_dobj(dobj) errors[:empty_manifest] = true unless counts[:files_in_manifest] > 0 errors[:files_found_mismatch] = true unless counts[:files_in_manifest] == counts[:files_found] else - errors[:missing_container_name_or_manifest] = true + errors[:missing_media_container_name_or_manifest] = true end end diff --git a/spec/services/discovery_report_spec.rb b/spec/services/discovery_report_spec.rb index fbb08daf..cab31a70 100644 --- a/spec/services/discovery_report_spec.rb +++ b/spec/services/discovery_report_spec.rb @@ -82,6 +82,21 @@ expect(report.process_dobj(dobj)).not_to include(a_hash_including(empty_object: true)) end end + + context 'missing_media_container_name_or_manifest' do + let(:bundle) { bundle_setup(:media_missing) } + let(:obj_file) { instance_double(PreAssembly::ObjectFile, path: '', filesize: 324, mimetype: '') } + + before do + allow(dobj).to receive(:object_files).and_return([obj_file, obj_file]) + allow(report).to receive(:using_media_manifest?).and_return(true) + allow(report).to receive(:registration_check).and_return({}) # pretend everything is in Dor + end + + it 'adds missing_media_container_name_or_manifest error' do + expect(report.process_dobj(dobj)).to match a_hash_including(errors: a_hash_including(missing_media_container_name_or_manifest: true)) + end + end end context 'integration test' do diff --git a/spec/test_data/media_missing/manifest.csv b/spec/test_data/media_missing/manifest.csv new file mode 100644 index 00000000..7bcbf262 --- /dev/null +++ b/spec/test_data/media_missing/manifest.csv @@ -0,0 +1,2 @@ +druid,sourceid,object,label,description +"druid:aa111aa1111","bar-1.0","aa111aa1111","Label 1","This is a description for label 1" diff --git a/spec/test_data/media_missing/media_manifest.csv b/spec/test_data/media_missing/media_manifest.csv new file mode 100644 index 00000000..58d1c26d --- /dev/null +++ b/spec/test_data/media_missing/media_manifest.csv @@ -0,0 +1 @@ +source_id,filename,label,sequence,publish,preserve,shelve,resource_type diff --git a/spec/test_data/project_config_files/media_missing.yaml b/spec/test_data/project_config_files/media_missing.yaml new file mode 100644 index 00000000..c20a92d2 --- /dev/null +++ b/spec/test_data/project_config_files/media_missing.yaml @@ -0,0 +1,24 @@ +# An example of a project which has already registered objects, but for which +# you want to provide a manifest to provide descriptive metadata and a MODS template. +# Object discovery also occurs via the manifest. + +project_name: 'Media_Missing' + +project_style: + content_structure: 'media' + +bundle_dir: 'spec/test_data/media_missing' + +content_md_creation: + style: 'media' + media_manifest: 'media_manifest.csv' + +object_discovery: + use_manifest: true + glob: '*' + regex: '^[a-z][a-z]\d\d\d[a-z][a-z]\d\d\d\d$' + +stageable_discovery: + use_container: false + glob: '**/*/*' + regex: '^((?!.md5).)*$'