/ public / spec / features / digital_objects_spec.rb
digital_objects_spec.rb
  1  require 'spec_helper'
  2  require 'rails_helper'
  3  
  4  describe 'Digital Objects', js: true do
  5    def visit_digital_object_page(title)
  6      visit("/search?utf8=✓&op[]=&q[]='#{title}'&limit=digital_object&field[]=&from_year[]=&to_year[]=")
  7      click_link title
  8    end
  9  
 10    describe "Born Digital" do
 11      before(:each) do
 12        visit_digital_object_page('Born digital')
 13      end
 14  
 15      it 'should be accessible from the browse page' do
 16        expect(current_path).to match(/repositories.*digital_objects\/\d+/)
 17      end
 18  
 19      it 'should display a link to a related published accession' do
 20        expect(page).to have_content('Published Accession')
 21      end
 22  
 23      it 'should not display a link to a related but unpublished accession' do
 24        expect(page).to_not have_content('Unpublished Accession')
 25      end
 26    end
 27  
 28    describe "Digital Object With Classification" do
 29      before(:each) do
 30        visit_digital_object_page('Digital Object With Classification')
 31      end
 32  
 33      it 'should show linked classification details for digital objects' do
 34        expect(page).to have_content('Record Groups')
 35      end
 36    end
 37  
 38    it 'does not highlight repository uri' do
 39      visit('/')
 40  
 41      click_on 'Repositories'
 42      click_on 'Test Repo 1'
 43      find('#whats-in-container form .btn.btn-default.digital_object').click
 44  
 45      expect(page).to_not have_text Pathname.new(current_path).parent.to_s
 46    end
 47  
 48    describe "breadcrumbs with mixed content" do
 49      before(:each) do
 50        @repo = create(:repo, repo_code: "collection_organization_test_#{Time.now.to_i}")
 51        set_repo(@repo)
 52        @resource = create(:resource,
 53          title: 'This is <emph render="italic">a mixed content</emph> title',
 54          publish: true
 55        )
 56  
 57        @do = create(:digital_object, publish: true)
 58        @doc = create(:digital_object_component,
 59          publish: true,
 60          digital_object: { ref: @do.uri }
 61        )
 62  
 63  
 64        @ao = create(:archival_object,
 65          publish: true,
 66          title: 'This is <emph render="italic">another mixed content</emph> title',
 67          resource: {'ref' => @resource.uri},
 68          instances: [build(:instance_digital,
 69            digital_object: { ref: @do.uri },
 70            is_representative: true
 71          )]
 72        )
 73        run_indexers
 74      end
 75  
 76      it 'displays breadcrumbs when mixed content is included' do
 77        visit @do.uri
 78  
 79        within('#linked_instances_list') do
 80          expect(page).to have_css('span.emph.render-italic', text: 'This is a mixed content title')
 81          expect(page).to have_css('span.emph.render-italic', text: 'This is another mixed content title')
 82        end
 83      end
 84    end
 85  
 86    describe 'Digital Materials listing' do
 87      before (:each) do
 88        visit '/'
 89        click_link 'Digital Materials'
 90      end
 91  
 92      it 'displays breadcrumbs for items in the Digital Materials listing' do
 93        within find('div[data-uri="/repositories/2/digital_objects/5"') do
 94          expect(page).to have_content('Resource with digital instance')
 95        end
 96      end
 97  
 98      describe 'accessibility' do
 99        it "does not skip heading levels" do
100          expect(page).to be_axe_clean.checking_only :'heading-order'
101        end
102  
103        context 'individual digital materials page' do
104          before (:each) do
105            first("a[class='record-title']").click
106          end
107  
108          it "does not skip heading levels" do
109            expect(page).to be_axe_clean.checking_only :'heading-order'
110          end
111        end
112      end
113    end
114  end