issue_spec.rb 2.72 KB
Newer Older
gitlabhq's avatar
gitlabhq committed
1 2 3 4 5 6 7
require 'spec_helper'

describe Issue do
  describe "Associations" do
    it { should belong_to(:project) }
    it { should belong_to(:author) }
    it { should belong_to(:assignee) }
8
    it { should belong_to(:milestone) }
gitlabhq's avatar
gitlabhq committed
9 10 11 12 13 14 15 16 17
  end

  describe "Validation" do
    it { should validate_presence_of(:title) }
    it { should validate_presence_of(:author_id) }
    it { should validate_presence_of(:project_id) }
    it { should validate_presence_of(:assignee_id) }
  end

Nihad Abbasov's avatar
Nihad Abbasov committed
18
  describe "Scope" do
gitlabhq's avatar
gitlabhq committed
19 20 21 22
    it { Issue.should respond_to :closed }
    it { Issue.should respond_to :opened }
  end

23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
  subject { Factory.create(:issue,
                           :author => Factory(:user),
                           :assignee => Factory(:user),
                           :project => Factory.create(:project)) }
  it { should be_valid }

  describe '#is_being_reassigned?' do
    it 'returns true if the issue assignee has changed' do
      subject.assignee = Factory(:user)
      subject.is_being_reassigned?.should be_true
    end
    it 'returns false if the issue assignee has not changed' do
      subject.is_being_reassigned?.should be_false
    end
  end
gitlabhq's avatar
gitlabhq committed
38

39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
  describe "plus 1" do
    let(:project) { Factory(:project) }
    subject {
      Factory.create(:issue,
                     :author => Factory(:user),
                     :assignee => Factory(:user),
                     :project => project)
    }

    it "with no notes has a 0/0 score" do
      subject.upvotes.should == 0
    end

    it "should recognize non-+1 notes" do
      subject.notes << Factory(:note, note: "No +1 here", project: Factory(:project, path: 'plusone', code: 'plusone'))
      subject.should have(1).note
      subject.notes.first.upvote?.should be_false
      subject.upvotes.should == 0
    end

    it "should recognize a single +1 note" do
      subject.notes << Factory(:note, note: "+1 This is awesome", project: Factory(:project, path: 'plusone', code: 'plusone'))
      subject.upvotes.should == 1
    end

    it "should recognize a multiple +1 notes" do
      subject.notes << Factory(:note, note: "+1 This is awesome", project: Factory(:project, path: 'plusone', code: 'plusone'))
      subject.notes << Factory(:note, note: "+1 I want this", project: Factory(:project, path: 'plustwo', code: 'plustwo'))
      subject.upvotes.should == 2
    end
  end
gitlabhq's avatar
gitlabhq committed
70 71 72 73 74 75 76 77 78 79 80 81 82
end
# == Schema Information
#
# Table name: issues
#
#  id          :integer         not null, primary key
#  title       :string(255)
#  assignee_id :integer
#  author_id   :integer
#  project_id  :integer
#  created_at  :datetime
#  updated_at  :datetime
#  closed      :boolean         default(FALSE), not null
gitlabhq's avatar
gitlabhq committed
83
#  position    :integer         default(0)
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
84
#  critical    :boolean         default(FALSE), not null
Valery Sizov's avatar
Valery Sizov committed
85
#  branch_name :string(255)
gitlabhq's avatar
gitlabhq committed
86 87
#