summaryrefslogtreecommitdiff
path: root/spec/features
diff options
context:
space:
mode:
Diffstat (limited to 'spec/features')
-rw-r--r--spec/features/issues/award_emoji_spec.rb2
-rw-r--r--spec/features/issues/award_spec.rb72
-rw-r--r--spec/features/issues_spec.rb2
-rw-r--r--spec/features/merge_requests/award_spec.rb72
-rw-r--r--spec/features/notes_on_merge_requests_spec.rb8
5 files changed, 149 insertions, 7 deletions
diff --git a/spec/features/issues/award_emoji_spec.rb b/spec/features/issues/award_emoji_spec.rb
index 41af789aae2..07a854ea014 100644
--- a/spec/features/issues/award_emoji_spec.rb
+++ b/spec/features/issues/award_emoji_spec.rb
@@ -28,7 +28,6 @@ describe 'Awards Emoji', feature: true do
end
context 'click the thumbsup emoji' do
-
it 'should increment the thumbsup emoji', js: true do
find('[data-emoji="thumbsup"]').click
sleep 2
@@ -41,7 +40,6 @@ describe 'Awards Emoji', feature: true do
end
context 'click the thumbsdown emoji' do
-
it 'should increment the thumbsdown emoji', js: true do
find('[data-emoji="thumbsdown"]').click
sleep 2
diff --git a/spec/features/issues/award_spec.rb b/spec/features/issues/award_spec.rb
new file mode 100644
index 00000000000..eafd517c840
--- /dev/null
+++ b/spec/features/issues/award_spec.rb
@@ -0,0 +1,72 @@
+require 'rails_helper'
+
+feature 'Issue awards', js: true, feature: true do
+ let(:user) { create(:user) }
+ let(:project) { create(:project, :public) }
+ let(:issue) { create(:issue, project: project) }
+ let!(:note) { create(:note_on_issue, project: project, noteable: issue, note: 'Looks good!') }
+
+ describe 'logged in' do
+ before do
+ login_as(user)
+ visit namespace_project_issue_path(project.namespace, project, issue)
+ end
+
+ it 'should add award to issue' do
+ first('.js-emoji-btn').click
+ expect(page).to have_selector('.js-emoji-btn.active')
+ expect(first('.js-emoji-btn')).to have_content '1'
+ end
+
+ it 'should remove award from issue' do
+ first('.js-emoji-btn').click
+ find('.js-emoji-btn.active').click
+ expect(first('.js-emoji-btn')).to have_content '0'
+ end
+
+ it 'should only have one menu on the page' do
+ first('.js-add-award').click
+ expect(page).to have_selector('.emoji-menu')
+
+ expect(page).to have_selector('.emoji-menu', count: 1)
+ end
+ end
+
+ describe 'logged out' do
+ before do
+ visit namespace_project_issue_path(project.namespace, project, issue)
+ end
+
+ it 'should not see award menu button' do
+ expect(page).not_to have_selector('.js-award-holder')
+ end
+
+ it 'should not see award menu button in note' do
+ page.within('.note') do
+ expect(page).not_to have_selector('.js-award-action-btn')
+ end
+ end
+ end
+
+ def show_note_award_menu
+ page.within('.note') do
+ find('.js-add-award').click
+ end
+ expect(page).to have_selector('.emoji-menu')
+ end
+
+ def award_on_note(index = 1)
+ page.within('.emoji-menu') do
+ buttons = all('.js-emoji-btn')
+ buttons[index].click
+ end
+ end
+
+ def remove_award_on_note
+ page.within('.note') do
+ page.within('.js-awards-block') do
+ first('.js-emoji-btn').click
+ end
+ end
+ end
+end
diff --git a/spec/features/issues_spec.rb b/spec/features/issues_spec.rb
index 9271964166a..a4eed5031c9 100644
--- a/spec/features/issues_spec.rb
+++ b/spec/features/issues_spec.rb
@@ -125,7 +125,7 @@ describe 'Issues', feature: true do
describe 'Issue info' do
it 'excludes award_emoji from comment count' do
issue = create(:issue, author: @user, assignee: @user, project: project, title: 'foobar')
- create(:upvote_note, noteable: issue, project: project)
+ create(:award_emoji, awardable: issue)
visit namespace_project_issues_path(project.namespace, project, assignee_id: @user.id)
diff --git a/spec/features/merge_requests/award_spec.rb b/spec/features/merge_requests/award_spec.rb
new file mode 100644
index 00000000000..4d3e8173ebe
--- /dev/null
+++ b/spec/features/merge_requests/award_spec.rb
@@ -0,0 +1,72 @@
+require 'rails_helper'
+
+feature 'Merge request awards', js: true, feature: true do
+ let(:user) { create(:user) }
+ let(:project) { create(:project, :public) }
+ let(:merge_request) { create(:merge_request_with_diffs, source_project: project) }
+ let!(:note) { create(:note_on_merge_request, project: project, noteable: merge_request, note: 'Looks good!') }
+
+ describe 'logged in' do
+ before do
+ login_as(user)
+ visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+ end
+
+ it 'should add award to merge request' do
+ first('.js-emoji-btn').click
+ expect(page).to have_selector('.js-emoji-btn.active')
+ expect(first('.js-emoji-btn')).to have_content '1'
+ end
+
+ it 'should remove award from merge request' do
+ first('.js-emoji-btn').click
+ find('.js-emoji-btn.active').click
+ expect(first('.js-emoji-btn')).to have_content '0'
+ end
+
+ it 'should only have one menu on the page' do
+ first('.js-add-award').click
+ expect(page).to have_selector('.emoji-menu')
+
+ expect(page).to have_selector('.emoji-menu', count: 1)
+ end
+ end
+
+ describe 'logged out' do
+ before do
+ visit namespace_project_merge_request_path(project.namespace, project, merge_request)
+ end
+
+ it 'should not see award menu button' do
+ expect(page).not_to have_selector('.js-award-holder')
+ end
+
+ it 'should not see award menu button in note' do
+ page.within('.note') do
+ expect(page).not_to have_selector('.js-award-action-btn')
+ end
+ end
+ end
+
+ def show_note_award_menu
+ page.within('.note') do
+ find('.js-add-award').click
+ end
+ expect(page).to have_selector('.emoji-menu')
+ end
+
+ def award_on_note(index = 1)
+ page.within('.emoji-menu') do
+ buttons = all('.js-emoji-btn')
+ buttons[index].click
+ end
+ end
+
+ def remove_award_on_note
+ page.within('.note') do
+ page.within('.js-awards-block') do
+ first('.js-emoji-btn').click
+ end
+ end
+ end
+end
diff --git a/spec/features/notes_on_merge_requests_spec.rb b/spec/features/notes_on_merge_requests_spec.rb
index 2835cf44494..de52460f15f 100644
--- a/spec/features/notes_on_merge_requests_spec.rb
+++ b/spec/features/notes_on_merge_requests_spec.rb
@@ -8,12 +8,12 @@ describe 'Comments', feature: true do
it 'excludes award_emoji from comment count' do
merge_request = create(:merge_request)
project = merge_request.source_project
- create(:upvote_note, noteable: merge_request, project: project)
+ create(:award_emoji, awardable: merge_request)
login_as :admin
visit namespace_project_merge_requests_path(project.namespace, project)
- expect(merge_request.mr_and_commit_notes.count).to eq 1
+ expect(merge_request.mr_and_commit_notes.count).to eq 0
expect(page.all('.merge-request-no-comments').first.text).to eq "0"
end
end
@@ -150,11 +150,11 @@ describe 'Comments', feature: true do
describe 'comment info' do
it 'excludes award_emoji from comment count' do
- create(:upvote_note, noteable: merge_request, project: project)
+ create(:award_emoji, awardable: merge_request)
visit namespace_project_merge_request_path(project.namespace, project, merge_request)
- expect(merge_request.mr_and_commit_notes.count).to eq 2
+ expect(merge_request.mr_and_commit_notes.count).to eq 1
expect(find('.notes-tab span.badge').text).to eq "1"
end
end