Model: self is not child's parent

you want.

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

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, Jim