mirror of
https://github.com/qgis/QGIS.git
synced 2025-03-02 00:02:12 -05:00
Implemented test for method QgsMssqlProvider::defaultValue
This commit is contained in:
parent
53c0d4003b
commit
85b0590c6e
@ -478,44 +478,52 @@ QString QgsMssqlProvider::quotedIdentifier( const QString &value )
|
||||
|
||||
QString QgsMssqlProvider::defaultValueClause( int fieldId ) const
|
||||
{
|
||||
QString defVal = mDefaultValues.value( fieldId, QString() );
|
||||
const QString defVal = mDefaultValues.value( fieldId, QString() );
|
||||
|
||||
if ( defVal.isEmpty() )
|
||||
return QString();
|
||||
|
||||
// NOTE: If EvaluateDefaultValues is activated it is impossible to get the defaultValueClause.
|
||||
// This also apply to QgsPostgresProvider::defaultValueClause.
|
||||
if ( !providerProperty( EvaluateDefaultValues, false ).toBool() && !defVal.isEmpty() )
|
||||
{
|
||||
if ( !providerProperty( EvaluateDefaultValues, false ).toBool() )
|
||||
return defVal;
|
||||
}
|
||||
|
||||
return QString();
|
||||
}
|
||||
|
||||
QVariant QgsMssqlProvider::defaultValue( int fieldId ) const
|
||||
{
|
||||
QString defVal = mDefaultValues.value( fieldId, QString() );
|
||||
const QString defVal = mDefaultValues.value( fieldId, QString() );
|
||||
|
||||
if ( providerProperty( EvaluateDefaultValues, false ).toBool() && !defVal.isEmpty() )
|
||||
if ( defVal.isEmpty() )
|
||||
return QVariant();
|
||||
|
||||
if ( !providerProperty( EvaluateDefaultValues, false ).toBool() )
|
||||
return QVariant();
|
||||
|
||||
QString sql = QStringLiteral( "select %1" )
|
||||
.arg( defVal );
|
||||
|
||||
QSqlQuery query = createQuery();
|
||||
query.setForwardOnly( true );
|
||||
|
||||
if ( !query.exec( sql ) )
|
||||
{
|
||||
QString sql = QStringLiteral( "select %1" )
|
||||
.arg( defVal );
|
||||
|
||||
QSqlQuery query = createQuery();
|
||||
query.setForwardOnly( true );
|
||||
|
||||
if ( !query.exec( sql ) )
|
||||
{
|
||||
QgsDebugMsg( query.lastError().text() );
|
||||
pushError( tr( "Could not execute query" ) );
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
if ( !query.next() )
|
||||
return QVariant();
|
||||
|
||||
return query.value( 0 );
|
||||
const QString errorMessage( tr( "Could not execute query: %1" ).arg( query.lastError().text() ) );
|
||||
QgsDebugMsg( errorMessage );
|
||||
pushError( errorMessage );
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
return QVariant();
|
||||
if ( !query.next() )
|
||||
{
|
||||
const QString errorMessage( tr( "Could not fetch next query value: %1" ).arg( query.lastError().text() ) );
|
||||
QgsDebugMsg( errorMessage );
|
||||
pushError( errorMessage );
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
return query.value( 0 );
|
||||
}
|
||||
|
||||
QString QgsMssqlProvider::storageType() const
|
||||
|
@ -26,7 +26,8 @@ from qgis.core import (QgsSettings,
|
||||
QgsProviderRegistry,
|
||||
NULL,
|
||||
QgsVectorLayerExporter,
|
||||
QgsCoordinateReferenceSystem)
|
||||
QgsCoordinateReferenceSystem,
|
||||
QgsDataProvider)
|
||||
|
||||
from qgis.PyQt.QtCore import QDate, QTime, QDateTime, QVariant
|
||||
from utilities import unitTestDataPath
|
||||
@ -514,6 +515,19 @@ class TestPyQgsMssqlProvider(unittest.TestCase, ProviderTestCase):
|
||||
self.assertTrue(vl.isValid())
|
||||
self.assertEqual(vl.dataProvider().extent().toString(1), 'Empty')
|
||||
|
||||
def testEvaluateDefaultValueClause(self):
|
||||
|
||||
vl = QgsVectorLayer(
|
||||
'%s table="qgis_test"."someData" sql=' %
|
||||
(self.dbconn), "testdatetimes", "mssql")
|
||||
|
||||
# Activate EvaluateDefaultValues
|
||||
vl.dataProvider().setProviderProperty(QgsDataProvider.EvaluateDefaultValues, True)
|
||||
|
||||
name_index = vl.fields().lookupField('name')
|
||||
defaultValue = vl.dataProvider().defaultValue(name_index)
|
||||
self.assertEqual(defaultValue, 'qgis')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
Loading…
x
Reference in New Issue
Block a user