test/integration/web/browse_test.rb
# -*- encoding : utf-8 -*-
require File.expand_path('../../test_helper', __FILE__)
describe 'browse and edit repository file through the UI' do
before do
gitdocs_add('repo1')
gitdocs_add('local')
# Create the various commits, to be able to see revisions.
GitFactory.commit(:local, 'file1', 'fbadbeef')
GitFactory.commit(:local, 'file1', 'foobar')
GitFactory.commit(:local, 'file1', 'deadbeef')
GitFactory.commit(:local, 'file2', 'A5A5A5A5')
GitFactory.commit(:local, 'README.md', 'hello i am a README')
gitdocs_start
visit_and_click_link('Home')
within('table#shares') do
within('tbody') do
click_link(abs_current_dir('local'))
end
end
end
it 'should show the README' do
page.must_have_content('hello i am a README')
end
it 'should browse text files' do
within('table#fileListing') do
within('tbody') do
page.must_have_css('tr', count: 3)
click_link('file1')
end
end
page.must_have_content('deadbeef')
end
# TODO: it 'should browse non-text files' do
# TODO: it 'should view raw file' do
describe 'revisions' do
before do
within('table#fileListing') { within('tbody') { click_link('file1') } }
click_link('Revisions')
end
it 'should be able to browser a file revision' do
within('table#revisions') do
within('tbody') do
page.must_have_css('tr', count: 2)
within(:xpath, '//tr[2]') do
within('td.commit') do
find('a').click
end
end
end
end
page.must_have_content('foobar')
end
it 'should allow file revert' do
within('table#revisions') do
within('tbody') do
page.must_have_css('tr', count: 2)
within(:xpath, '//tr[2]') do
within('td.revert') do
find('input.btn').click
end
end
end
end
page.must_have_content('foobar')
end
end
it 'should edit text files' do
within('table#fileListing') { within('tbody') { click_link('file1') } }
click_link('Edit')
within('form.edit') do
within('#editor') do
find('textarea').set('foobar')
end
fill_in('message', with: 'commit message')
click_button('Save')
end
page.must_have_content('foobar')
end
describe 'creation' do
it 'should allow directory creation' do
within('form.add') do
fill_in('filename', with: 'new_directory')
click_button('directory')
end
within('h2') { page.must_have_content('/new_directory') }
page.must_have_content('No files were found in this directory.')
end
it 'should allow file creation' do
within('form.add') do
fill_in('filename', with: 'new_file')
click_button('file')
end
within('h2') { page.must_have_content('/new_file') }
within('form.edit') do
within('#editor') do
find('textarea').set('foobar')
end
fill_in('message', with: 'commit message')
click_button('Save')
end
page.must_have_content('foobar')
end
# TODO: it 'should allow file upload' do
end
it 'should allow file deletion' do
within('table#fileListing') { within('tbody') { click_link('file1') } }
click_on('Delete')
within('table#fileListing') do
within('tbody') do
page.must_have_css('tr', count: 2)
page.wont_have_content('file1')
page.must_have_content('file2')
end
end
end
end