mirror of
https://github.com/qgis/QGIS.git
synced 2025-03-10 00:13:55 -04:00
Fix tests and remove unnecessary code
also correctly down-up cast date(time) when needed
This commit is contained in:
parent
76f4c96dc6
commit
43e092f412
@ -383,29 +383,29 @@ QgsExpression QgsServerApiUtils::temporalFilterExpression( const QgsVectorLayer
|
|||||||
const auto fieldRefEnd { refFieldCast( dimension.endFieldName, queryType, fieldType ) };
|
const auto fieldRefEnd { refFieldCast( dimension.endFieldName, queryType, fieldType ) };
|
||||||
const auto fieldEnd = QgsExpression::quotedColumnRef( dimension.endFieldName );
|
const auto fieldEnd = QgsExpression::quotedColumnRef( dimension.endFieldName );
|
||||||
|
|
||||||
// Cast the query value according to the field type
|
|
||||||
QString beginQuery;
|
|
||||||
// Drop the time
|
|
||||||
if ( fieldType == QVariant::Type::Date )
|
|
||||||
{
|
|
||||||
beginQuery = interval;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
beginQuery = interval;
|
|
||||||
}
|
|
||||||
|
|
||||||
QString condition;
|
QString condition;
|
||||||
QString castedValue;
|
QString castedValue;
|
||||||
|
|
||||||
// field has possibly been downcasted
|
// field has possibly been downcasted
|
||||||
if ( ! inputQueryIsDateTime || ! fieldIsDateTime )
|
if ( ! inputQueryIsDateTime || ! fieldIsDateTime )
|
||||||
{
|
{
|
||||||
castedValue = QStringLiteral( "to_date( %1 )" ).arg( QgsExpression::quotedValue( QDate::fromString( interval, Qt::DateFormat::ISODate ) ) );
|
QString castedInterval { interval };
|
||||||
|
// Check if we need to downcast interval from datetime
|
||||||
|
if ( inputQueryIsDateTime )
|
||||||
|
{
|
||||||
|
castedInterval = QDate::fromString( castedInterval, Qt::DateFormat::ISODate ).toString( Qt::DateFormat::ISODate );
|
||||||
|
}
|
||||||
|
castedValue = QStringLiteral( "to_date( %1 )" ).arg( QgsExpression::quotedValue( castedInterval ) );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
castedValue = QStringLiteral( "to_datetime( %1 )" ).arg( QgsExpression::quotedValue( QDateTime::fromString( interval, Qt::DateFormat::ISODate ) ) );
|
QString castedInterval { interval };
|
||||||
|
// Check if we need to upcast interval to datetime
|
||||||
|
if ( ! inputQueryIsDateTime )
|
||||||
|
{
|
||||||
|
castedInterval = QDateTime::fromString( castedInterval, Qt::DateFormat::ISODate ).toString( Qt::DateFormat::ISODate );
|
||||||
|
}
|
||||||
|
castedValue = QStringLiteral( "to_datetime( %1 )" ).arg( QgsExpression::quotedValue( castedInterval ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ! fieldRefEnd.isEmpty() )
|
if ( ! fieldRefEnd.isEmpty() )
|
||||||
|
@ -203,6 +203,13 @@ class QgsServerAPITestBase(QgsServerTestBase):
|
|||||||
j['timeStamp'] = '2019-07-05T12:27:07Z'
|
j['timeStamp'] = '2019-07-05T12:27:07Z'
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
# Fix coordinate precision differences in Travis
|
||||||
|
try:
|
||||||
|
bbox = j['extent']['spatial']['bbox'][0]
|
||||||
|
bbox = [round(c, 4) for c in bbox]
|
||||||
|
j['extent']['spatial']['bbox'][0] = bbox
|
||||||
|
except:
|
||||||
|
pass
|
||||||
json_content = json.dumps(j)
|
json_content = json.dumps(j)
|
||||||
headers_content = '\n'.join(reference_content[:reference_content.index('') + 1])
|
headers_content = '\n'.join(reference_content[:reference_content.index('') + 1])
|
||||||
return headers_content + '\n' + json_content
|
return headers_content + '\n' + json_content
|
||||||
@ -672,12 +679,7 @@ class QgsServerAPITest(QgsServerAPITestBase):
|
|||||||
self.assertEqualBrackets(_interval(updated_path, '2017-01-01/..'), '( "updated" IS NULL OR to_date( "updated" ) >= to_date( \'2017-01-01\' ) )')
|
self.assertEqualBrackets(_interval(updated_path, '2017-01-01/..'), '( "updated" IS NULL OR to_date( "updated" ) >= to_date( \'2017-01-01\' ) )')
|
||||||
self.assertEqualBrackets(_interval(updated_path, '2017-01-01/2018-01-01'), '( "updated" IS NULL OR ( to_date( \'2017-01-01\' ) <= to_date( "updated" ) AND to_date( "updated" ) <= to_date( \'2018-01-01\' ) ) )')
|
self.assertEqualBrackets(_interval(updated_path, '2017-01-01/2018-01-01'), '( "updated" IS NULL OR ( to_date( \'2017-01-01\' ) <= to_date( "updated" ) AND to_date( "updated" ) <= to_date( \'2018-01-01\' ) ) )')
|
||||||
|
|
||||||
# For some obscure reason local testing adds milliseconds while it does not happen on Travis, we accept boths here
|
self.assertEqualBrackets(_interval(updated_path, '2017-01-01T01:01:01'), '( "updated" IS NULL OR "updated" = to_datetime( \'2017-01-01T01:01:01\' ) )')
|
||||||
try:
|
|
||||||
self.assertEqualBrackets(_interval(updated_path, '2017-01-01T01:01:01'), '( "updated" IS NULL OR "updated" = to_datetime( \'2017-01-01T01:01:01\' ) )')
|
|
||||||
except:
|
|
||||||
self.assertEqualBrackets(_interval(updated_path, '2017-01-01T01:01:01'), '( "updated" IS NULL OR "updated" = to_datetime( \'2017-01-01T01:01:01.000\' ) )')
|
|
||||||
|
|
||||||
self.assertEqualBrackets(_interval(updated_path, '../2017-01-01T01:01:01'), '( "updated" IS NULL OR "updated" <= to_datetime( \'2017-01-01T01:01:01\' ) )')
|
self.assertEqualBrackets(_interval(updated_path, '../2017-01-01T01:01:01'), '( "updated" IS NULL OR "updated" <= to_datetime( \'2017-01-01T01:01:01\' ) )')
|
||||||
self.assertEqualBrackets(_interval(updated_path, '/2017-01-01T01:01:01'), '( "updated" IS NULL OR "updated" <= to_datetime( \'2017-01-01T01:01:01\' ) )')
|
self.assertEqualBrackets(_interval(updated_path, '/2017-01-01T01:01:01'), '( "updated" IS NULL OR "updated" <= to_datetime( \'2017-01-01T01:01:01\' ) )')
|
||||||
self.assertEqualBrackets(_interval(updated_path, '2017-01-01T01:01:01/'), '( "updated" IS NULL OR "updated" >= to_datetime( \'2017-01-01T01:01:01\' ) )')
|
self.assertEqualBrackets(_interval(updated_path, '2017-01-01T01:01:01/'), '( "updated" IS NULL OR "updated" >= to_datetime( \'2017-01-01T01:01:01\' ) )')
|
||||||
@ -707,7 +709,7 @@ class QgsServerAPITest(QgsServerAPITestBase):
|
|||||||
self.assertEqualBrackets(_interval(updated_string_path, '2017-01-01/..'), '( "updated_string" IS NULL OR to_date( "updated_string" ) >= to_date( \'2017-01-01\' ) )')
|
self.assertEqualBrackets(_interval(updated_string_path, '2017-01-01/..'), '( "updated_string" IS NULL OR to_date( "updated_string" ) >= to_date( \'2017-01-01\' ) )')
|
||||||
self.assertEqualBrackets(_interval(updated_string_path, '2017-01-01/2018-01-01'), '( "updated_string" IS NULL OR ( to_date( \'2017-01-01\' ) <= to_date( "updated_string" ) AND to_date( "updated_string" ) <= to_date( \'2018-01-01\' ) ) )')
|
self.assertEqualBrackets(_interval(updated_string_path, '2017-01-01/2018-01-01'), '( "updated_string" IS NULL OR ( to_date( \'2017-01-01\' ) <= to_date( "updated_string" ) AND to_date( "updated_string" ) <= to_date( \'2018-01-01\' ) ) )')
|
||||||
|
|
||||||
self.assertEqualBrackets(_interval(updated_string_path, '2017-01-01T01:01:01'), '( "updated_string" IS NULL OR to_datetime( "updated_string" ) = to_datetime( \'2017-01-01T01:01:01.000\' ) )')
|
self.assertEqualBrackets(_interval(updated_string_path, '2017-01-01T01:01:01'), '( "updated_string" IS NULL OR to_datetime( "updated_string" ) = to_datetime( \'2017-01-01T01:01:01\' ) )')
|
||||||
self.assertEqualBrackets(_interval(updated_string_path, '../2017-01-01T01:01:01'), '( "updated_string" IS NULL OR to_datetime( "updated_string" ) <= to_datetime( \'2017-01-01T01:01:01\' ) )')
|
self.assertEqualBrackets(_interval(updated_string_path, '../2017-01-01T01:01:01'), '( "updated_string" IS NULL OR to_datetime( "updated_string" ) <= to_datetime( \'2017-01-01T01:01:01\' ) )')
|
||||||
self.assertEqualBrackets(_interval(updated_string_path, '/2017-01-01T01:01:01'), '( "updated_string" IS NULL OR to_datetime( "updated_string" ) <= to_datetime( \'2017-01-01T01:01:01\' ) )')
|
self.assertEqualBrackets(_interval(updated_string_path, '/2017-01-01T01:01:01'), '( "updated_string" IS NULL OR to_datetime( "updated_string" ) <= to_datetime( \'2017-01-01T01:01:01\' ) )')
|
||||||
self.assertEqualBrackets(_interval(updated_string_path, '2017-01-01T01:01:01/'), '( "updated_string" IS NULL OR to_datetime( "updated_string" ) >= to_datetime( \'2017-01-01T01:01:01\' ) )')
|
self.assertEqualBrackets(_interval(updated_string_path, '2017-01-01T01:01:01/'), '( "updated_string" IS NULL OR to_datetime( "updated_string" ) >= to_datetime( \'2017-01-01T01:01:01\' ) )')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user