Remove ownership when using NodeSet#delete.

This commit is contained in:
Yorick Peterse 2014-07-01 10:15:39 +02:00
parent 4b408eae4f
commit e69fbc3ea7
2 changed files with 14 additions and 3 deletions

View File

@ -188,7 +188,11 @@ module Oga
# Removes a node from the current set only. # Removes a node from the current set only.
# #
def delete(node) def delete(node)
@nodes.delete(node) removed = @nodes.delete(node)
remove_ownership(removed) if removed
return removed
end end
## ##

View File

@ -223,8 +223,9 @@ describe Oga::XML::NodeSet do
context '#delete' do context '#delete' do
before do before do
@n1 = Oga::XML::Element.new(:name => 'a') owner = Oga::XML::Element.new
@set = described_class.new([@n1]) @n1 = Oga::XML::Element.new
@set = described_class.new([@n1], owner)
end end
example 'return the node when deleting it' do example 'return the node when deleting it' do
@ -236,6 +237,12 @@ describe Oga::XML::NodeSet do
@set.empty?.should == true @set.empty?.should == true
end end
example 'remove ownership of the removed node' do
@set.delete(@n1)
@n1.node_set.nil?.should == true
end
end end
context '#attribute' do context '#attribute' do