Skip to content

Commit f31a5ea

Browse files
committed
cleanup when issue is deleted #29
- delete issue_resource_items, issue_supply_items and supply_item_journals
1 parent d08afe8 commit f31a5ea

File tree

3 files changed

+26
-2
lines changed

3 files changed

+26
-2
lines changed

lib/redmine_resource_manager/issue_patch.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ def self.apply
66

77
Issue.class_eval do
88

9-
has_many :issue_resource_items
9+
has_many :issue_resource_items, dependent: :destroy
1010
has_many :resource_items, through: :issue_resource_items
1111

1212
accepts_nested_attributes_for :issue_resource_items, allow_destroy: true

lib/redmine_supply/patches/issue_patch.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ def self.apply
77

88
Issue.class_eval do
99

10-
has_many :issue_supply_items
10+
has_many :issue_supply_items, dependent: :destroy
11+
after_destroy :delete_supply_item_journals
1112

1213
accepts_nested_attributes_for :issue_supply_items
1314

@@ -51,6 +52,11 @@ def issue_supply_items_attributes=(attributes = [])
5152
super attributes
5253
end
5354

55+
def delete_supply_item_journals
56+
SupplyItemJournal.where(issue_id: id).delete_all
57+
end
58+
private :delete_supply_item_journals
59+
5460
end
5561
end
5662
end

test/unit/issue_supply_item_change_test.rb

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,24 @@ class IssueSupplyItemChangeTest < ActiveSupport::TestCase
2222
teardown do
2323
end
2424

25+
test "should delete changes when issue is deleted" do
26+
r = RedmineSupply::SaveSupplyItem.(
27+
{name: 'new item', stock: 5}, project: @project
28+
)
29+
assert i = r.supply_item
30+
31+
assert_difference 'IssueSupplyItemChange.count' do
32+
IssueSupplyItem.create! issue: @issue, supply_item: i, quantity: 1.5
33+
end
34+
35+
assert_difference "IssueSupplyItemChange.count", -1 do
36+
assert_difference "IssueSupplyItem.count", -1 do
37+
@issue.destroy
38+
end
39+
end
40+
end
41+
42+
2543
test 'should record stock change when saved or destroyed' do
2644
r = RedmineSupply::SaveSupplyItem.(
2745
{name: 'new item', stock: 5}, project: @project

0 commit comments

Comments
 (0)