Commit a0755d2f authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets
parent fe228b89
...@@ -44,8 +44,8 @@ describe Projects::BlobController do ...@@ -44,8 +44,8 @@ describe Projects::BlobController do
end end
context 'redirect to tree' do context 'redirect to tree' do
let(:id) { 'master/doc' } let(:id) { 'markdown/doc' }
it { should redirect_to("/#{project.path_with_namespace}/tree/master/doc") } it { should redirect_to("/#{project.path_with_namespace}/tree/markdown/doc") }
end end
end end
end end
...@@ -26,7 +26,7 @@ describe Projects::TreeController do ...@@ -26,7 +26,7 @@ describe Projects::TreeController do
end end
context "valid branch, valid path" do context "valid branch, valid path" do
let(:id) { 'master/app/' } let(:id) { 'master/encoding/' }
it { should respond_with(:success) } it { should respond_with(:success) }
end end
...@@ -36,7 +36,7 @@ describe Projects::TreeController do ...@@ -36,7 +36,7 @@ describe Projects::TreeController do
end end
context "invalid branch, valid path" do context "invalid branch, valid path" do
let(:id) { 'invalid-branch/app/' } let(:id) { 'invalid-branch/encoding/' }
it { should respond_with(:not_found) } it { should respond_with(:not_found) }
end end
end end
......
require 'spec_helper' require 'spec_helper'
describe "On a merge request", js: true, feature: true do describe 'Comments' do
let!(:merge_request) { create(:merge_request, :simple) } include RepoHelpers
let!(:project) { merge_request.source_project }
let!(:note) { create(:note_on_merge_request, :with_attachment, project: project) }
before do
login_as :admin
visit project_merge_request_path(project, merge_request)
end
subject { page } describe "On a merge request", js: true, feature: true do
let!(:merge_request) { create(:merge_request) }
let!(:project) { merge_request.source_project }
let!(:note) { create(:note_on_merge_request, :with_attachment, project: project) }
describe "the note form" do before do
it 'should be valid' do login_as :admin
should have_css(".js-main-target-form", visible: true, count: 1) visit project_merge_request_path(project, merge_request)
find(".js-main-target-form input[type=submit]").value.should == "Add Comment"
within(".js-main-target-form") { should_not have_link("Cancel") }
within(".js-main-target-form") { should have_css(".js-note-preview-button", visible: false) }
end end
describe "with text" do subject { page }
before do
within(".js-main-target-form") do
fill_in "note[note]", with: "This is awesome"
end
end
it 'should have enable submit button and preview button' do describe "the note form" do
within(".js-main-target-form") { should_not have_css(".js-comment-button[disabled]") } it 'should be valid' do
within(".js-main-target-form") { should have_css(".js-note-preview-button", visible: true) } should have_css(".js-main-target-form", visible: true, count: 1)
find(".js-main-target-form input[type=submit]").value.should == "Add Comment"
within(".js-main-target-form") { should_not have_link("Cancel") }
within(".js-main-target-form") { should have_css(".js-note-preview-button", visible: false) }
end end
end
end
describe "when posting a note" do describe "with text" do
before do before do
within(".js-main-target-form") do within(".js-main-target-form") do
fill_in "note[note]", with: "This is awsome!" fill_in "note[note]", with: "This is awesome"
find(".js-note-preview-button").trigger("click") end
click_button "Add Comment" end
it 'should have enable submit button and preview button' do
within(".js-main-target-form") { should_not have_css(".js-comment-button[disabled]") }
within(".js-main-target-form") { should have_css(".js-note-preview-button", visible: true) }
end
end end
end end
it 'should be added and form reset' do describe "when posting a note" do
should have_content("This is awsome!") before do
within(".js-main-target-form") { should have_no_field("note[note]", with: "This is awesome!") } within(".js-main-target-form") do
within(".js-main-target-form") { should have_css(".js-note-preview", visible: false) } fill_in "note[note]", with: "This is awsome!"
within(".js-main-target-form") { should have_css(".js-note-text", visible: true) } find(".js-note-preview-button").trigger("click")
end click_button "Add Comment"
end end
end
describe "when editing a note", js: true do it 'should be added and form reset' do
it "should contain the hidden edit form" do should have_content("This is awsome!")
within("#note_#{note.id}") { should have_css(".note-edit-form", visible: false) } within(".js-main-target-form") { should have_no_field("note[note]", with: "This is awesome!") }
within(".js-main-target-form") { should have_css(".js-note-preview", visible: false) }
within(".js-main-target-form") { should have_css(".js-note-text", visible: true) }
end
end end
describe "editing the note" do describe "when editing a note", js: true do
before do it "should contain the hidden edit form" do
find('.note').hover within("#note_#{note.id}") { should have_css(".note-edit-form", visible: false) }
find(".js-note-edit").click
end end
it "should show the note edit form and hide the note body" do describe "editing the note" do
within("#note_#{note.id}") do before do
find(".note-edit-form", visible: true).should be_visible find('.note').hover
find(".note-text", visible: false).should_not be_visible find(".js-note-edit").click
end end
end
it "should reset the edit note form textarea with the original content of the note if cancelled" do
find('.note').hover
find(".js-note-edit").click
within(".note-edit-form") do it "should show the note edit form and hide the note body" do
fill_in "note[note]", with: "Some new content" within("#note_#{note.id}") do
find(".btn-cancel").click find(".note-edit-form", visible: true).should be_visible
find(".js-note-text", visible: false).text.should == note.note find(".note-text", visible: false).should_not be_visible
end
end end
end
it "appends the edited at time to the note" do it "should reset the edit note form textarea with the original content of the note if cancelled" do
find('.note').hover find('.note').hover
find(".js-note-edit").click find(".js-note-edit").click
within(".note-edit-form") do within(".note-edit-form") do
fill_in "note[note]", with: "Some new content" fill_in "note[note]", with: "Some new content"
find(".btn-save").click find(".btn-cancel").click
find(".js-note-text", visible: false).text.should == note.note
end
end end
within("#note_#{note.id}") do it "appends the edited at time to the note" do
should have_css(".note-last-update small") find('.note').hover
find(".note-last-update small").text.should match(/Edited less than a minute ago/) find(".js-note-edit").click
within(".note-edit-form") do
fill_in "note[note]", with: "Some new content"
find(".btn-save").click
end
within("#note_#{note.id}") do
should have_css(".note-last-update small")
find(".note-last-update small").text.should match(/Edited less than a minute ago/)
end
end end
end end
end
describe "deleting an attachment" do describe "deleting an attachment" do
before do before do
find('.note').hover find('.note').hover
find(".js-note-edit").click find(".js-note-edit").click
end end
it "shows the delete link" do it "shows the delete link" do
within(".note-attachment") do within(".note-attachment") do
should have_css(".js-note-attachment-delete") should have_css(".js-note-attachment-delete")
end
end end
end
it "removes the attachment div and resets the edit form" do it "removes the attachment div and resets the edit form" do
find(".js-note-attachment-delete").click find(".js-note-attachment-delete").click
should_not have_css(".note-attachment") should_not have_css(".note-attachment")
find(".note-edit-form", visible: false).should_not be_visible find(".note-edit-form", visible: false).should_not be_visible
end
end end
end end
end end
end
describe "On a merge request diff", js: true, feature: true do
let(:merge_request) { create(:merge_request, :with_diffs, :simple) }
let(:project) { merge_request.source_project }
before do
login_as :admin
visit diffs_project_merge_request_path(project, merge_request)
end
subject { page } describe "On a merge request diff", js: true, feature: true do
let(:merge_request) { create(:merge_request) }
let(:project) { merge_request.source_project }
describe "when adding a note" do
before do before do
find('a[data-line-code="8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_7_7"]').click login_as :admin
end visit diffs_project_merge_request_path(project, merge_request)
describe "the notes holder" do
it { should have_css(".js-temp-notes-holder") }
it { within(".js-temp-notes-holder") { should have_css(".new_note") } }
end end
describe "the note form" do subject { page }
it "shouldn't add a second form for same row" do
find('a[data-line-code="8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_7_7"]').click
should have_css("tr[id='8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_7_7'] + .js-temp-notes-holder form", count: 1) describe "when adding a note" do
before do
find("a[data-line-code=\"#{line_code}\"]").click
end end
it "should be removed when canceled" do describe "the notes holder" do
within(".diff-file form[rel$='8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_7_7']") do it { should have_css(".js-temp-notes-holder") }
find(".js-close-discussion-note-form").trigger("click")
end
should have_no_css(".js-temp-notes-holder") it { within(".js-temp-notes-holder") { should have_css(".new_note") } }
end end
end
end
describe "with muliple note forms" do describe "the note form" do
before do it "shouldn't add a second form for same row" do
find('a[data-line-code="8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_7_7"]').click find("a[data-line-code=\"#{line_code}\"]").click
find('a[data-line-code="8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_10_10"]').click
end
it { should have_css(".js-temp-notes-holder", count: 2) } should have_css("tr[id='#{line_code}'] + .js-temp-notes-holder form", count: 1)
describe "previewing them separately" do
before do
# add two separate texts and trigger previews on both
within("tr[id='8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_7_7'] + .js-temp-notes-holder") do
fill_in "note[note]", with: "One comment on line 7"
find(".js-note-preview-button").trigger("click")
end end
within("tr[id='8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_10_10'] + .js-temp-notes-holder") do
fill_in "note[note]", with: "Another comment on line 10" it "should be removed when canceled" do
find(".js-note-preview-button").trigger("click") within(".diff-file form[rel$='#{line_code}']") do
find(".js-close-discussion-note-form").trigger("click")
end
should have_no_css(".js-temp-notes-holder")
end end
end end
end end
describe "posting a note" do describe "with muliple note forms" do
before do before do
within("tr[id='8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_10_10'] + .js-temp-notes-holder") do find("a[data-line-code=\"#{line_code}\"]").click
fill_in "note[note]", with: "Another comment on line 10" find("a[data-line-code=\"#{line_code_2}\"]").click
click_button("Add Comment") end
it { should have_css(".js-temp-notes-holder", count: 2) }
describe "previewing them separately" do
before do
# add two separate texts and trigger previews on both
within("tr[id='#{line_code}'] + .js-temp-notes-holder") do
fill_in "note[note]", with: "One comment on line 7"
find(".js-note-preview-button").trigger("click")
end
within("tr[id='#{line_code_2}'] + .js-temp-notes-holder") do
fill_in "note[note]", with: "Another comment on line 10"
find(".js-note-preview-button").trigger("click")
end
end end
end end
it 'should be added as discussion' do describe "posting a note" do
should have_content("Another comment on line 10") before do
should have_css(".notes_holder") within("tr[id='#{line_code_2}'] + .js-temp-notes-holder") do
should have_css(".notes_holder .note", count: 1) fill_in "note[note]", with: "Another comment on line 10"
should have_link("Reply") click_button("Add Comment")
end
end
it 'should be added as discussion' do
should have_content("Another comment on line 10")
should have_css(".notes_holder")
should have_css(".notes_holder .note", count: 1)
should have_link("Reply")
end
end end
end end
end end
def line_code
sample_compare.changes.first[:line_code]
end
def line_code_2
sample_compare.changes.last[:line_code]
end
end end
...@@ -41,23 +41,13 @@ describe ProjectWiki do ...@@ -41,23 +41,13 @@ describe ProjectWiki do
subject.wiki.should be_a Gollum::Wiki subject.wiki.should be_a Gollum::Wiki
end end
before do
Gitlab::Shell.any_instance.stub(:add_repository) do
create_temp_repo("#{Rails.root}/tmp/test-git-base-path/non-existant.wiki.git")
end
project.stub(:path_with_namespace).and_return("non-existant")
end
it "creates a new wiki repo if one does not yet exist" do it "creates a new wiki repo if one does not yet exist" do
wiki = ProjectWiki.new(project, user) project_wiki.create_page("index", "test content").should be_true
wiki.create_page("index", "test content").should_not == false
FileUtils.rm_rf wiki.send(:path_to_repo)
end end
it "raises CouldNotCreateWikiError if it can't create the wiki repository" do it "raises CouldNotCreateWikiError if it can't create the wiki repository" do
ProjectWiki.any_instance.stub(:init_repo).and_return(false) project_wiki.stub(:init_repo).and_return(false)
expect { ProjectWiki.new(project, user).wiki }.to raise_exception(ProjectWiki::CouldNotCreateWikiError) expect { project_wiki.send(:create_repo!) }.to raise_exception(ProjectWiki::CouldNotCreateWikiError)
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment