Model: self is not child's parent

you want.

assert p.eql? not p.equal? (equal is more restrictive/exact than

I'm not entirely sure, but I believe when you call
p.children[0].parent you are actually instantiating in memory an new
object of Parent class. So, #<Parent:0x39f3018 > is exactly equal to
#<Parent:0x39f3020 >

so in the end use == or eql? instead of equal? if your not wanting to
check for EXACTLY the same instance of Parent.

Hope that helps,