@@ -548,11 +548,11 class Issue < ActiveRecord::Base | |||||
548 | end |
|
548 | end | |
549 |
|
549 | |||
550 | def validate_issue |
|
550 | def validate_issue | |
551 | if due_date && start_date && due_date < start_date |
|
551 | if due_date && start_date && (start_date_changed? || due_date_changed?) && due_date < start_date | |
552 | errors.add :due_date, :greater_than_start_date |
|
552 | errors.add :due_date, :greater_than_start_date | |
553 | end |
|
553 | end | |
554 |
|
554 | |||
555 | if start_date && soonest_start && start_date < soonest_start |
|
555 | if start_date && start_date_changed? && soonest_start && start_date < soonest_start | |
556 | errors.add :start_date, :earlier_than_minimum_start_date, :date => format_date(soonest_start) |
|
556 | errors.add :start_date, :earlier_than_minimum_start_date, :date => format_date(soonest_start) | |
557 | end |
|
557 | end | |
558 |
|
558 |
@@ -65,13 +65,20 module ObjectHelpers | |||||
65 | role |
|
65 | role | |
66 | end |
|
66 | end | |
67 |
|
67 | |||
68 | def Issue.generate!(attributes={}) |
|
68 | # Generates an unsaved Issue | |
|
69 | def Issue.generate(attributes={}) | |||
69 | issue = Issue.new(attributes) |
|
70 | issue = Issue.new(attributes) | |
70 | issue.project ||= Project.find(1) |
|
71 | issue.project ||= Project.find(1) | |
71 | issue.tracker ||= issue.project.trackers.first |
|
72 | issue.tracker ||= issue.project.trackers.first | |
72 | issue.subject = 'Generated' if issue.subject.blank? |
|
73 | issue.subject = 'Generated' if issue.subject.blank? | |
73 | issue.author ||= User.find(2) |
|
74 | issue.author ||= User.find(2) | |
74 | yield issue if block_given? |
|
75 | yield issue if block_given? | |
|
76 | issue | |||
|
77 | end | |||
|
78 | ||||
|
79 | # Generates a saved Issue | |||
|
80 | def Issue.generate!(attributes={}, &block) | |||
|
81 | issue = Issue.generate(attributes, &block) | |||
75 | issue.save! |
|
82 | issue.save! | |
76 | issue |
|
83 | issue | |
77 | end |
|
84 | end |
@@ -92,6 +92,27 class IssueTest < ActiveSupport::TestCase | |||||
92 | assert_include 'Due date must be greater than start date', issue.errors.full_messages |
|
92 | assert_include 'Due date must be greater than start date', issue.errors.full_messages | |
93 | end |
|
93 | end | |
94 |
|
94 | |||
|
95 | def test_start_date_lesser_than_soonest_start_should_not_validate_on_create | |||
|
96 | issue = Issue.generate(:start_date => '2013-06-04') | |||
|
97 | issue.stubs(:soonest_start).returns(Date.parse('2013-06-10')) | |||
|
98 | assert !issue.valid? | |||
|
99 | assert_include "Start date cannot be earlier than 06/10/2013 because of preceding issues", issue.errors.full_messages | |||
|
100 | end | |||
|
101 | ||||
|
102 | def test_start_date_lesser_than_soonest_start_should_not_validate_on_update_if_changed | |||
|
103 | issue = Issue.generate!(:start_date => '2013-06-04') | |||
|
104 | issue.stubs(:soonest_start).returns(Date.parse('2013-06-10')) | |||
|
105 | issue.start_date = '2013-06-07' | |||
|
106 | assert !issue.valid? | |||
|
107 | assert_include "Start date cannot be earlier than 06/10/2013 because of preceding issues", issue.errors.full_messages | |||
|
108 | end | |||
|
109 | ||||
|
110 | def test_start_date_lesser_than_soonest_start_should_validate_on_update_if_unchanged | |||
|
111 | issue = Issue.generate!(:start_date => '2013-06-04') | |||
|
112 | issue.stubs(:soonest_start).returns(Date.parse('2013-06-10')) | |||
|
113 | assert issue.valid? | |||
|
114 | end | |||
|
115 | ||||
95 | def test_estimated_hours_should_be_validated |
|
116 | def test_estimated_hours_should_be_validated | |
96 | set_language_if_valid 'en' |
|
117 | set_language_if_valid 'en' | |
97 | ['-2'].each do |invalid| |
|
118 | ['-2'].each do |invalid| |
General Comments 0
You need to be logged in to leave comments.
Login now