diff options
Diffstat (limited to 'spec/features')
| -rw-r--r-- | spec/features/issues/award_emoji_spec.rb | 2 | ||||
| -rw-r--r-- | spec/features/issues/award_spec.rb | 72 | ||||
| -rw-r--r-- | spec/features/issues_spec.rb | 2 | ||||
| -rw-r--r-- | spec/features/merge_requests/award_spec.rb | 72 | ||||
| -rw-r--r-- | spec/features/notes_on_merge_requests_spec.rb | 8 |
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 |
