diff options
author | Riyad Preukschas <riyad@informatik.uni-bremen.de> | 2013-01-15 03:11:35 +0400 |
---|---|---|
committer | Riyad Preukschas <riyad@informatik.uni-bremen.de> | 2013-01-15 03:52:57 +0400 |
commit | d28176b132bdc74055f31e2d62665d5d74ebacb4 (patch) | |
tree | 4bc9c8e3778d51020da0e8bb318aa7c3830ee67d /features | |
parent | f8e1f4a7c9ee2554efcf7376a0cfbefae8956d7b (diff) |
Replace commit diff note request specs with spinach features
Diffstat (limited to 'features')
-rw-r--r-- | features/project/commits/commit_diff_comments.feature | 91 | ||||
-rw-r--r-- | features/steps/project/comments_on_commit_diffs.rb | 6 | ||||
-rw-r--r-- | features/steps/shared/diff_note.rb | 158 |
3 files changed, 255 insertions, 0 deletions
diff --git a/features/project/commits/commit_diff_comments.feature b/features/project/commits/commit_diff_comments.feature new file mode 100644 index 00000000000..4323e8ce596 --- /dev/null +++ b/features/project/commits/commit_diff_comments.feature @@ -0,0 +1,91 @@ +Feature: Comments on commit diffs + Background: + Given I sign in as a user + And I own project "Shop" + And I visit project commit page + + @javascript + Scenario: I can access add diff comment buttons + Then I should see add a diff comment button + + @javascript + Scenario: I can comment on a commit diff + Given I leave a diff comment like "Typo, please fix" + Then I should see a diff comment saying "Typo, please fix" + + @javascript + Scenario: I get a temporary form for the first comment on a diff line + Given I open a diff comment form + Then I should see a temporary diff comment form + + @javascript + Scenario: I have a cancel button on the diff form + Given I open a diff comment form + Then I should see the cancel comment button + + @javascript + Scenario: I can cancel a diff form + Given I open a diff comment form + And I cancel the diff comment + Then I should not see the diff comment form + + @javascript + Scenario: I can't open a second form for a diff line + Given I open a diff comment form + And I open a diff comment form + Then I should only see one diff form + + @javascript + Scenario: I can have multiple forms + Given I open a diff comment form + And I write a diff comment like ":-1: I don't like this" + And I open another diff comment form + Then I should see a diff comment form with ":-1: I don't like this" + And I should see an empty diff comment form + + @javascript + Scenario: I can preview multiple forms separately + Given I preview a diff comment text like "Should fix it :smile:" + And I preview another diff comment text like "DRY this up" + Then I should see two separate previews + + @javascript + Scenario: I have a reply button in discussions + Given I leave a diff comment like "Typo, please fix" + Then I should see a discussion reply button + + @javascript + Scenario: I can't preview without text + Given I open a diff comment form + And I haven't written any diff comment text + Then I should not see the diff comment preview button + + @javascript + Scenario: I can preview with text + Given I open a diff comment form + And I write a diff comment like ":-1: I don't like this" + Then I should see the diff comment preview button + + @javascript + Scenario: I preview a diff comment + Given I preview a diff comment text like "Should fix it :smile:" + Then I should see the diff comment preview + And I should not see the diff comment text field + + @javascript + Scenario: I can edit after preview + Given I preview a diff comment text like "Should fix it :smile:" + Then I should see the diff comment edit button + + @javascript + Scenario: The form gets removed after posting + Given I preview a diff comment text like "Should fix it :smile:" + And I submit the diff comment + Then I should not see the diff comment form + And I should see a discussion reply button + + @javascript + Scenario: I can delete a discussion comment + Given I leave a diff comment like "Typo, please fix" + And I delete a diff comment + Then I should not see a diff comment saying "Typo, please fix" diff --git a/features/steps/project/comments_on_commit_diffs.rb b/features/steps/project/comments_on_commit_diffs.rb new file mode 100644 index 00000000000..fc397a4fa91 --- /dev/null +++ b/features/steps/project/comments_on_commit_diffs.rb @@ -0,0 +1,6 @@ +class CommentsOnCommitDiffs < Spinach::FeatureSteps + include SharedAuthentication + include SharedDiffNote + include SharedPaths + include SharedProject +end diff --git a/features/steps/shared/diff_note.rb b/features/steps/shared/diff_note.rb new file mode 100644 index 00000000000..36597e879bb --- /dev/null +++ b/features/steps/shared/diff_note.rb @@ -0,0 +1,158 @@ +module SharedDiffNote + include Spinach::DSL + + Given 'I cancel the diff comment' do + within(".diff_file") do + find(".js-close-discussion-note-form").trigger("click") + end + end + + Given 'I delete a diff comment' do + within(".diff_file") do + first(".js-note-delete").trigger("click") + end + end + + Given 'I haven\'t written any diff comment text' do + within(".diff_file") do + fill_in "note[note]", with: "" + end + end + + Given 'I leave a diff comment like "Typo, please fix"' do + find("#0_29_14.line_holder .js-add-diff-note-button").trigger("click") + within(".diff_file") do + fill_in "note[note]", with: "Typo, please fix" + #click_button("Add Comment") + find(".js-comment-button").trigger("click") + end + end + + Given 'I preview a diff comment text like "Should fix it :smile:"' do + find("#0_29_14.line_holder .js-add-diff-note-button").trigger("click") + within(".diff_file") do + fill_in "note[note]", with: "Should fix it :smile:" + find(".js-note-preview-button").trigger("click") + end + end + + Given 'I preview another diff comment text like "DRY this up"' do + find("#0_57_41.line_holder .js-add-diff-note-button").trigger("click") + within(".diff_file") do + fill_in "note[note]", with: "DRY this up" + find(".js-note-preview-button").trigger("click") + end + end + + Given 'I open a diff comment form' do + find("#0_29_14.line_holder .js-add-diff-note-button").trigger("click") + end + + Given 'I open another diff comment form' do + find("#0_57_41.line_holder .js-add-diff-note-button").trigger("click") + end + + Given 'I write a diff comment like ":-1: I don\'t like this"' do + within(".diff_file") do + fill_in "note[note]", with: ":-1: I don\'t like this" + end + end + + Given 'I submit the diff comment' do + within(".diff_file") do + click_button("Add Comment") + end + end + + + + Then 'I should not see the diff comment form' do + within(".diff_file") do + page.should_not have_css("form.new_note") + end + end + + Then 'I should not see the diff comment preview button' do + within(".diff_file") do + page.should have_css(".js-note-preview-button", visible: false) + end + end + + Then 'I should not see the diff comment text field' do + within(".diff_file") do + page.should have_css(".js-note-text", visible: false) + end + end + + Then 'I should only see one diff form' do + within(".diff_file") do + page.should have_css("form.new_note", count: 1) + end + end + + Then 'I should see a diff comment form with ":-1: I don\'t like this"' do + within(".diff_file") do + page.should have_field("note[note]", with: ":-1: I don\'t like this") + end + end + + Then 'I should see a diff comment saying "Typo, please fix"' do + within(".diff_file .note") do + page.should have_content("Typo, please fix") + end + end + + Then 'I should see a discussion reply button' do + within(".diff_file") do + page.should have_link("Reply") + end + end + + Then 'I should see a temporary diff comment form' do + within(".diff_file") do + page.should have_css(".js-temp-notes-holder form.new_note") + end + end + + Then 'I should see add a diff comment button' do + page.should have_css(".js-add-diff-note-button", visible: false) + end + + Then 'I should see an empty diff comment form' do + within(".diff_file") do + page.should have_field("note[note]", with: "") + end + end + + Then 'I should see the cancel comment button' do + within(".diff_file form") do + page.should have_css(".js-close-discussion-note-form", text: "Cancel") + end + end + + Then 'I should see the diff comment preview' do + within(".diff_file form") do + page.should have_css(".js-note-preview", visible: false) + end + end + + Then 'I should see the diff comment edit button' do + within(".diff_file") do + page.should have_css(".js-note-edit-button", visible: true) + end + end + + Then 'I should see the diff comment preview button' do + within(".diff_file") do + page.should have_css(".js-note-preview-button", visible: true) + end + end + + Then 'I should see two separate previews' do + within(".diff_file") do + page.should have_css(".js-note-preview", visible: true, count: 2) + page.should have_content("Should fix it") + page.should have_content("DRY this up") + end + end +end |