diff --git a/.rubocop.yml b/.rubocop.yml index 28cba6e4..875340a5 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -119,6 +119,10 @@ RSpec/DescribeClass: - 'spec/system/search_crawler_spec.rb' - 'spec/tasks/**/*' +Style/BracesAroundHashParameters: + Exclude: + - 'spec/importers/californica_mapper_spec.rb' + Style/Next: Exclude: - 'app/uploaders/csv_manifest_validator.rb' diff --git a/app/importers/californica_mapper.rb b/app/importers/californica_mapper.rb index 7607991f..521d508b 100644 --- a/app/importers/californica_mapper.rb +++ b/app/importers/californica_mapper.rb @@ -194,7 +194,9 @@ def rights_statement def map_field(name) return unless CALIFORNICA_TERMS_MAP.keys.include?(name) - metadata[CALIFORNICA_TERMS_MAP[name]]&.split(DELIMITER) + Array.wrap(CALIFORNICA_TERMS_MAP[name]).map do |source_field| + metadata[source_field]&.split(DELIMITER) + end.flatten.compact end # Determine what Collection this object should be part of. diff --git a/spec/importers/californica_mapper_spec.rb b/spec/importers/californica_mapper_spec.rb index ac7c32cb..11e3ae17 100644 --- a/spec/importers/californica_mapper_spec.rb +++ b/spec/importers/californica_mapper_spec.rb @@ -117,6 +117,24 @@ end end + describe '#map_field' do + let(:metadata) do + { 'Single.source' => 'specific', + 'Source.one' => 'ecolog|~|next', + 'Source.two' => 'nihilism' } + end + + it 'maps from a single source field' do + stub_const('CalifornicaMapper::CALIFORNICA_TERMS_MAP', { 'single_source' => 'Single.source' }) + expect(mapper.map_field('single_source')).to eq(['specific']) + end + + it 'maps from a list of source fields' do + stub_const('CalifornicaMapper::CALIFORNICA_TERMS_MAP', { 'multi_source' => ['Source.one', 'Source.two'] }) + expect(mapper.map_field('multi_source')).to eq(['ecolog', 'next', 'nihilism']) + end + end + describe '#ark' do it "maps the required ark field" do expect(mapper.ark).to eq('ark:/21198/zz0002nq4w')