summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorValery Sizov <vsv2711@gmail.com>2015-11-19 13:20:09 +0200
committerRubén Dávila <ruben@gitlab.com>2015-11-19 17:58:53 -0500
commitc91cd0573bb8f4a2e59ffcd5b6c2854d394204bd (patch)
tree5ea6ea1d5118c3d061a082fbe7771e984c0a5f95
parent91f58872f87f52fe0e072494ceb2b20e427464f4 (diff)
downloadgitlab-ce-c91cd0573bb8f4a2e59ffcd5b6c2854d394204bd.tar.gz
added spinach tests
-rw-r--r--app/assets/javascripts/awards_handler.coffee4
-rw-r--r--app/helpers/issues_helper.rb6
-rw-r--r--app/models/note.rb1
-rw-r--r--app/views/votes/_votes_block.html.haml38
-rw-r--r--features/project/issues/award_emoji.feature14
-rw-r--r--features/steps/project/issues/award_emoji.rb41
-rw-r--r--spec/models/note_spec.rb75
7 files changed, 83 insertions, 96 deletions
diff --git a/app/assets/javascripts/awards_handler.coffee b/app/assets/javascripts/awards_handler.coffee
index cac9c10332a..f5b9adbe9e2 100644
--- a/app/assets/javascripts/awards_handler.coffee
+++ b/app/assets/javascripts/awards_handler.coffee
@@ -75,7 +75,7 @@ class @AwardsHandler
if custom_path
$(".awards-menu li").first().html().replace(/emoji\/.*\.png/, custom_path)
else
- $("li[data-emoji='" + emoji + "'").html()
+ $("li[data-emoji='" + emoji + "']").html()
postEmoji: (emoji, callback) ->
@@ -88,4 +88,4 @@ class @AwardsHandler
callback.call()
findEmojiIcon: (emoji) ->
- $(".icon[data-emoji='" + emoji + "'") \ No newline at end of file
+ $(".icon[data-emoji='" + emoji + "']") \ No newline at end of file
diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb
index 3a238824c0d..2c791aa5682 100644
--- a/app/helpers/issues_helper.rb
+++ b/app/helpers/issues_helper.rb
@@ -105,7 +105,11 @@ module IssuesHelper
end
def note_active_class(notes, current_user)
- notes.pluck(:author_id).include?(current_user.id) ? "active" : ""
+ if current_user && notes.pluck(:author_id).include?(current_user.id)
+ "active"
+ else
+ ""
+ end
end
# Required for Gitlab::Markdown::IssueReferenceFilter
diff --git a/app/models/note.rb b/app/models/note.rb
index d53f568a671..39645f8f1ad 100644
--- a/app/models/note.rb
+++ b/app/models/note.rb
@@ -46,6 +46,7 @@ class Note < ActiveRecord::Base
validates :noteable_id, presence: true, if: ->(n) { n.noteable_type.present? && n.noteable_type != 'Commit' }
validates :commit_id, presence: true, if: ->(n) { n.noteable_type == 'Commit' }
+ validates :author, presence: true, if: ->(n) { n.is_award }
mount_uploader :attachment, AttachmentUploader
diff --git a/app/views/votes/_votes_block.html.haml b/app/views/votes/_votes_block.html.haml
index f32e5193d1a..04e3b5a3814 100644
--- a/app/views/votes/_votes_block.html.haml
+++ b/app/views/votes/_votes_block.html.haml
@@ -6,25 +6,27 @@
.counter
= note.last.count
- .dropdown.awards-controls
- %a.add-award{"data-toggle" => "dropdown", "data-target" => "#", "href" => "#"}
- = icon('plus-square-o')
- %ul.dropdown-menu.awards-menu
- - emoji_list.each do |emoji|
- %li{"data-emoji" => "#{emoji}"}= image_tag url_to_emoji(emoji), height: "20px", width: "20px"
+ - if current_user
+ .dropdown.awards-controls
+ %a.add-award{"data-toggle" => "dropdown", "data-target" => "#", "href" => "#"}
+ = icon('plus-square-o')
+ %ul.dropdown-menu.awards-menu
+ - emoji_list.each do |emoji|
+ %li{"data-emoji" => "#{emoji}"}= image_tag url_to_emoji(emoji), height: "20px", width: "20px"
-:coffeescript
- post_emoji_url = "#{award_toggle_namespace_project_notes_path(@project.namespace, @project)}"
- noteable_type = "#{votable.class}"
- noteable_id = "#{votable.id}"
- window.awards_handler = new AwardsHandler(post_emoji_url, noteable_type, noteable_id)
+- if current_user
+ :coffeescript
+ post_emoji_url = "#{award_toggle_namespace_project_notes_path(@project.namespace, @project)}"
+ noteable_type = "#{votable.class}"
+ noteable_id = "#{votable.id}"
+ window.awards_handler = new AwardsHandler(post_emoji_url, noteable_type, noteable_id)
- $(".awards-menu li").click (e)->
- emoji = $(this).data("emoji")
- awards_handler.addAward(emoji)
+ $(".awards-menu li").click (e)->
+ emoji = $(this).data("emoji")
+ awards_handler.addAward(emoji)
- $(".awards").on "click", ".award", (e)->
- emoji = $(this).find(".icon").data("emoji")
- awards_handler.addAward(emoji)
+ $(".awards").on "click", ".award", (e)->
+ emoji = $(this).find(".icon").data("emoji")
+ awards_handler.addAward(emoji)
- $(".award").tooltip()
+ $(".award").tooltip()
diff --git a/features/project/issues/award_emoji.feature b/features/project/issues/award_emoji.feature
new file mode 100644
index 00000000000..a9bc8ffb9bb
--- /dev/null
+++ b/features/project/issues/award_emoji.feature
@@ -0,0 +1,14 @@
+Feature: Award Emoji
+ Background:
+ Given I sign in as a user
+ And I own project "Shop"
+ And project "Shop" has issue "Bugfix"
+ And I visit "Bugfix" issue page
+
+ @javascript
+ Scenario: I add and remove award in the issue
+ Given I click to emoji-picker
+ And I click to emoji in the picker
+ Then I have award added
+ And I can remove it by clicking to icon
+ \ No newline at end of file
diff --git a/features/steps/project/issues/award_emoji.rb b/features/steps/project/issues/award_emoji.rb
new file mode 100644
index 00000000000..8f7a45dec0e
--- /dev/null
+++ b/features/steps/project/issues/award_emoji.rb
@@ -0,0 +1,41 @@
+class Spinach::Features::AwardEmoji < Spinach::FeatureSteps
+ include SharedAuthentication
+ include SharedProject
+ include SharedPaths
+ include Select2Helper
+
+ step 'I visit "Bugfix" issue page' do
+ visit namespace_project_issue_path(@project.namespace, @project, @issue)
+ end
+
+ step 'I click to emoji-picker' do
+ page.within ".awards-controls" do
+ page.find(".add-award").click
+ end
+ end
+
+ step 'I click to emoji in the picker' do
+ page.within ".awards-menu" do
+ page.first("img").click
+ end
+ end
+
+ step 'I can remove it by clicking to icon' do
+ page.within ".awards" do
+ page.first(".award").click
+ expect(page).to_not have_selector ".award"
+ end
+ end
+
+ step 'I have award added' do
+ page.within ".awards" do
+ expect(page).to have_selector ".award"
+ expect(page.find(".award .counter")).to have_content "1"
+ end
+ end
+
+ step 'project "Shop" has issue "Bugfix"' do
+ @project = Project.find_by(name: "Shop")
+ @issue = create(:issue, title: "Bugfix", project: project)
+ end
+end
diff --git a/spec/models/note_spec.rb b/spec/models/note_spec.rb
index 75564839dcf..6e37dae07d0 100644
--- a/spec/models/note_spec.rb
+++ b/spec/models/note_spec.rb
@@ -32,77 +32,6 @@ describe Note do
it { is_expected.to validate_presence_of(:project) }
end
- describe '#votable?' do
- it 'is true for issue notes' do
- note = build(:note_on_issue)
- expect(note).to be_votable
- end
-
- it 'is true for merge request notes' do
- note = build(:note_on_merge_request)
- expect(note).to be_votable
- end
-
- it 'is false for merge request diff notes' do
- note = build(:note_on_merge_request_diff)
- expect(note).not_to be_votable
- end
-
- it 'is false for commit notes' do
- note = build(:note_on_commit)
- expect(note).not_to be_votable
- end
-
- it 'is false for commit diff notes' do
- note = build(:note_on_commit_diff)
- expect(note).not_to be_votable
- end
- end
-
- describe 'voting score' do
- it 'recognizes a neutral note' do
- note = build(:votable_note, note: 'This is not a +1 note')
- expect(note).not_to be_upvote
- expect(note).not_to be_downvote
- end
-
- it 'recognizes a neutral emoji note' do
- note = build(:votable_note, note: "I would :+1: this, but I don't want to")
- expect(note).not_to be_upvote
- expect(note).not_to be_downvote
- end
-
- it 'recognizes a +1 note' do
- note = build(:votable_note, note: '+1 for this')
- expect(note).to be_upvote
- end
-
- it 'recognizes a +1 emoji as a vote' do
- note = build(:votable_note, note: ':+1: for this')
- expect(note).to be_upvote
- end
-
- it 'recognizes a thumbsup emoji as a vote' do
- note = build(:votable_note, note: ':thumbsup: for this')
- expect(note).to be_upvote
- end
-
- it 'recognizes a -1 note' do
- note = build(:votable_note, note: '-1 for this')
- expect(note).to be_downvote
- end
-
- it 'recognizes a -1 emoji as a vote' do
- note = build(:votable_note, note: ':-1: for this')
- expect(note).to be_downvote
- end
-
- it 'recognizes a thumbsdown emoji as a vote' do
- note = build(:votable_note, note: ':thumbsdown: for this')
- expect(note).to be_downvote
- end
- end
-
describe "Commit notes" do
let!(:note) { create(:note_on_commit, note: "+1 from me") }
let!(:commit) { note.noteable }
@@ -139,10 +68,6 @@ describe Note do
it "should be recognized by #for_commit_diff_line?" do
expect(note).to be_for_commit_diff_line
end
-
- it "should not be votable" do
- expect(note).not_to be_votable
- end
end
describe 'authorization' do