diff --git a/app/jobs/load_big_sam_job.rb b/app/jobs/load_big_sam_job.rb index b7c195b..14174db 100644 --- a/app/jobs/load_big_sam_job.rb +++ b/app/jobs/load_big_sam_job.rb @@ -384,9 +384,9 @@ def fix_date(row) end def mc_or_mac?(names) - return names if names.family.starts_with?(/Mc[A-Z]/) || names.family.starts_with?(/Mac[A-Z]/) + return names if names.family.start_with?(/Mc[A-Z]/) || names.family.start_with?(/Mac[A-Z]/) - if names.family.starts_with?('Mac ') || names.family.starts_with?('Mc ') + if names.family.start_with?('Mac ') || names.family.start_with?('Mc ') names.family = names.family.split.map(&:titleize).join return names end @@ -398,6 +398,8 @@ def mc_or_mac?(names) return names end + return names unless names.family.downcase.start_with?('mac') || names.family.downcase.start_with?('mc') + names.family.gsub!(/M.*c\K.*/, &:titleize) names end diff --git a/app/views/letters/_letter.json.jbuilder b/app/views/letters/_letter.json.jbuilder index 90a567a..88bb053 100644 --- a/app/views/letters/_letter.json.jbuilder +++ b/app/views/letters/_letter.json.jbuilder @@ -79,6 +79,8 @@ json.repositories do end end +json.set! 'previously_published', letter.letter_publisher.label if letter.letter_publisher.present? + json.set! 'publication_information', letter.publication_information if letter.publication_information.present? json.recipients do diff --git a/spec/jobs/load_big_sam_job_spec.rb b/spec/jobs/load_big_sam_job_spec.rb index c9908c5..37b6324 100644 --- a/spec/jobs/load_big_sam_job_spec.rb +++ b/spec/jobs/load_big_sam_job_spec.rb @@ -64,4 +64,11 @@ names = bs.mc_or_mac?(macintosh) expect(names.family).to eq('MacIntosh') end + + it 'handles M names that also include a c' do + bs = described_class.new + marcuse = Namae.parse('Herbert Marcuse').first + names = bs.mc_or_mac?(marcuse) + expect(names.family).to eq('Marcuse') + end end diff --git a/spec/requests/letters_spec.rb b/spec/requests/letters_spec.rb index f752285..04ef8bf 100644 --- a/spec/requests/letters_spec.rb +++ b/spec/requests/letters_spec.rb @@ -168,6 +168,7 @@ expect(letter.published).to be(true) get letter_url(letter), as: :json expect(json[:repositories]).to be_nil + expect(json[:previously_published]).to eq(letter.letter_publisher.label) end it 'renders unpublished when requested from beckettapi' do