Skip to content

Commit

Permalink
Add tests for validationError
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson committed Sep 28, 2022
1 parent 6501df1 commit 252a839
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 2 deletions.
14 changes: 12 additions & 2 deletions src/core/qgsrelation.cpp
Expand Up @@ -366,11 +366,21 @@ QString QgsRelation::validationError() const
return QString();

if ( d->mReferencingLayer.isNull() )
return QObject::tr( "Referencing layer %1 does not exist" ).arg( d->mReferencingLayerId );
{
if ( d->mReferencingLayerId.isEmpty() )
return QObject::tr( "Referencing layer not set" );
else
return QObject::tr( "Referencing layer %1 does not exist" ).arg( d->mReferencingLayerId );
}
else if ( !d->mReferencingLayer.data()->isValid() )
return QObject::tr( "Referencing layer %1 is not valid" ).arg( d->mReferencingLayerId );
else if ( d->mReferencedLayer.isNull() )
return QObject::tr( "Referenced layer %1 does not exist" ).arg( d->mReferencedLayerId );
{
if ( d->mReferencedLayerId.isEmpty() )
return QObject::tr( "Referenced layer not set" );
else
return QObject::tr( "Referenced layer %1 does not exist" ).arg( d->mReferencedLayerId );
}
else if ( !d->mReferencedLayer.data()->isValid() )
return QObject::tr( "Referenced layer %1 is not valid" ).arg( d->mReferencedLayerId );
else
Expand Down
14 changes: 14 additions & 0 deletions tests/src/python/test_qgsrelation.py
Expand Up @@ -86,21 +86,35 @@ def tearDown(self):
def test_isValid(self):
rel = QgsRelation()
self.assertFalse(rel.isValid())
self.assertEqual(rel.validationError(), 'Referencing layer not set')

rel.setId('rel1')
self.assertFalse(rel.isValid())
self.assertEqual(rel.validationError(), 'Referencing layer not set')

rel.setName('Relation Number One')
self.assertFalse(rel.isValid())
self.assertEqual(rel.validationError(), 'Referencing layer not set')

rel.setReferencingLayer('xxx')
self.assertFalse(rel.isValid())
self.assertEqual(rel.validationError(), 'Referencing layer xxx does not exist')

rel.setReferencingLayer(self.referencingLayer.id())
self.assertFalse(rel.isValid())
self.assertEqual(rel.validationError(), 'Referenced layer not set')

rel.setReferencedLayer('yyy')
self.assertFalse(rel.isValid())
self.assertEqual(rel.validationError(), 'Referenced layer yyy does not exist')

rel.setReferencedLayer(self.referencedLayer.id())
self.assertFalse(rel.isValid())
self.assertEqual(rel.validationError(), 'No fields specified for relationship')

rel.addFieldPair('foreignkey', 'y')
self.assertTrue(rel.isValid())
self.assertEqual(rel.validationError(), '')

def test_getRelatedFeatures(self):
rel = QgsRelation()
Expand Down

0 comments on commit 252a839

Please sign in to comment.