describe 'browse_everything/_file.html.erb', type: :view do
let(:file) do
BrowseEverything::FileEntry.new(
'file_id_01234', 'my_provider:/location/pa/th/file.m4v',
'file.m4v', 1024 * 1024 * 1024, Time.now, false
)
end
let(:container) do
BrowseEverything::FileEntry.new(
'dir_id_01234', 'my_provider:/location/pa/th/dir',
'dir', 0, Time.now, true
)
end
let(:provider) { double('provider') }
let(:page) { Capybara::Node::Simple.new(rendered) }
before do
allow(view).to receive(:browse_everything_engine).and_return(BrowseEverything::Engine.routes.url_helpers)
allow(view).to receive(:provider).and_return(provider)
allow(view).to receive(:path).and_return('path')
allow(view).to receive(:parent).and_return('parent')
allow(view).to receive(:provider_name).and_return('my provider')
allow(provider).to receive(:config).and_return(config)
end
describe 'a file' do
before do
allow(view).to receive(:file).and_return(file)
render
end
context 'file not too big' do
let(:config) { { max_upload_file_size: (5 * 1024 * 1024 * 1024) } }
it 'should draw link' do
expect(page).to have_selector('a.ev-link')
end
end
context 'max not configured' do
let(:config) { {} }
it 'should draw link' do
expect(page).to have_selector('a.ev-link')
end
end
context 'file too big' do
let(:config) { { max_upload_file_size: 1024 } }
it 'should draw link' do
expect(page).not_to have_selector('a.ev-link')
end
end
context 'multi-select' do
let(:config) { {} }
it 'should not have a checkbox' do
expect(page).not_to have_selector('input.ev-select-all')
end
end
end
describe 'a directory' do
before do
allow(view).to receive(:file).and_return(container)
render
end
context 'multi-select' do
let(:config) { {} }
it 'should have the select-all checkbox' do
expect(page).to have_selector('input.ev-select-all')
end
end
end
end