From fc57d36018a23c15da013bebf42d51f7a8e9a955 Mon Sep 17 00:00:00 2001
From: Grzegorz Bizon <grzesiek.bizon@gmail.com>
Date: Wed, 4 May 2016 11:17:16 +0200
Subject: [PATCH] Minor changes in note validation specs

---
 spec/factories/notes.rb               | 22 ++++++++++++----------
 spec/models/concerns/issuable_spec.rb |  6 ++++--
 spec/models/merge_request_spec.rb     |  2 --
 spec/models/note_spec.rb              | 11 ++++++-----
 4 files changed, 22 insertions(+), 19 deletions(-)

diff --git a/spec/factories/notes.rb b/spec/factories/notes.rb
index 2940ac342a2ac..6801438165dce 100644
--- a/spec/factories/notes.rb
+++ b/spec/factories/notes.rb
@@ -9,9 +9,9 @@
     author
     noteable { create(:issue, project: project) }
 
-    factory :note_on_issue,              traits: [:on_issue], aliases: [:votable_note]
     factory :note_on_commit,             traits: [:on_commit]
     factory :note_on_commit_diff,        traits: [:on_commit, :on_diff], class: LegacyDiffNote
+    factory :note_on_issue,              traits: [:on_issue], aliases: [:votable_note]
     factory :note_on_merge_request,      traits: [:on_merge_request]
     factory :note_on_merge_request_diff, traits: [:on_merge_request, :on_diff], class: LegacyDiffNote
     factory :note_on_project_snippet,    traits: [:on_project_snippet]
@@ -19,14 +19,20 @@
     factory :downvote_note,              traits: [:award, :downvote]
     factory :upvote_note,                traits: [:award, :upvote]
 
-    trait :on_issue do
-      noteable_type 'Issue'
-    end
-
     trait :on_commit do
       noteable nil
+      noteable_type 'Commit'
+      noteable_id nil
       commit_id RepoHelpers.sample_commit.id
-      noteable_type "Commit"
+    end
+
+    trait :on_diff do
+      line_code "0_184_184"
+    end
+
+    trait :on_issue do
+      noteable_type 'Issue'
+      noteable { create(:issue, project: project) }
     end
 
     trait :on_merge_request do
@@ -42,10 +48,6 @@
       noteable { create(:snippet, project: project) }
     end
 
-    trait :on_diff do
-      line_code "0_184_184"
-    end
-
     trait :system do
       system true
     end
diff --git a/spec/models/concerns/issuable_spec.rb b/spec/models/concerns/issuable_spec.rb
index 331ebaf4ac45f..70bbe63326930 100644
--- a/spec/models/concerns/issuable_spec.rb
+++ b/spec/models/concerns/issuable_spec.rb
@@ -228,9 +228,11 @@
   end
 
   describe "votes" do
+    let(:project) { issue.project }
+
     before do
-      issue.notes.awards.create!(note: "thumbsup", author: user, project: issue.project)
-      issue.notes.awards.create!(note: "thumbsdown", author: user, project: issue.project)
+      issue.notes.awards.create!(note: "thumbsup", author: user, project: project)
+      issue.notes.awards.create!(note: "thumbsdown", author: user, project: project)
     end
 
     it "returns correct values" do
diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb
index 20e383e03b4b0..4b67c2facf32a 100644
--- a/spec/models/merge_request_spec.rb
+++ b/spec/models/merge_request_spec.rb
@@ -120,7 +120,6 @@
     before do
       allow(merge_request).to receive(:commits) { [merge_request.source_project.repository.commit] }
       create(:note_on_commit, commit_id: merge_request.commits.first.id,
-                              noteable_type: 'Commit',
                               project: merge_request.project)
       create(:note, noteable: merge_request, project: merge_request.project)
     end
@@ -132,7 +131,6 @@
 
     it "should include notes for commits from target project as well" do
       create(:note_on_commit, commit_id: merge_request.commits.first.id,
-                              noteable_type: 'Commit',
                               project: merge_request.target_project)
 
       expect(merge_request.commits).not_to be_empty
diff --git a/spec/models/note_spec.rb b/spec/models/note_spec.rb
index 20d40c47aa6e3..e1b81b23d4b56 100644
--- a/spec/models/note_spec.rb
+++ b/spec/models/note_spec.rb
@@ -13,29 +13,30 @@
     it { is_expected.to validate_presence_of(:note) }
     it { is_expected.to validate_presence_of(:project) }
 
-    context 'when note is comment on commit' do
+    context 'when note is on commit' do
       before { allow(subject).to receive(:for_commit?).and_return(true) }
 
       it { is_expected.to validate_presence_of(:commit_id) }
       it { is_expected.to_not validate_presence_of(:noteable_id) }
     end
 
-    context 'when note is not comment on commit' do
+    context 'when note is not on commit' do
       before { allow(subject).to receive(:for_commit?).and_return(false) }
 
       it { is_expected.to_not validate_presence_of(:commit_id) }
       it { is_expected.to validate_presence_of(:noteable_id) }
     end
 
-    context 'when noteable and note project is different' do
+    context 'when noteable and note project differ' do
       subject do
-        build(:note, noteable: create(:issue), project: create(:project))
+        build(:note, noteable: build_stubbed(:issue),
+                     project: build_stubbed(:project))
       end
 
       it { is_expected.to be_invalid }
     end
 
-    context 'when noteable and note project is the same one' do
+    context 'when noteable and note project are the same' do
       subject { create(:note) }
       it { is_expected.to be_valid }
     end
-- 
GitLab