예제 #1
0
    def test_removePolymorphicRelation(self):
        # tests addPolymorphicRelation/removePolymorphicRelation

        manager = QgsRelationManager()

        # initially the map should be empty
        self.assertFalse(manager.polymorphicRelations())
        self.assertFalse(manager.relations())

        poly_rel1 = self.createPolymorphicRelation()
        poly_rel1.setId('poly_rel1')
        poly_rel1.setName('Poly Rel 1')
        poly_rel2 = self.createPolymorphicRelation()
        poly_rel2.setId('poly_rel2')
        poly_rel2.setName('Poly Rel 2')

        # the relation should be valid now
        self.assertTrue(poly_rel1.isValid())
        self.assertTrue(poly_rel2.isValid())
        self.assertFalse(
            manager.polymorphicRelation('poly_invalid_id').isValid())
        self.assertListEqual(
            [r.polymorphicRelationId() for r in manager.relations().values()],
            [])

        manager.addPolymorphicRelation(poly_rel1)
        self.assertTrue(manager.polymorphicRelation('poly_rel1').isValid())
        self.assertTrue(
            manager.polymorphicRelation('poly_rel1').hasEqualDefinition(
                poly_rel1))
        self.assertListEqual(
            [r.polymorphicRelationId() for r in manager.relations().values()],
            [poly_rel1.id()])

        manager.addPolymorphicRelation(poly_rel2)
        self.assertTrue(manager.polymorphicRelation('poly_rel2').isValid())
        self.assertTrue(
            manager.polymorphicRelation('poly_rel2').hasEqualDefinition(
                poly_rel2))
        self.assertListEqual(
            [r.polymorphicRelationId() for r in manager.relations().values()],
            [poly_rel1.id(), poly_rel2.id()])

        manager.removePolymorphicRelation(poly_rel1.id())
        self.assertFalse(manager.polymorphicRelation('poly_rel1').isValid())
        self.assertTrue(manager.polymorphicRelation('poly_rel2').isValid())
        self.assertListEqual(
            [r.polymorphicRelationId() for r in manager.relations().values()],
            [poly_rel2.id()])
        manager.removePolymorphicRelation(poly_rel2.id())
        self.assertFalse(manager.polymorphicRelation('poly_rel1').isValid())
        self.assertFalse(manager.polymorphicRelation('poly_rel2').isValid())
        self.assertListEqual(
            [r.polymorphicRelationId() for r in manager.relations().values()],
            [])