describe 'curation_concerns/base/_form.html.erb', type: :view do let(:work) do stub_model(GenericWork, id: '456') end let(:ability) { double } let(:form) do CurationConcerns::GenericWorkForm.new(work, ability) end before do view.lookup_context.view_paths.push 'app/views/curation_concerns' allow(work).to receive(:member_ids).and_return([1, 2]) allow(view).to receive(:curation_concern).and_return(work) allow(controller).to receive(:current_user).and_return(stub_model(User)) assign(:form, form) allow(controller).to receive(:controller_name).and_return('batch_uploads') allow(controller).to receive(:action_name).and_return('new') allow(controller).to receive(:repository).and_return(CurationConcerns::GenericWorksController.new.repository) allow(controller).to receive(:blacklight_config).and_return(CurationConcerns::GenericWorksController.new.blacklight_config) end let(:page) do render Capybara::Node::Simple.new(rendered) end context "for a new object" do let(:work) { GenericWork.new } context 'with browse-everything disabled (default)' do before do allow(Sufia.config).to receive(:browse_everything) { nil } end it "draws the page" do expect(page).to have_selector("form[action='/concern/generic_works']") expect(page).to have_link('Batch upload') # does not render the BE upload widget expect(page).not_to have_selector('button#browse-btn') # Draws the "Share" tab, with data for the javascript. expect(page).to have_selector('#share[data-param-key="generic_work"]') end end context 'with browse-everything enabled' do before do allow(Sufia.config).to receive(:browse_everything) { 'not nil' } end it 'renders the BE upload widget' do expect(page).to have_selector('button#browse-btn') end end describe 'uploading a folder' do context 'with Chrome' do before { allow(view).to receive(:browser_supports_directory_upload?) { true } } it 'renders the add folder button' do expect(page).to have_content('Add folder...') end end context 'with a non-Chrome browser' do before { allow(view).to receive(:browser_supports_directory_upload?) { false } } it 'does not render the add folder button' do expect(page).not_to have_content('Add folder...') end end end end context "for a persisted object" do it "draws the page" do expect(page).to have_selector("form[action='/concern/generic_works/456']") expect(page).to have_selector("select#generic_work_resource_type", count: 1) expect(page).to have_selector("select#generic_work_thumbnail_id", count: 1) expect(page).to have_selector("select#generic_work_representative_id", count: 1) expect(page).not_to have_link('Batch upload', href: '/batch_uploads') expect(page).to have_link("Cancel", href: "/dashboard") end end end