spec/models/structure_spec.rb in ddr-models-2.11.0 vs spec/models/structure_spec.rb in ddr-models-3.0.0.alpha.1

- old
+ new

@@ -1,99 +1,21 @@ require 'spec_helper' require 'support/structural_metadata_helper' -module Ddr::Models - RSpec.describe Structure, type: :model, structural_metadata: true do +module Ddr + module Models + RSpec.describe Structure, type: :model, structural_metadata: true do - describe "#files" do - let(:structure) { FactoryGirl.build(:simple_structure)} - it "returns a hash of structure files" do - expect(structure.files.keys).to match_array([ 'abc', 'def', 'ghi' ]) - structure.files.values.each do |value| - expect(value).to be_a(Structures::File) - end - end - end + let(:structure) { FactoryGirl.build(:multiple_struct_maps_structure) } - describe "#uses" do - let(:structure) { FactoryGirl.build(:simple_structure)} - it "returns a hash of uses" do - expect(structure.uses.keys).to match_array([ 'foo', 'bar', 'baz' ]) - expect(structure.uses['foo'].first.href).to eq('ark:/99999/fk4ab3') - expect(structure.uses['bar'].first.href).to eq('ark:/99999/fk4cd9') - expect(structure.uses['baz'].first.href).to eq('ark:/99999/fk4ef1') - end - end - - describe "#creator" do - describe "structure has a metsHdr" do - let(:structure) { FactoryGirl.build(:simple_structure) } - it "returns the creator" do - expect(structure.creator).to eq(Ddr::Models::Structures::Agent::NAME_REPOSITORY_DEFAULT) + describe "#struct_maps" do + let(:struct_maps) { structure.struct_maps } + it "should include struct divs for each struct map" do + expect(struct_maps.keys).to match_array([ 'default', 'reverse' ]) + expect(struct_maps['default']).to be_a(Ddr::Models::StructDiv) + expect(struct_maps['reverse']).to be_a(Ddr::Models::StructDiv) end end - describe "structure does not have a metsHdr" do - let(:structure) { FactoryGirl.build(:multiple_struct_maps_structure) } - it "returns the creator" do - expect(structure.creator).to be nil - end - end - end - describe "#repository_maintained?" do - let(:structure) { FactoryGirl.build(:simple_structure)} - before do - allow(structure).to receive(:creator) { creator } - end - describe "maintained by the repository" do - let(:creator) { Ddr::Models::Structures::Agent::NAME_REPOSITORY_DEFAULT } - it "is true" do - expect(structure.repository_maintained?).to be true - end - end - describe "not maintained by the repository" do - let(:creator) { 'foo' } - it "is false" do - expect(structure.repository_maintained?).to be false - end - end end - - describe "#dereferenced_structure" do - describe "fptr case" do - let(:structure) { FactoryGirl.build(:nested_structure) } - let(:expected) { nested_structure_dereferenced_hash } - before do - flocat_x = instance_double("Structures::FLocat", effective_use: 'foo') - flocat_y = instance_double("Structures::FLocat", effective_use: 'bar') - flocat_z = instance_double("Structures::FLocat", effective_use: 'baz') - file_a = instance_double("Structures::File", repo_ids: [ 'test:7' ], flocats: [ flocat_x ]) - file_b = instance_double("Structures::File", repo_ids: [ 'test:8' ], flocats: [ flocat_y ]) - file_c = instance_double("Structures::File", repo_ids: [ 'test:9' ], flocats: [ flocat_z ]) - allow(Structures::File).to receive(:find).with(an_instance_of(Ddr::Models::Structure), 'abc') { file_a } - allow(Structures::File).to receive(:find).with(an_instance_of(Ddr::Models::Structure), 'def') { file_b } - allow(Structures::File).to receive(:find).with(an_instance_of(Ddr::Models::Structure), 'ghi') { file_c } - end - it "returns the dereferenced structure" do - expect(structure.dereferenced_structure).to eq(expected) - end - end - describe "mptr case" do - let(:structure) { FactoryGirl.build(:nested_structure_mptr) } - let(:expected) { nested_structure_mptr_dereferenced_hash } - before do - solr_doc_a = instance_double("SolrDocument", id: 'test:7') - solr_doc_b = instance_double("SolrDocument", id: 'test:8') - solr_doc_c = instance_double("SolrDocument", id: 'test:9') - allow_any_instance_of(Ddr::Models::Structures::Mptr).to receive(:ark?) { true } - allow(::SolrDocument).to receive(:find_by_permanent_id).with('ark:/99999/fk4ab3') { solr_doc_a } - allow(::SolrDocument).to receive(:find_by_permanent_id).with('ark:/99999/fk4cd9') { solr_doc_b } - allow(::SolrDocument).to receive(:find_by_permanent_id).with('ark:/99999/fk4ef1') { solr_doc_c } - end - it "returns the dereferenced structure" do - expect(structure.dereferenced_structure).to eq(expected) - end - end - end - end -end +end \ No newline at end of file