spec/lib/classification_normalizer_spec.rb in dwc-archive-0.9.11 vs spec/lib/classification_normalizer_spec.rb in dwc-archive-1.0.1

- old
+ new

@@ -1,223 +1,214 @@ -require_relative '../spec_helper' -# encoding: utf-8 +# frozen_string_literal: true describe DarwinCore::ClassificationNormalizer do - subject(:dwca) { DarwinCore.new(file_path) } subject(:normalizer) { DarwinCore::ClassificationNormalizer.new(dwca) } - - let(:file_dir) { File.expand_path('../../files', __FILE__) } + + let(:file_dir) { File.expand_path("../files", __dir__) } let(:file_path) { File.join(file_dir, file_name) } - describe '.new' do - let(:file_path) { File.join(file_dir, 'data.tar.gz') } - it { expect(normalizer.is_a? DarwinCore::ClassificationNormalizer). - to be_true } - end + describe ".new" do + let(:file_path) { File.join(file_dir, "data.tar.gz") } + it do + expect(normalizer.is_a?(DarwinCore::ClassificationNormalizer)).to be true + end + end - describe '#normalize' do - let(:file_name) { 'data.tar.gz' } + describe "#normalize" do + let(:file_name) { "data.tar.gz" } - it 'returns normalized data' do + it "returns normalized data" do res = normalizer.normalize expect(res).to be normalizer.normalized_data end + context "flat list" do + let(:file_path) { File.join(file_dir, "flat_list.tar.gz") } - context 'flat list' do - let(:file_path) { File.join(file_dir, 'flat_list.tar.gz') } - - it 'returns flat list' do + it "returns flat list" do normalizer.normalize expect(normalizer.normalized_data).to be_kind_of Hash expect(normalizer.normalized_data.size).to be > 0 end end - context 'synonyms from core' do - let(:file_name) { 'synonyms_in_core_accepted_name_field.tar.gz' } + context "synonyms from core" do + let(:file_name) { "synonyms_in_core_accepted_name_field.tar.gz" } - it 'ingests synonyms using accepted_name field' do + it "ingests synonyms using accepted_name field" do res = normalizer.normalize - syn = res.select { |k,v| !v.synonyms.empty? }. - map { |k,v| v } + syn = res.reject { |_, v| v.synonyms.empty? }.values expect(syn.size).to be > 0 expect(syn[0].synonyms[0]).to be_kind_of DarwinCore::SynonymNormalized end end - context 'synonyms from extension' do - let(:file_name) { 'synonyms_in_extension.tar.gz' } - it 'ingests synonyms from extension' do + context "synonyms from extension" do + let(:file_name) { "synonyms_in_extension.tar.gz" } + it "ingests synonyms from extension" do res = normalizer.normalize - syn = res.select { |k,v| !v.synonyms.empty? }. - map { |k,v| v } + syn = res.reject { |_, v| v.synonyms.empty? }.values expect(syn.size).to be > 0 expect(syn[0].synonyms[0]).to be_kind_of DarwinCore::SynonymNormalized end end - context 'synonyms are not extensions' do - let(:file_name) { 'not_synonym_in_extension.tar.gz' } + context "synonyms are not extensions" do + let(:file_name) { "not_synonym_in_extension.tar.gz" } - it 'does not ingest synonyms' do + it "does not ingest synonyms" do res = normalizer.normalize - syn = res.select { |k,v| !v.synonyms.empty? }. - map { |k,v| v } + syn = res.reject { |_, v| v.synonyms.empty? }.values expect(syn).to be_empty end end - context 'with_extensions flag set on false' do - let(:file_name) { 'synonyms_in_extension.tar.gz' } - it 'should not harvest extensions' do + context "with_extensions flag set on false" do + let(:file_name) { "synonyms_in_extension.tar.gz" } + it "should not harvest extensions" do res = normalizer.normalize(with_extensions: false) - syn = res.select { |k,v| !v.synonyms.empty? }. - map { |k,v| v } + syn = res.reject { |_, v| v.synonyms.empty? }.values expect(syn).to be_empty end end - context 'linnean classification in file (class, order etc fields)' do - let(:file_name) { 'linnean.tar.gz' } + context "linnean classification in file (class, order etc fields)" do + let(:file_name) { "linnean.tar.gz" } - it 'assembles classification' do + it "assembles classification" do res = normalizer.normalize expect(res.first[1]).to be_kind_of DarwinCore::TaxonNormalized expect(res.first[1].linnean_classification_path). - to eq [["Animalia", :kingdom], - ["Arthropoda", :phylum], - ["Insecta", :class], - ["Diptera", :order], - ["Cecidomyiidae", :family], + to eq [["Animalia", :kingdom], + ["Arthropoda", :phylum], + ["Insecta", :class], + ["Diptera", :order], + ["Cecidomyiidae", :family], ["Resseliella", :genus]] - end end - context 'no linnean fields are given' do - it 'returns empty linnean classification' do + context "no linnean fields are given" do + it "returns empty linnean classification" do res = normalizer.normalize expect(res.first[1]).to be_kind_of DarwinCore::TaxonNormalized expect(res.first[1].linnean_classification_path).to be_empty end end - context 'in the presence of scientificNameAuthorship field' do - let(:file_name) { 'sci_name_authorship.tar.gz' } - it 'returns normalized data' do + context "in the presence of scientificNameAuthorship field" do + let(:file_name) { "sci_name_authorship.tar.gz" } + it "returns normalized data" do normalizer.normalize expect(normalizer.darwin_core.file_name). - to eq 'sci_name_authorship.tar.gz' + to eq "sci_name_authorship.tar.gz" expect(normalizer.normalized_data).to be_kind_of Hash expect(normalizer.normalized_data.size).to be > 0 - tn = normalizer.normalized_data['leptogastrinae:tid:2688'] - expect(tn.current_name).to eq 'Leptogaster fornicata Martin, 1957' - expect(tn.current_name_canonical).to eq 'Leptogaster fornicata' + tn = normalizer.normalized_data["leptogastrinae:tid:2688"] + expect(tn.current_name).to eq "Leptogaster fornicata Martin, 1957" + expect(tn.current_name_canonical).to eq "Leptogaster fornicata" end end - context 'when scientificNameAuthorship duplicates author info' do - let(:file_name) { 'sci_name_authorship_dup.tar.gz' } - it 'returns normalized data' do + context "when scientificNameAuthorship duplicates author info" do + let(:file_name) { "sci_name_authorship_dup.tar.gz" } + it "returns normalized data" do normalizer.normalize expect(normalizer.darwin_core.file_name). - to eq 'sci_name_authorship_dup.tar.gz' + to eq "sci_name_authorship_dup.tar.gz" expect(normalizer.normalized_data).to be_kind_of Hash expect(normalizer.normalized_data.size).to be > 0 - tn = normalizer.normalized_data['leptogastrinae:tid:2688'] - expect(tn.current_name).to eq 'Leptogaster fornicata Martin, 1957' - expect(tn.current_name_canonical).to eq 'Leptogaster fornicata' + tn = normalizer.normalized_data["leptogastrinae:tid:2688"] + expect(tn.current_name).to eq "Leptogaster fornicata Martin, 1957" + expect(tn.current_name_canonical).to eq "Leptogaster fornicata" end end - context 'coreid is empty' do - let(:file_name) { 'empty_coreid.tar.gz' } - it 'should ingest information' do + context "coreid is empty" do + let(:file_name) { "empty_coreid.tar.gz" } + it "should ingest information" do res = normalizer.normalize expect(normalizer.darwin_core.file_name). - to eq 'empty_coreid.tar.gz' - tn = res['Taxon9'] - expect(tn.current_name).to eq 'Amanita phalloides' + to eq "empty_coreid.tar.gz" + tn = res["Taxon9"] + expect(tn.current_name).to eq "Amanita phalloides" end end - context 'vernacular locality info' do - let(:file_name) { 'language_locality.tar.gz' } - it 'should ingest locality and language' do + context "vernacular locality info" do + let(:file_name) { "language_locality.tar.gz" } + it "should ingest locality and language" do res = normalizer.normalize - tn = res['leptogastrinae:tid:42'] + tn = res["leptogastrinae:tid:42"] vn = tn.vernacular_names[0] - expect(vn.language).to eq 'en' - expect(vn.locality).to eq 'New England' + expect(vn.language).to eq "en" + expect(vn.locality).to eq "New England" end end end - describe '#name_strings' do - let(:file_path) { File.join(file_dir, 'flat_list.tar.gz') } + describe "#name_strings" do + let(:file_path) { File.join(file_dir, "flat_list.tar.gz") } - context 'before running #normalize' do - it 'is empty' do + context "before running #normalize" do + it "is empty" do expect(normalizer.name_strings).to be_empty end end - - context 'after running #normalize' do - let(:normalized) { normalizer.tap { |n| n.normalize } } - context 'default attibutes' do - it 'returns array' do + context "after running #normalize" do + let(:normalized) { normalizer.tap(&:normalize) } + + context "default attibutes" do + it "returns array" do expect(normalized.name_strings).to be_kind_of Array expect(normalized.name_strings.size).to be > 1 end end - context 'with_hash attribute' do - it 'returns hash' do - strings = normalized.name_strings(with_hash:true) + context "with_hash attribute" do + it "returns hash" do + strings = normalized.name_strings(with_hash: true) expect(strings).to be_kind_of Hash expect(strings.size).to be > 1 expect(strings.values.uniq).to eq [1] end end end - end - describe '#vernacular_name_strings' do - let(:file_path) { File.join(file_dir, 'flat_list.tar.gz') } + describe "#vernacular_name_strings" do + let(:file_path) { File.join(file_dir, "flat_list.tar.gz") } - context 'before running #normalize' do + context "before running #normalize" do subject(:vern) { normalizer.vernacular_name_strings } - it 'is empty' do + + it "is empty" do expect(vern).to be_empty end end - - context 'after running #normalize' do - let(:normalized) { normalizer.tap { |n| n.normalize } } + + context "after running #normalize" do + let(:normalized) { normalizer.tap(&:normalize) } subject(:vern) { normalized.vernacular_name_strings } - subject(:vern_w_hash) { normalized. - vernacular_name_strings(with_hash: true) } + subject(:vern_w_hash) do + normalized.vernacular_name_strings(with_hash: true) + end - context 'default attibutes' do - it 'returns array' do + context "default attibutes" do + it "returns array" do expect(vern).to be_kind_of Array - expect(vern.size).to be > 0 + expect(vern.size).to be > 0 end end - context 'with_hash attribute' do - it 'returns hash' do + context "with_hash attribute" do + it "returns hash" do expect(vern_w_hash).to be_kind_of Hash - expect(vern_w_hash.size).to be > 0 + expect(vern_w_hash.size).to be > 0 expect(vern_w_hash.values.uniq).to eq [1] end end - end - end - end