Commit 9d4d40deed5ea649511f3aadd45b3da68c7c3217

Authored by Robert Speicher
1 parent 14daf2e2

Move IssueCommonality and Upvote specs out of models and into their own specs

spec/models/issue_spec.rb
... ... @@ -19,6 +19,11 @@ describe Issue do
19 19 it { Issue.should respond_to :opened }
20 20 end
21 21  
  22 + describe 'modules' do
  23 + it { should include_module(IssueCommonality) }
  24 + it { should include_module(Upvote) }
  25 + end
  26 +
22 27 subject { Factory.create(:issue) }
23 28  
24 29 describe '#is_being_reassigned?' do
... ... @@ -61,40 +66,6 @@ describe Issue do
61 66 subject.is_being_reopened?.should be_false
62 67 end
63 68 end
64   -
65   - describe "plus 1" do
66   - subject { Factory.create(:issue) }
67   -
68   - it "with no notes has a 0/0 score" do
69   - subject.upvotes.should == 0
70   - end
71   -
72   - it "should recognize non-+1 notes" do
73   - subject.notes << Factory(:note, note: "No +1 here")
74   - subject.should have(1).note
75   - subject.notes.first.upvote?.should be_false
76   - subject.upvotes.should == 0
77   - end
78   -
79   - it "should recognize a single +1 note" do
80   - subject.notes << Factory(:note, note: "+1 This is awesome")
81   - subject.upvotes.should == 1
82   - end
83   -
84   - it "should recognize a multiple +1 notes" do
85   - subject.notes << Factory(:note, note: "+1 This is awesome")
86   - subject.notes << Factory(:note, note: "+1 I want this")
87   - subject.upvotes.should == 2
88   - end
89   - end
90   -
91   - describe ".search" do
92   - let!(:issue) { Factory.create(:issue, title: "Searchable issue") }
93   -
94   - it "matches by title" do
95   - Issue.search('able').all.should == [issue]
96   - end
97   - end
98 69 end
99 70 # == Schema Information
100 71 #
... ...
spec/models/merge_request_spec.rb
... ... @@ -20,38 +20,9 @@ describe MergeRequest do
20 20 it { MergeRequest.should respond_to :opened }
21 21 end
22 22  
23   - describe "plus 1" do
24   - subject { Factory.create(:merge_request) }
25   -
26   - it "with no notes has a 0/0 score" do
27   - subject.upvotes.should == 0
28   - end
29   -
30   - it "should recognize non-+1 notes" do
31   - subject.notes << Factory(:note, note: "No +1 here")
32   - subject.should have(1).note
33   - subject.notes.first.upvote?.should be_false
34   - subject.upvotes.should == 0
35   - end
36   -
37   - it "should recognize a single +1 note" do
38   - subject.notes << Factory(:note, note: "+1 This is awesome")
39   - subject.upvotes.should == 1
40   - end
41   -
42   - it "should recognize a multiple +1 notes" do
43   - subject.notes << Factory(:note, note: "+1 This is awesome")
44   - subject.notes << Factory(:note, note: "+1 I want this")
45   - subject.upvotes.should == 2
46   - end
47   - end
48   -
49   - describe ".search" do
50   - let!(:issue) { Factory.create(:issue, title: "Searchable issue") }
51   -
52   - it "matches by title" do
53   - Issue.search('able').all.should == [issue]
54   - end
  23 + describe 'modules' do
  24 + it { should include_module(IssueCommonality) }
  25 + it { should include_module(Upvote) }
55 26 end
56 27 end
57 28 # == Schema Information
... ...
spec/roles/issue_commonality_spec.rb 0 → 100644
... ... @@ -0,0 +1,69 @@
  1 +require 'spec_helper'
  2 +
  3 +describe Issue, "IssueCommonality" do
  4 + let(:issue) { create(:issue) }
  5 +
  6 + describe "Associations" do
  7 + it { should belong_to(:project) }
  8 + it { should belong_to(:author) }
  9 + it { should belong_to(:assignee) }
  10 + it { should have_many(:notes).dependent(:destroy) }
  11 + end
  12 +
  13 + describe "Validation" do
  14 + it { should validate_presence_of(:project_id) }
  15 + it { should validate_presence_of(:author_id) }
  16 + it { should validate_presence_of(:title) }
  17 + it { should ensure_length_of(:title).is_at_least(0).is_at_most(255) }
  18 + end
  19 +
  20 + describe "Scope" do
  21 + it { described_class.should respond_to(:opened) }
  22 + it { described_class.should respond_to(:closed) }
  23 + it { described_class.should respond_to(:assigned) }
  24 + end
  25 +
  26 + it "has an :author_id_of_changes accessor" do
  27 + issue.should respond_to(:author_id_of_changes)
  28 + issue.should respond_to(:author_id_of_changes=)
  29 + end
  30 +
  31 + describe ".search" do
  32 + let!(:searchable_issue) { create(:issue, title: "Searchable issue") }
  33 +
  34 + it "matches by title" do
  35 + described_class.search('able').all.should == [searchable_issue]
  36 + end
  37 + end
  38 +
  39 + describe "#today?" do
  40 + it "returns true when created today" do
  41 + # Avoid timezone differences and just return exactly what we want
  42 + Date.stub(:today).and_return(issue.created_at.to_date)
  43 + issue.today?.should be_true
  44 + end
  45 +
  46 + it "returns false when not created today" do
  47 + Date.stub(:today).and_return(Date.yesterday)
  48 + issue.today?.should be_false
  49 + end
  50 + end
  51 +
  52 + describe "#new?" do
  53 + it "returns true when created today and record hasn't been updated" do
  54 + issue.stub(:today?).and_return(true)
  55 + issue.new?.should be_true
  56 + end
  57 +
  58 + it "returns false when not created today" do
  59 + issue.stub(:today?).and_return(false)
  60 + issue.new?.should be_false
  61 + end
  62 +
  63 + it "returns false when record has been updated" do
  64 + issue.stub(:today?).and_return(true)
  65 + issue.touch
  66 + issue.new?.should be_false
  67 + end
  68 + end
  69 +end
... ...
spec/roles/upvote_spec.rb 0 → 100644
... ... @@ -0,0 +1,27 @@
  1 +require 'spec_helper'
  2 +
  3 +describe Issue, "Upvote" do
  4 + let(:issue) { create(:issue) }
  5 +
  6 + it "with no notes has a 0/0 score" do
  7 + issue.upvotes.should == 0
  8 + end
  9 +
  10 + it "should recognize non-+1 notes" do
  11 + issue.notes << create(:note, note: "No +1 here")
  12 + issue.should have(1).note
  13 + issue.notes.first.upvote?.should be_false
  14 + issue.upvotes.should == 0
  15 + end
  16 +
  17 + it "should recognize a single +1 note" do
  18 + issue.notes << create(:note, note: "+1 This is awesome")
  19 + issue.upvotes.should == 1
  20 + end
  21 +
  22 + it "should recognize multiple +1 notes" do
  23 + issue.notes << create(:note, note: "+1 This is awesome")
  24 + issue.notes << create(:note, note: "+1 I want this")
  25 + issue.upvotes.should == 2
  26 + end
  27 +end
... ...