2012-10-09 10:14:17 +02:00
|
|
|
# == 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 not null
|
|
|
|
# updated_at :datetime not null
|
|
|
|
# closed :boolean default(FALSE), not null
|
|
|
|
# position :integer default(0)
|
|
|
|
# branch_name :string(255)
|
|
|
|
# description :text
|
|
|
|
# milestone_id :integer
|
|
|
|
#
|
|
|
|
|
2011-10-08 23:36:38 +02:00
|
|
|
require 'spec_helper'
|
|
|
|
|
|
|
|
describe Issue do
|
|
|
|
describe "Associations" do
|
2012-04-09 00:01:42 +02:00
|
|
|
it { should belong_to(:milestone) }
|
2011-10-08 23:36:38 +02:00
|
|
|
end
|
|
|
|
|
2012-09-26 20:17:17 +02:00
|
|
|
describe "Mass assignment" do
|
|
|
|
it { should_not allow_mass_assignment_of(:author_id) }
|
|
|
|
it { should_not allow_mass_assignment_of(:project_id) }
|
|
|
|
end
|
|
|
|
|
2011-10-08 23:36:38 +02:00
|
|
|
describe "Validation" do
|
2012-08-29 17:36:02 +02:00
|
|
|
it { should ensure_length_of(:description).is_within(0..2000) }
|
2011-10-08 23:36:38 +02:00
|
|
|
end
|
|
|
|
|
2012-08-29 07:52:19 +02:00
|
|
|
describe 'modules' do
|
|
|
|
it { should include_module(IssueCommonality) }
|
2012-09-08 02:23:49 +02:00
|
|
|
it { should include_module(Votes) }
|
2012-08-29 07:52:19 +02:00
|
|
|
end
|
|
|
|
|
2012-11-06 04:31:55 +01:00
|
|
|
subject { create(:issue) }
|
2012-05-20 20:15:13 +02:00
|
|
|
|
|
|
|
describe '#is_being_reassigned?' do
|
|
|
|
it 'returns true if the issue assignee has changed' do
|
2012-11-06 04:31:55 +01:00
|
|
|
subject.assignee = create(:user)
|
2012-05-20 20:15:13 +02:00
|
|
|
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
|
2011-10-08 23:36:38 +02:00
|
|
|
|
2012-05-20 21:06:13 +02:00
|
|
|
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
|
2012-11-06 04:31:55 +01:00
|
|
|
issue = create(:closed_issue)
|
2012-05-20 21:06:13 +02:00
|
|
|
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
|
|
|
|
|
2012-05-21 19:30:53 +02:00
|
|
|
|
|
|
|
describe '#is_being_reopened?' do
|
|
|
|
it 'returns true if the closed attribute has changed and is now false' do
|
2012-11-06 04:31:55 +01:00
|
|
|
issue = create(:closed_issue)
|
2012-05-21 19:30:53 +02:00
|
|
|
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
|
2011-10-08 23:36:38 +02:00
|
|
|
end
|