summaryrefslogtreecommitdiff
path: root/spec/features/issues/award_spec.rb
diff options
context:
space:
mode:
authorPhil Hughes <me@iamphill.com>2016-04-01 17:25:28 +0100
committerFatih Acet <acetfatih@gmail.com>2016-05-19 14:13:05 -0500
commit44876032a2d6511060ac484259355b328b89ac0a (patch)
treedc12ef551490fabd2cb6c42b8fe1fee4f20a7a85 /spec/features/issues/award_spec.rb
parent797acde04674ad58a599beea217de814d7dfe31d (diff)
downloadgitlab-ce-44876032a2d6511060ac484259355b328b89ac0a.tar.gz
Added tests for issues
Diffstat (limited to 'spec/features/issues/award_spec.rb')
-rw-r--r--spec/features/issues/award_spec.rb140
1 files changed, 140 insertions, 0 deletions
diff --git a/spec/features/issues/award_spec.rb b/spec/features/issues/award_spec.rb
new file mode 100644
index 00000000000..46e1ed5d8cd
--- /dev/null
+++ b/spec/features/issues/award_spec.rb
@@ -0,0 +1,140 @@
+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 show award menu button in notes' do
+ page.within('.note') do
+ expect(page).to have_selector('.js-award-action-btn')
+ end
+ end
+
+ it 'should not show award bar on note if no awards given' do
+ page.within('.note') do
+ expect(find('.js-awards-block', visible: false)).not_to be_visible
+ end
+ end
+
+ it 'should be able to show award menu when clicking add award button in note' do
+ show_note_award_menu
+ end
+
+ it 'should only have one menu on the page' do
+ first('.js-add-award').click
+ expect(page).to have_selector('.emoji-menu')
+
+ page.within('.note') do
+ find('.js-add-award').click
+ expect(page).to have_selector('.emoji-menu', count: 1)
+ end
+ end
+
+ it 'should add award to note' do
+ show_note_award_menu
+ award_on_note
+
+ page.within('.note') do
+ expect(find('.js-awards-block')).to be_visible
+ expect(find('.js-awards-block')).to have_selector('.active')
+ end
+ end
+
+ it 'should remove award from note' do
+ show_note_award_menu
+ award_on_note
+
+ page.within('.note') do
+ expect(find('.js-awards-block')).to be_visible
+ expect(find('.js-awards-block')).to have_selector('.active')
+ end
+
+ remove_award_on_note
+ sleep 0.5
+
+ page.within('.note') do
+ expect(find('.js-awards-block', visible: false)).not_to be_visible
+ expect(find('.js-awards-block', visible: false)).not_to have_selector('.active')
+ end
+ end
+
+ it 'should not hide award bar on notes with more than 1 award' do
+ show_note_award_menu
+ award_on_note
+
+ show_note_award_menu
+ award_on_note(2)
+
+ page.within('.note') do
+ expect(find('.js-awards-block')).to be_visible
+ expect(find('.js-awards-block')).to have_selector('.active')
+ end
+
+ remove_award_on_note
+
+ page.within('.note') do
+ expect(find('.js-awards-block')).to be_visible
+ end
+ 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
+ expect(page).to have_selector('.emoji-menu')
+ end
+ end
+
+ def award_on_note(index = 1)
+ page.within('.note') do
+ page.within('.emoji-menu') do
+ buttons = all('.js-emoji-btn')
+ buttons[index].click
+ end
+ 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