issue_spec.rb 2.3 KB
Newer Older
D
Dmitriy Zaporozhets 已提交
1 2 3 4
# == Schema Information
#
# Table name: issues
#
D
Dmitriy Zaporozhets 已提交
5
#  id           :integer          not null, primary key
D
Dmitriy Zaporozhets 已提交
6 7 8 9
#  title        :string(255)
#  assignee_id  :integer
#  author_id    :integer
#  project_id   :integer
D
Dmitriy Zaporozhets 已提交
10 11 12 13
#  created_at   :datetime         not null
#  updated_at   :datetime         not null
#  closed       :boolean          default(FALSE), not null
#  position     :integer          default(0)
D
Dmitriy Zaporozhets 已提交
14 15 16 17 18
#  branch_name  :string(255)
#  description  :text
#  milestone_id :integer
#

G
gitlabhq 已提交
19 20 21 22
require 'spec_helper'

describe Issue do
  describe "Associations" do
23
    it { should belong_to(:milestone) }
G
gitlabhq 已提交
24 25
  end

26 27 28 29 30
  describe "Mass assignment" do
    it { should_not allow_mass_assignment_of(:author_id) }
    it { should_not allow_mass_assignment_of(:project_id) }
  end

G
gitlabhq 已提交
31
  describe "Validation" do
32
    it { should ensure_length_of(:description).is_within(0..10000) }
G
gitlabhq 已提交
33 34
  end

35
  describe 'modules' do
36
    it { should include_module(Issuable) }
37 38
  end

39
  subject { create(:issue) }
40 41 42

  describe '#is_being_reassigned?' do
    it 'returns true if the issue assignee has changed' do
43
      subject.assignee = create(:user)
44 45 46 47 48 49
      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
G
gitlabhq 已提交
50

51 52 53 54 55 56
  describe '#is_being_closed?' do
    it 'returns true if the closed attribute has changed and is now true' do
      subject.closed = true
      subject.is_being_closed?.should be_true
    end
    it 'returns false if the closed attribute has changed and is now false' do
57
      issue = create(:closed_issue)
58 59 60 61 62 63 64 65
      issue.closed = false
      issue.is_being_closed?.should be_false
    end
    it 'returns false if the closed attribute has not changed' do
      subject.is_being_closed?.should be_false
    end
  end

66 67 68

  describe '#is_being_reopened?' do
    it 'returns true if the closed attribute has changed and is now false' do
69
      issue = create(:closed_issue)
70 71 72 73 74 75 76 77 78 79 80
      issue.closed = false
      issue.is_being_reopened?.should be_true
    end
    it 'returns false if the closed attribute has changed and is now true' do
      subject.closed = true
      subject.is_being_reopened?.should be_false
    end
    it 'returns false if the closed attribute has not changed' do
      subject.is_being_reopened?.should be_false
    end
  end
G
gitlabhq 已提交
81
end