@@ -548,11 +548,11 class Issue < ActiveRecord::Base | |||
|
548 | 548 | end |
|
549 | 549 | |
|
550 | 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 | 552 | errors.add :due_date, :greater_than_start_date |
|
553 | 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 | 556 | errors.add :start_date, :earlier_than_minimum_start_date, :date => format_date(soonest_start) |
|
557 | 557 | end |
|
558 | 558 |
@@ -65,13 +65,20 module ObjectHelpers | |||
|
65 | 65 | role |
|
66 | 66 | end |
|
67 | 67 | |
|
68 | def Issue.generate!(attributes={}) | |
|
68 | # Generates an unsaved Issue | |
|
69 | def Issue.generate(attributes={}) | |
|
69 | 70 | issue = Issue.new(attributes) |
|
70 | 71 | issue.project ||= Project.find(1) |
|
71 | 72 | issue.tracker ||= issue.project.trackers.first |
|
72 | 73 | issue.subject = 'Generated' if issue.subject.blank? |
|
73 | 74 | issue.author ||= User.find(2) |
|
74 | 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 | 82 | issue.save! |
|
76 | 83 | issue |
|
77 | 84 | end |
@@ -92,6 +92,27 class IssueTest < ActiveSupport::TestCase | |||
|
92 | 92 | assert_include 'Due date must be greater than start date', issue.errors.full_messages |
|
93 | 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 | 116 | def test_estimated_hours_should_be_validated |
|
96 | 117 | set_language_if_valid 'en' |
|
97 | 118 | ['-2'].each do |invalid| |
General Comments 0
You need to be logged in to leave comments.
Login now