require 'spec_helper'
RSpec.describe "hyrax/base/file_manager.html.erb" do
let(:members) { [file_set, member] }
let(:file_set) { Hyrax::FileSetPresenter.new(solr_doc, nil) }
let(:member) { Hyrax::WorkShowPresenter.new(solr_doc_work, nil) }
let(:solr_doc) do
SolrDocument.new(
resource.to_solr.merge(
id: "test",
title_tesim: ["Test"],
thumbnail_path_ss: "/test/image/path.jpg",
label_tesim: ["file_name.tif"]
)
)
end
let(:solr_doc_work) do
SolrDocument.new(
resource.to_solr.merge(
id: "work",
title_tesim: ["Work"],
thumbnail_path_ss: "/test/image/path.jpg",
label_tesim: ["work"]
)
)
end
let(:resource) { FactoryGirl.build(:file_set) }
let(:parent) { build(:generic_work) }
let(:form) do
Hyrax::Forms::FileManagerForm.new(parent, nil)
end
before do
allow(parent).to receive(:etag).and_return("123456")
allow(parent).to receive(:persisted?).and_return(true)
allow(parent).to receive(:id).and_return('resource')
allow(form).to receive(:member_presenters).and_return([file_set, member])
assign(:form, form)
# Blacklight nonsense
allow(view).to receive(:dom_class) { '' }
allow(view).to receive(:search_session).and_return({})
allow(view).to receive(:current_search_session).and_return(nil)
allow(view).to receive(:curation_concern).and_return(parent)
allow(view).to receive(:contextual_path).with(anything, anything) do |x, y|
Hyrax::ContextualPath.new(x, y).show
end
render
end
it "draws the page" do
# has a bulk edit header
expect(rendered).to include "
#{I18n.t('hyrax.file_manager.link_text')}
"
# displays each file set's label
expect(rendered).to have_selector "input[name='file_set[title][]'][type='text'][value='#{file_set}']"
# displays each file set's file name
expect(rendered).to have_content "file_name.tif"
# has a link to edit each file set
expect(rendered).to have_selector('a[href="/concern/file_sets/test"]')
# has a link back to parent
expect(rendered).to have_link "Test title", href: hyrax_generic_work_path(id: "resource")
# has thumbnails for each resource
expect(rendered).to have_selector("img[src='/test/image/path.jpg']")
# renders a form for each member
expect(rendered).to have_selector("#sortable form", count: members.length)
# renders an input for titles
expect(rendered).to have_selector("input[name='file_set[title][]']")
# renders a resource form for the entire resource
expect(rendered).to have_selector("form#resource-form")
# renders a hidden field for the resource form thumbnail id
expect(rendered).to have_selector("#resource-form input[type=hidden][name='generic_work[thumbnail_id]']", visible: false)
# renders a thumbnail field for each member
expect(rendered).to have_selector("input[name='thumbnail_id']", count: members.length)
# renders a hidden field for the resource form representative id
expect(rendered).to have_selector("#resource-form input[type=hidden][name='generic_work[representative_id]']", visible: false)
# renders a representative field for each member
expect(rendered).to have_selector("input[name='representative_id']", count: members.length)
end
end