예제 #1
0
    def test_clone(self):
        # Check parent removal in clone.
        psec = Section(name="parent")
        sec = Section(name="original", parent=psec)
        clone_sec = sec.clone()
        self.assertEqual(sec.parent, psec)
        self.assertIsNone(clone_sec.parent)

        # Check new id in clone.
        sec = Section(name="original")
        clone_sec = sec.clone()
        self.assertEqual(sec, clone_sec)
        self.assertNotEqual(sec.id, clone_sec.id)

        # Check child Sections and Properties are cloned and have new ids.
        Section(name="sec_one", parent=sec)
        Section(name="sec_two", parent=sec)
        Property(name="prop_one", parent=sec)
        Property(name="prop_two", parent=sec)

        clone_sec = sec.clone()

        # Check sections
        self.assertListEqual(sec.sections, clone_sec.sections)
        self.assertEqual(sec.sections["sec_one"], clone_sec.sections["sec_one"])
        self.assertNotEqual(sec.sections["sec_one"].id, clone_sec.sections["sec_one"].id)

        # Check properties
        self.assertListEqual(sec.properties, clone_sec.properties)
        self.assertEqual(sec.properties["prop_one"], clone_sec.properties["prop_one"])
        self.assertNotEqual(sec.properties["prop_one"].id,
                            clone_sec.properties["prop_one"].id)

        # Check child Sections and Properties are not cloned.
        clone_sec = sec.clone(children=False)

        self.assertListEqual(clone_sec.sections, [])
        self.assertListEqual(clone_sec.properties, [])
예제 #2
0
    def test_clone_keep_id(self):
        # Check id kept in clone.
        sec = Section(name="original")
        clone_sec = sec.clone(keep_id=True)
        self.assertEqual(sec, clone_sec)
        self.assertEqual(sec.id, clone_sec.id)

        # Check cloned child Sections keep their ids.
        Section(name="sec_one", parent=sec)
        Section(name="sec_two", parent=sec)
        clone_sec = sec.clone(keep_id=True)
        self.assertListEqual(sec.sections, clone_sec.sections)
        self.assertEqual(sec.sections["sec_one"], clone_sec.sections["sec_one"])
        self.assertEqual(sec.sections["sec_one"].id, clone_sec.sections["sec_one"].id)

        # Check cloned child Properties keep their ids.
        Property(name="prop_one", parent=sec)
        Property(name="prop_two", parent=sec)
        clone_sec = sec.clone(keep_id=True)
        self.assertListEqual(sec.properties, clone_sec.properties)
        self.assertEqual(sec.properties["prop_one"], clone_sec.properties["prop_one"])
        self.assertEqual(sec.properties["prop_one"].id,
                         clone_sec.properties["prop_one"].id)