Commit f8e1f4a7 authored by Riyad Preukschas's avatar Riyad Preukschas

Replace commit note request specs with spinach features

parent 30227869
Feature: Project Comment commit Feature: Comments on commits
Background: Background:
Given I sign in as a user Given I sign in as a user
And I own project "Shop" And I own project "Shop"
Given I visit project commit page And I visit project commit page
@javascript @javascript
Scenario: I comment commit Scenario: I can comment on a commit
Given I leave a comment like "XML attached" Given I leave a comment like "XML attached"
Then I should see comment "XML attached" Then I should see a comment saying "XML attached"
@javascript
Scenario: I can't cancel the main form
Then I should not see the cancel comment button
@javascript
Scenario: I can't preview without text
Given I haven't written any comment text
Then I should not see the comment preview button
@javascript
Scenario: I can preview with text
Given I write a comment like "Nice"
Then I should see the comment preview button
@javascript
Scenario: I preview a comment
Given I preview a comment text like "Bug fixed :smile:"
Then I should see the comment preview
And I should not see the comment text field
@javascript
Scenario: I can edit after preview
Given I preview a comment text like "Bug fixed :smile:"
Then I should see the comment edit button
@javascript
Scenario: I have a reset form after posting from preview
Given I preview a comment text like "Bug fixed :smile:"
And I submit the comment
Then I should see an empty comment text field
And I should not see the comment preview
@javascript
Scenario: I can delete a comment
Given I leave a comment like "XML attached"
And I delete a comment
Then I should not see a comment saying "XML attached"
class ProjectCommentCommit < Spinach::FeatureSteps class CommentsOnCommits < Spinach::FeatureSteps
include SharedAuthentication include SharedAuthentication
include SharedProject
include SharedNote include SharedNote
include SharedPaths include SharedPaths
include SharedProject
end end
module SharedNote module SharedNote
include Spinach::DSL include Spinach::DSL
Given 'I delete a comment' do
first(".js-note-delete").trigger("click")
end
Given 'I haven\'t written any comment text' do
within(".js-main-target-form") do
fill_in "note[note]", with: ""
end
end
Given 'I leave a comment like "XML attached"' do Given 'I leave a comment like "XML attached"' do
fill_in "note_note", :with => "XML attached" within(".js-main-target-form") do
click_button "Add Comment" fill_in "note[note]", with: "XML attached"
click_button "Add Comment"
end
end end
Then 'I should see comment "XML attached"' do Given 'I preview a comment text like "Bug fixed :smile:"' do
page.should have_content "XML attached" within(".js-main-target-form") do
fill_in "note[note]", with: "Bug fixed :smile:"
find(".js-note-preview-button").trigger("click")
end
end end
Given 'I submit the comment' do
within(".js-main-target-form") do
click_button "Add Comment"
end
end
Given 'I write a comment like "Nice"' do
within(".js-main-target-form") do
fill_in "note[note]", with: "Nice"
end
end
Then 'I should not see a comment saying "XML attached"' do
page.should_not have_css(".note")
end
Then 'I should not see the cancel comment button' do
within(".js-main-target-form") do
should_not have_link("Cancel")
end
end
Then 'I should not see the comment preview' do
within(".js-main-target-form") do
page.should have_css(".js-note-preview", visible: false)
end
end
Then 'I should not see the comment preview button' do
within(".js-main-target-form") do
page.should have_css(".js-note-preview-button", visible: false)
end
end
Then 'I should not see the comment text field' do
within(".js-main-target-form") do
page.should have_css(".js-note-text", visible: false)
end
end
Then 'I should see a comment saying "XML attached"' do
within(".note") do
page.should have_content("XML attached")
end
end
Then 'I should see an empty comment text field' do
within(".js-main-target-form") do
page.should have_field("note[note]", with: "")
end
end
Then 'I should see the comment edit button' do
within(".js-main-target-form") do
page.should have_css(".js-note-edit-button", visible: true)
end
end
Then 'I should see the comment preview' do
within(".js-main-target-form") do
page.should have_css(".js-note-preview", visible: true)
end
end
Then 'I should see the comment preview button' do
within(".js-main-target-form") do
page.should have_css(".js-note-preview-button", visible: true)
end
end
# Wall
Given 'I write new comment "my special test message"' do Given 'I write new comment "my special test message"' do
fill_in "note_note", :with => "my special test message" within(".js-main-target-form") do
click_button "Add Comment" fill_in "note[note]", with: "my special test message"
click_button "Add Comment"
end
end end
Then 'I should see project wall note "my special test message"' do Then 'I should see project wall note "my special test message"' do
......
require 'spec_helper' require 'spec_helper'
describe "On a commit", js: true do
let!(:project) { create(:project) }
let!(:commit) { project.commit("bcf03b5de6c33f3869ef70d68cf06e679d1d7f9a") }
before do
login_as :user
project.add_access(@user, :read, :write)
visit project_commit_path(project, commit)
end
subject { page }
describe "the note form" do
# main target form creation
it { should have_css(".js-main-target-form", visible: true, count: 1) }
# button initalization
it { within(".js-main-target-form") { should have_button("Add Comment") } }
it { within(".js-main-target-form") { should_not have_link("Cancel") } }
# notifiactions
it { within(".js-main-target-form") { should have_unchecked_field("Project team") } }
it { within(".js-main-target-form") { should have_checked_field("Commit author") } }
describe "without text" do
it { within(".js-main-target-form") { should have_css(".js-note-preview-button", visible: false) } }
end
describe "with text" do
before do
within(".js-main-target-form") do
fill_in "note[note]", with: "This is awesome"
end
end
it { within(".js-main-target-form") { should_not have_css(".js-comment-button[disabled]") } }
it { within(".js-main-target-form") { should have_css(".js-note-preview-button", visible: true) } }
end
describe "with preview" do
before do
within(".js-main-target-form") do
fill_in "note[note]", with: "This is awesome"
find(".js-note-preview-button").trigger("click")
end
end
it { within(".js-main-target-form") { should have_css(".js-note-preview", text: "This is awesome", visible: true) } }
it { within(".js-main-target-form") { should have_css(".js-note-preview-button", visible: false) } }
it { within(".js-main-target-form") { should have_css(".js-note-edit-button", visible: true) } }
end
end
describe "when posting a note" do
before do
within(".js-main-target-form") do
fill_in "note[note]", with: "This is awsome!"
find(".js-note-preview-button").trigger("click")
click_button "Add Comment"
end
end
# note added
it { within(".js-main-target-form") { should have_content("This is awsome!") } }
# reset form
it { within(".js-main-target-form") { should have_no_field("note[note]", with: "This is awesome!") } }
# return from preview
it { within(".js-main-target-form") { should have_css(".js-note-preview", visible: false) } }
it { within(".js-main-target-form") { should have_css(".js-note-text", visible: true) } }
it "should be removable" do
find(".js-note-delete").trigger("click")
should_not have_css(".note")
end
end
end
describe "On a commit diff", js: true do describe "On a commit diff", js: true do
let!(:project) { create(:project) } let!(:project) { create(:project) }
let!(:commit) { project.commit("bcf03b5de6c33f3869ef70d68cf06e679d1d7f9a") } let!(:commit) { project.repository.commit("bcf03b5de6c33f3869ef70d68cf06e679d1d7f9a") }
before do before do
login_as :user login_as :user
project.add_access(@user, :read, :write) project.team << [@user, :reporter]
visit project_commit_path(project, commit) visit project_commit_path(project, commit)
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