summaryrefslogtreecommitdiff
path: root/spec/features/projects/commit
diff options
context:
space:
mode:
authorblackst0ne <blackst0ne.ru@gmail.com>2018-04-16 08:53:27 +0000
committerRémy Coutable <remy@rymai.me>2018-04-16 08:53:27 +0000
commit36d6cc86fda41b5cf8ff43c62073ae956b6c634e (patch)
tree6451bbf34b564f2ca6c9ba70d5f76a5fcca9ad4c /spec/features/projects/commit
parentc3e26860be156314e733a6dfb986c91fc55766f5 (diff)
downloadgitlab-ce-36d6cc86fda41b5cf8ff43c62073ae956b6c634e.tar.gz
Replace the `project/commits/comments.feature` spinach test with an rspec analog
Diffstat (limited to 'spec/features/projects/commit')
-rw-r--r--spec/features/projects/commit/user_comments_on_commit_spec.rb110
1 files changed, 110 insertions, 0 deletions
diff --git a/spec/features/projects/commit/user_comments_on_commit_spec.rb b/spec/features/projects/commit/user_comments_on_commit_spec.rb
new file mode 100644
index 00000000000..5174f793367
--- /dev/null
+++ b/spec/features/projects/commit/user_comments_on_commit_spec.rb
@@ -0,0 +1,110 @@
+require "spec_helper"
+
+describe "User comments on commit", :js do
+ include Spec::Support::Helpers::Features::NotesHelpers
+ include RepoHelpers
+
+ let(:project) { create(:project, :repository) }
+ let(:user) { create(:user) }
+
+ COMMENT_TEXT = "XML attached".freeze
+
+ before do
+ sign_in(user)
+ project.add_developer(user)
+
+ visit(project_commit_path(project, sample_commit.id))
+ end
+
+ context "when adding new comment" do
+ it "adds comment" do
+ EMOJI = ":+1:".freeze
+
+ page.within(".js-main-target-form") do
+ expect(page).not_to have_link("Cancel")
+
+ fill_in("note[note]", with: "#{COMMENT_TEXT} #{EMOJI}")
+
+ # Check on `Preview` tab
+ click_link("Preview")
+
+ expect(find(".js-md-preview")).to have_content(COMMENT_TEXT).and have_css("gl-emoji")
+ expect(page).not_to have_css(".js-note-text")
+
+ # Check on `Write` tab
+ click_link("Write")
+
+ expect(page).to have_field("note[note]", with: "#{COMMENT_TEXT} #{EMOJI}")
+
+ # Submit comment from the `Preview` tab to get rid of a separate `it` block
+ # which would specially tests if everything gets cleared from the note form.
+ click_link("Preview")
+ click_button("Comment")
+ end
+
+ wait_for_requests
+
+ page.within(".note") do
+ expect(page).to have_content(COMMENT_TEXT).and have_css("gl-emoji")
+ end
+
+ page.within(".js-main-target-form") do
+ expect(page).to have_field("note[note]", with: "").and have_no_css(".js-md-preview")
+ end
+ end
+ end
+
+ context "when editing comment" do
+ before do
+ add_note(COMMENT_TEXT)
+ end
+
+ it "edits comment" do
+ NEW_COMMENT_TEXT = "+1 Awesome!".freeze
+
+ page.within(".main-notes-list") do
+ note = find(".note")
+ note.hover
+
+ note.find(".js-note-edit").click
+ end
+
+ page.find(".current-note-edit-form textarea")
+
+ page.within(".current-note-edit-form") do
+ fill_in("note[note]", with: NEW_COMMENT_TEXT)
+ click_button("Save comment")
+ end
+
+ wait_for_requests
+
+ page.within(".note") do
+ expect(page).to have_content(NEW_COMMENT_TEXT)
+ end
+ end
+ end
+
+ context "when deleting comment" do
+ before do
+ add_note(COMMENT_TEXT)
+ end
+
+ it "deletes comment" do
+ page.within(".note") do
+ expect(page).to have_content(COMMENT_TEXT)
+ end
+
+ page.within(".main-notes-list") do
+ note = find(".note")
+ note.hover
+
+ find(".more-actions").click
+ find(".more-actions .dropdown-menu li", match: :first)
+
+ accept_confirm { find(".js-note-delete").click }
+ end
+
+ expect(page).not_to have_css(".note")
+ end
+ end
+end