describe 'spotlight/about_pages/index.html.erb', type: :view do
let(:pages) do
[
stub_model(Spotlight::AboutPage,
title: 'Title1',
content: '[]',
exhibit: exhibit),
stub_model(Spotlight::AboutPage,
title: 'Title2',
content: '[]',
exhibit: exhibit)
]
end
let(:contacts) do
[
stub_model(Spotlight::Contact,
exhibit: exhibit),
stub_model(Spotlight::Contact,
exhibit: exhibit)
]
end
let(:exhibit) { stub_model(Spotlight::Exhibit) }
before do
allow(view).to receive(:disable_save_pages_button?).and_return(false)
allow(view).to receive(:page_collection_name).and_return(:about_pages)
allow(view).to receive(:update_all_exhibit_about_pages_path).and_return('/exhibit/about/update_all')
allow(view).to receive(:exhibit_contacts_path).and_return('/exhibit/1/contacts')
allow(view).to receive(:nestable_data_attributes).and_return('data-behavior="nestable"')
allow(exhibit).to receive_messages(contacts: contacts)
assign(:page, Spotlight::AboutPage.new)
assign(:exhibit, exhibit)
allow(view).to receive(:current_exhibit).and_return(exhibit)
view.lookup_context.prefixes << 'spotlight/pages'
allow(view).to receive(:can?).and_return(true)
end
it 'renders a list of pages and contacts' do
assign(:pages, pages)
allow(exhibit).to receive(:about_pages).and_return pages
render
expect(rendered).to have_selector '.panel-title', text: 'Title1'
expect(rendered).to have_selector '.panel-title', text: 'Title2'
expect(rendered).to have_selector '.contacts_admin ol.dd-list li[data-id]', count: 2
expect(rendered).to have_selector '.contacts_admin ol.dd-list li input[data-property=weight]', visible: false, count: 2
expect(rendered).to have_selector '.contacts_admin ol.dd-list li input#exhibit_contacts_attributes_0_id', visible: false
expect(rendered).to have_selector '.contacts_admin ol.dd-list li input#exhibit_contacts_attributes_1_id', visible: false
end
describe 'Save button' do
it 'is disabled the when the pages are blank' do
allow(view).to receive(:disable_save_pages_button?).and_return(true)
assign(:pages, [])
render
expect(rendered).to have_selector 'button[disabled]', text: 'Save changes'
end
it 'does not be disabled the when there are pages' do
allow(view).to receive(:disable_save_pages_button?).and_return(false)
assign(:pages, [{}])
render
expect(rendered).not_to have_selector 'button[disabled]', text: 'Save changes'
expect(rendered).to have_selector 'button', text: 'Save changes'
end
end
end