2014-09-02 18:07:02 +05:30
|
|
|
class Spinach::Features::ProjectWiki < Spinach::FeatureSteps
|
|
|
|
include SharedAuthentication
|
|
|
|
include SharedProject
|
|
|
|
include SharedNote
|
|
|
|
include SharedPaths
|
|
|
|
|
2015-04-26 12:48:37 +05:30
|
|
|
step 'I click on the Cancel button' do
|
2015-12-23 02:04:40 +05:30
|
|
|
page.within(:css, ".wiki-form .form-actions") do
|
2014-09-02 18:07:02 +05:30
|
|
|
click_on "Cancel"
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2015-04-26 12:48:37 +05:30
|
|
|
step 'I should be redirected back to the Edit Home Wiki page' do
|
2017-09-10 17:25:29 +05:30
|
|
|
expect(current_path).to eq project_wiki_path(project, :home)
|
2014-09-02 18:07:02 +05:30
|
|
|
end
|
|
|
|
|
2015-04-26 12:48:37 +05:30
|
|
|
step 'I create the Wiki Home page' do
|
2014-09-02 18:07:02 +05:30
|
|
|
fill_in "wiki_content", with: '[link test](test)'
|
2017-08-17 22:00:37 +05:30
|
|
|
page.within '.wiki-form' do
|
|
|
|
click_on "Create page"
|
|
|
|
end
|
2014-09-02 18:07:02 +05:30
|
|
|
end
|
|
|
|
|
2016-08-24 12:49:21 +05:30
|
|
|
step 'I create the Wiki Home page with no content' do
|
|
|
|
fill_in "wiki_content", with: ''
|
2017-08-17 22:00:37 +05:30
|
|
|
page.within '.wiki-form' do
|
|
|
|
click_on "Create page"
|
|
|
|
end
|
2016-08-24 12:49:21 +05:30
|
|
|
end
|
|
|
|
|
2015-04-26 12:48:37 +05:30
|
|
|
step 'I should see the newly created wiki page' do
|
2015-09-11 14:41:01 +05:30
|
|
|
expect(page).to have_content "Home"
|
|
|
|
expect(page).to have_content "link test"
|
2014-09-02 18:07:02 +05:30
|
|
|
|
|
|
|
click_link "link test"
|
2017-08-17 22:00:37 +05:30
|
|
|
expect(page).to have_content "Create page"
|
2014-09-02 18:07:02 +05:30
|
|
|
end
|
|
|
|
|
2015-04-26 12:48:37 +05:30
|
|
|
step 'I have an existing Wiki page' do
|
2014-09-02 18:07:02 +05:30
|
|
|
wiki.create_page("existing", "content", :markdown, "first commit")
|
|
|
|
@page = wiki.find_page("existing")
|
|
|
|
end
|
|
|
|
|
2015-04-26 12:48:37 +05:30
|
|
|
step 'I browse to that Wiki page' do
|
2017-09-10 17:25:29 +05:30
|
|
|
visit project_wiki_path(project, @page)
|
2014-09-02 18:07:02 +05:30
|
|
|
end
|
|
|
|
|
2015-04-26 12:48:37 +05:30
|
|
|
step 'I click on the Edit button' do
|
2014-09-02 18:07:02 +05:30
|
|
|
click_on "Edit"
|
|
|
|
end
|
|
|
|
|
2015-04-26 12:48:37 +05:30
|
|
|
step 'I change the content' do
|
2014-09-02 18:07:02 +05:30
|
|
|
fill_in "Content", with: 'Updated Wiki Content'
|
|
|
|
click_on "Save changes"
|
|
|
|
end
|
|
|
|
|
2015-04-26 12:48:37 +05:30
|
|
|
step 'I should see the updated content' do
|
2015-09-11 14:41:01 +05:30
|
|
|
expect(page).to have_content "Updated Wiki Content"
|
2014-09-02 18:07:02 +05:30
|
|
|
end
|
|
|
|
|
2015-04-26 12:48:37 +05:30
|
|
|
step 'I should be redirected back to that Wiki page' do
|
2017-09-10 17:25:29 +05:30
|
|
|
expect(current_path).to eq project_wiki_path(project, @page)
|
2014-09-02 18:07:02 +05:30
|
|
|
end
|
|
|
|
|
2015-04-26 12:48:37 +05:30
|
|
|
step 'That page has two revisions' do
|
2017-09-10 17:25:29 +05:30
|
|
|
@page.update(content: "new content", message: "second commit")
|
2014-09-02 18:07:02 +05:30
|
|
|
end
|
|
|
|
|
2015-04-26 12:48:37 +05:30
|
|
|
step 'I click the History button' do
|
2017-08-17 22:00:37 +05:30
|
|
|
click_on 'Page history'
|
2014-09-02 18:07:02 +05:30
|
|
|
end
|
|
|
|
|
2015-04-26 12:48:37 +05:30
|
|
|
step 'I should see both revisions' do
|
2015-09-11 14:41:01 +05:30
|
|
|
expect(page).to have_content current_user.name
|
|
|
|
expect(page).to have_content "first commit"
|
|
|
|
expect(page).to have_content "second commit"
|
2014-09-02 18:07:02 +05:30
|
|
|
end
|
|
|
|
|
2015-04-26 12:48:37 +05:30
|
|
|
step 'I click on the "Delete this page" button' do
|
2015-12-23 02:04:40 +05:30
|
|
|
click_on "Delete"
|
2014-09-02 18:07:02 +05:30
|
|
|
end
|
|
|
|
|
2015-04-26 12:48:37 +05:30
|
|
|
step 'The page should be deleted' do
|
2015-09-11 14:41:01 +05:30
|
|
|
expect(page).to have_content "Page was successfully deleted"
|
2014-09-02 18:07:02 +05:30
|
|
|
end
|
|
|
|
|
2015-04-26 12:48:37 +05:30
|
|
|
step 'I should see the existing page in the pages list' do
|
2015-09-11 14:41:01 +05:30
|
|
|
expect(page).to have_content current_user.name
|
2017-08-17 22:00:37 +05:30
|
|
|
expect(find('.wiki-pages')).to have_content @page.title.capitalize
|
2014-09-02 18:07:02 +05:30
|
|
|
end
|
|
|
|
|
2015-04-26 12:48:37 +05:30
|
|
|
step 'I have an existing Wiki page with images linked on page' do
|
2016-06-02 11:05:42 +05:30
|
|
|
wiki.create_page("pictures", "Look at this [image](image.jpg)\n\n ![alt text](image.jpg)", :markdown, "first commit")
|
2014-09-02 18:07:02 +05:30
|
|
|
@wiki_page = wiki.find_page("pictures")
|
|
|
|
end
|
|
|
|
|
2015-04-26 12:48:37 +05:30
|
|
|
step 'I browse to wiki page with images' do
|
2017-09-10 17:25:29 +05:30
|
|
|
visit project_wiki_path(project, @wiki_page)
|
2014-09-02 18:07:02 +05:30
|
|
|
end
|
|
|
|
|
2015-04-26 12:48:37 +05:30
|
|
|
step 'I click on existing image link' do
|
2014-09-02 18:07:02 +05:30
|
|
|
file = Gollum::File.new(wiki.wiki)
|
|
|
|
Gollum::Wiki.any_instance.stub(:file).with("image.jpg", "master", true).and_return(file)
|
|
|
|
Gollum::File.any_instance.stub(:mime_type).and_return("image/jpeg")
|
2016-06-16 23:09:34 +05:30
|
|
|
expect(page).to have_link('image', href: "#{wiki.wiki_base_path}/image.jpg")
|
2014-09-02 18:07:02 +05:30
|
|
|
click_on "image"
|
|
|
|
end
|
|
|
|
|
2015-04-26 12:48:37 +05:30
|
|
|
step 'I should see the image from wiki repo' do
|
2015-09-11 14:41:01 +05:30
|
|
|
expect(current_path).to match('wikis/image.jpg')
|
|
|
|
expect(page).not_to have_xpath('/html') # Page should render the image which means there is no html involved
|
2014-09-02 18:07:02 +05:30
|
|
|
Gollum::Wiki.any_instance.unstub(:file)
|
|
|
|
Gollum::File.any_instance.unstub(:mime_type)
|
|
|
|
end
|
|
|
|
|
2015-04-26 12:48:37 +05:30
|
|
|
step 'Image should be shown on the page' do
|
2017-09-10 17:25:29 +05:30
|
|
|
expect(page).to have_xpath("//img[@data-src=\"image.jpg\"]")
|
2014-09-02 18:07:02 +05:30
|
|
|
end
|
|
|
|
|
2015-04-26 12:48:37 +05:30
|
|
|
step 'I click on image link' do
|
2016-06-16 23:09:34 +05:30
|
|
|
expect(page).to have_link('image', href: "#{wiki.wiki_base_path}/image.jpg")
|
2014-09-02 18:07:02 +05:30
|
|
|
click_on "image"
|
|
|
|
end
|
|
|
|
|
2015-04-26 12:48:37 +05:30
|
|
|
step 'I should see the new wiki page form' do
|
2015-09-11 14:41:01 +05:30
|
|
|
expect(current_path).to match('wikis/image.jpg')
|
|
|
|
expect(page).to have_content('New Wiki Page')
|
2017-08-17 22:00:37 +05:30
|
|
|
expect(page).to have_content('Create page')
|
2014-09-02 18:07:02 +05:30
|
|
|
end
|
|
|
|
|
2015-04-26 12:48:37 +05:30
|
|
|
step 'I create a New page with paths' do
|
2017-08-17 22:00:37 +05:30
|
|
|
click_on 'New page'
|
2016-08-24 12:49:21 +05:30
|
|
|
fill_in 'Page slug', with: 'one/two/three-test'
|
2017-08-17 22:00:37 +05:30
|
|
|
page.within '#modal-new-wiki' do
|
|
|
|
click_on 'Create page'
|
|
|
|
end
|
2015-04-26 12:48:37 +05:30
|
|
|
fill_in "wiki_content", with: 'wiki content'
|
2017-08-17 22:00:37 +05:30
|
|
|
page.within '.wiki-form' do
|
|
|
|
click_on "Create page"
|
|
|
|
end
|
2016-08-24 12:49:21 +05:30
|
|
|
expect(current_path).to include 'one/two/three-test'
|
2015-09-11 14:41:01 +05:30
|
|
|
end
|
|
|
|
|
2015-04-26 12:48:37 +05:30
|
|
|
step 'I should see non-escaped link in the pages list' do
|
2017-09-10 17:25:29 +05:30
|
|
|
expect(page).to have_xpath("//a[@href='/#{project.full_path}/wikis/one/two/three-test']")
|
2015-04-26 12:48:37 +05:30
|
|
|
end
|
|
|
|
|
|
|
|
step 'I edit the Wiki page with a path' do
|
2017-08-17 22:00:37 +05:30
|
|
|
expect(find('.wiki-pages')).to have_content('Three')
|
|
|
|
click_on 'Three'
|
2016-09-13 17:45:13 +05:30
|
|
|
expect(find('.nav-text')).to have_content('Three')
|
2015-04-26 12:48:37 +05:30
|
|
|
click_on 'Edit'
|
|
|
|
end
|
|
|
|
|
|
|
|
step 'I should see a non-escaped path' do
|
2016-08-24 12:49:21 +05:30
|
|
|
expect(current_path).to include 'one/two/three-test'
|
2015-04-26 12:48:37 +05:30
|
|
|
end
|
|
|
|
|
|
|
|
step 'I should see the Editing page' do
|
2015-12-23 02:04:40 +05:30
|
|
|
expect(page).to have_content('Edit Page')
|
2015-04-26 12:48:37 +05:30
|
|
|
end
|
|
|
|
|
|
|
|
step 'I view the page history of a Wiki page that has a path' do
|
2017-08-17 22:00:37 +05:30
|
|
|
click_on 'Three'
|
|
|
|
click_on 'Page history'
|
2015-04-26 12:48:37 +05:30
|
|
|
end
|
|
|
|
|
2015-09-25 12:07:36 +05:30
|
|
|
step 'I click on Page History' do
|
2017-08-17 22:00:37 +05:30
|
|
|
click_on 'Page history'
|
2015-09-25 12:07:36 +05:30
|
|
|
end
|
|
|
|
|
2015-04-26 12:48:37 +05:30
|
|
|
step 'I should see the page history' do
|
2016-04-02 18:10:28 +05:30
|
|
|
page.within(:css, ".nav-text") do
|
|
|
|
expect(page).to have_content('History')
|
|
|
|
end
|
2015-09-11 14:41:01 +05:30
|
|
|
end
|
|
|
|
|
|
|
|
step 'I search for Wiki content' do
|
2016-04-02 18:10:28 +05:30
|
|
|
fill_in "Search", with: "wiki_content"
|
2015-09-11 14:41:01 +05:30
|
|
|
click_button "Search"
|
2015-04-26 12:48:37 +05:30
|
|
|
end
|
|
|
|
|
2015-09-25 12:07:36 +05:30
|
|
|
step 'I should see a link with a version ID' do
|
|
|
|
find('a[href*="?version_id"]')
|
|
|
|
end
|
|
|
|
|
2016-08-24 12:49:21 +05:30
|
|
|
step 'I should see a "Content can\'t be blank" error message' do
|
|
|
|
expect(page).to have_content('The form contains the following error:')
|
|
|
|
expect(page).to have_content('Content can\'t be blank')
|
|
|
|
end
|
|
|
|
|
2014-09-02 18:07:02 +05:30
|
|
|
def wiki
|
|
|
|
@project_wiki = ProjectWiki.new(project, current_user)
|
|
|
|
end
|
|
|
|
end
|