diff --git a/app/models/iiif3_metadata_writer.rb b/app/models/iiif3_metadata_writer.rb index c5f61e4b..e80dfdc1 100644 --- a/app/models/iiif3_metadata_writer.rb +++ b/app/models/iiif3_metadata_writer.rb @@ -13,8 +13,8 @@ def initialize(cocina_descriptive:, collection_title:, published_date:, doi:) # @return [Array] the IIIF v3 metadata structure def write # rubocop:disable Metrics/AbcSize - available_online + titles + contributors + contacts + types + format + notes + - subjects + coverage + dates + identifiers + collection + publication + available_online + titles + contributors + contacts + types + format + language + + notes + subjects + coverage + dates + identifiers + collection + publication end private @@ -79,6 +79,11 @@ def format vals.present? ? [iiif_key_value('Format', vals)] : [] end + def language + vals = Array(cocina_descriptive['language']).map { it['value'] || it['code'] } + vals.present? ? [iiif_key_value('Language', vals)] : [] + end + def genre filtered_form('genre').map do it['value'] diff --git a/spec/integration/purl_spec.rb b/spec/integration/purl_spec.rb index d4021aeb..47aa0e91 100644 --- a/spec/integration/purl_spec.rb +++ b/spec/integration/purl_spec.rb @@ -27,7 +27,7 @@ visit '/bc854fy5899/iiif3/manifest' json_body = JSON.parse(page.body) expect(json_body['label']['en'].first).to eq('John Wyclif and his followers, Tracts in Middle English') - expect(json_body['metadata'].length).to eq 11 + expect(json_body['metadata'].length).to eq 12 end end diff --git a/spec/model/iiif3_metadata_writer_spec.rb b/spec/model/iiif3_metadata_writer_spec.rb index 49c3330c..9a81ba8e 100644 --- a/spec/model/iiif3_metadata_writer_spec.rb +++ b/spec/model/iiif3_metadata_writer_spec.rb @@ -303,5 +303,17 @@ end['value'][:en]).to eq ['51.5 x 59.8 cm., including title along top and border, with 10 diagrams/maps and 6 columns of titled text.'] end end + + context 'with language' do + let(:cocina_descriptive) do + PurlResource.find('zf119tw4418').version(:head).cocina['description'] + end + + it 'extracts the metadata' do + expect(metadata.find do + it['label'][:en] == ['Language'] + end['value'][:en]).to eq ['eng'] + end + end end end diff --git a/spec/requests/iiif3_manifest_spec.rb b/spec/requests/iiif3_manifest_spec.rb index 93b85040..6e209bf1 100644 --- a/spec/requests/iiif3_manifest_spec.rb +++ b/spec/requests/iiif3_manifest_spec.rb @@ -160,7 +160,7 @@ get '/zf119tw4418/iiif3/manifest' expect(json['items'].length).to eq 58 - expect(json['metadata'].length).to eq 12 + expect(json['metadata'].length).to eq 13 end context 'when pages do not have OCR content' do @@ -363,7 +363,7 @@ get "/#{druid}/iiif3/manifest" expect(response).to have_http_status(:ok) expect(json['label']['en'].first).to eq '10 Meter Contours: Russian River Basin, California' - expect(json['metadata'].size).to eq 11 + expect(json['metadata'].size).to eq 12 end end