このコミットが含まれているのは:
@@ -20,4 +20,33 @@ RSpec.describe TagGroup, type: :model do
|
||||
.to include('id' => group.id, 'name' => 'history owner', 'members' => [])
|
||||
end
|
||||
|
||||
it 'destroys a group with nested placements and child membership, retaining history' do
|
||||
child = create_group(name: 'child group')
|
||||
|
||||
parent = create_group(
|
||||
name: 'parent group',
|
||||
members: [{ 'tag_group_id' => child.id }],
|
||||
placements: [{
|
||||
'section_name' => 'section',
|
||||
'description' => nil,
|
||||
'children' => [{
|
||||
'tag_group_id' => child.id,
|
||||
'children' => []
|
||||
}]
|
||||
}])
|
||||
|
||||
versions = parent.versions.order(:version_no).map(&:attributes)
|
||||
|
||||
expect { parent.destroy! }
|
||||
.to change(TagGroup, :count).by(-1)
|
||||
.and change(TagGroupVersion, :count).by(0)
|
||||
|
||||
expect(TagGroupVersion.where(tag_group_id: parent.id)
|
||||
.order(:version_no).map(&:attributes)).to eq(versions)
|
||||
|
||||
expect(child.reload).to be_persisted
|
||||
expect(TagGroupPlacement.where(tag_group_id: parent.id)).to be_empty
|
||||
expect(TagGroupTag.where(tag_group_id: parent.id)).to be_empty
|
||||
expect(TagGroupGroup.where(tag_group_id: parent.id)).to be_empty
|
||||
end
|
||||
end
|
||||
|
||||
新しいイシューから参照
ユーザーをブロックする