|
36 | 36 | it { is_expected.to belong_to(:sprint).class_name("Agile::Sprint").optional(true) } |
37 | 37 | end |
38 | 38 |
|
39 | | - describe "can't be both in backlog bucket and sprint" do |
40 | | - shared_let(:project) { create(:project) } |
41 | | - shared_let(:backlog_bucket) { create(:backlog_bucket, project:) } |
42 | | - shared_let(:sprint) { create(:agile_sprint, project:) } |
43 | | - |
44 | | - context "when already in a backlog bucket" do |
45 | | - let(:work_package) { create(:work_package, project:, backlog_bucket:) } |
46 | | - |
47 | | - it "fails validation when being added to sprint" do |
48 | | - work_package.assign_attributes(sprint:) |
49 | | - |
50 | | - expect(work_package).not_to be_valid |
51 | | - expect(work_package.errors[:base]).to include(/cannot be assigned to both a sprint and a backlog bucket/) |
52 | | - end |
53 | | - |
54 | | - it "fails being added to sprint" do |
55 | | - work_package.assign_attributes(sprint:) |
56 | | - |
57 | | - expect do |
58 | | - work_package.save!(validate: false) |
59 | | - end.to raise_error(ActiveRecord::CheckViolation) |
60 | | - end |
61 | | - |
62 | | - it "allows changing backlog bucket" do |
63 | | - work_package.update(backlog_bucket: create(:backlog_bucket, project:)) |
64 | | - end |
65 | | - |
66 | | - it "allows replacing backlog bucket with sprint" do |
67 | | - work_package.update(backlog_bucket: nil, sprint:) |
68 | | - end |
69 | | - end |
70 | | - |
71 | | - context "when already in a sprint" do |
72 | | - let(:work_package) { create(:work_package, project:, sprint:) } |
73 | | - |
74 | | - it "fails validation when being added to backlog bucket" do |
75 | | - work_package.assign_attributes(backlog_bucket:) |
76 | | - |
77 | | - expect(work_package).not_to be_valid |
78 | | - expect(work_package.errors[:base]).to include(/cannot be assigned to both a sprint and a backlog bucket/) |
79 | | - end |
80 | | - |
81 | | - it "fails being added to backlog bucket" do |
82 | | - work_package.assign_attributes(backlog_bucket:) |
83 | | - |
84 | | - expect do |
85 | | - work_package.save!(validate: false) |
86 | | - end.to raise_error(ActiveRecord::CheckViolation) |
87 | | - end |
88 | | - |
89 | | - it "allows changing sprint" do |
90 | | - work_package.update(sprint: create(:agile_sprint, project:)) |
91 | | - end |
92 | | - |
93 | | - it "allows replacing sprint with backlog bucket" do |
94 | | - work_package.update(backlog_bucket:, sprint: nil) |
95 | | - end |
96 | | - end |
97 | | - end |
98 | | - |
99 | | - describe "backlog bucket must belong to the same project" do |
100 | | - shared_let(:project) { create(:project) } |
101 | | - let(:other_project) { create(:project) } |
102 | | - let(:work_package) { build(:work_package, project:, backlog_bucket:) } |
103 | | - |
104 | | - context "when backlog bucket belongs to the same project" do |
105 | | - let(:backlog_bucket) { create(:backlog_bucket, project:) } |
106 | | - |
107 | | - it "is valid" do |
108 | | - expect(work_package).to be_valid |
109 | | - end |
110 | | - end |
111 | | - |
112 | | - context "when backlog bucket belongs to a different project" do |
113 | | - let(:backlog_bucket) { create(:backlog_bucket, project: other_project) } |
114 | | - |
115 | | - it "is invalid" do |
116 | | - expect(work_package).not_to be_valid |
117 | | - expect(work_package.errors[:backlog_bucket]).to include(/must belong to the same project/) |
118 | | - end |
119 | | - end |
120 | | - |
121 | | - context "when backlog bucket is nil" do |
122 | | - let(:backlog_bucket) { nil } |
123 | | - |
124 | | - it "is valid" do |
125 | | - expect(work_package).to be_valid |
126 | | - end |
127 | | - end |
128 | | - end |
129 | | - |
130 | 39 | describe ".order_by_position" do |
131 | 40 | let(:work_packages) { create_list(:work_package, 3) } |
132 | 41 |
|
|
0 commit comments