Skip to content

Commit 8602a91

Browse files
committed
Add provider test for mssql
1 parent c9645e4 commit 8602a91

File tree

3 files changed

+79
-0
lines changed

3 files changed

+79
-0
lines changed

tests/src/python/CMakeLists.txt

+5
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
SET (ENABLE_PGTEST FALSE CACHE BOOL "Enable PostgreSQL provider tests")
2+
SET (ENABLE_MSSQLTEST FALSE CACHE BOOL "Enable MsSQL provider tests")
23

34
INCLUDE(UsePythonTest)
45
# Run one of the two server tests at the beginning so they don't run in
@@ -83,6 +84,10 @@ IF (ENABLE_PGTEST)
8384
ADD_PYTHON_TEST(PyQgsRelationEditWidget test_qgsrelationeditwidget.py)
8485
ENDIF (ENABLE_PGTEST)
8586

87+
IF (ENABLE_MSSQLTEST)
88+
ADD_PYTHON_TEST(PyQgsMssqlProvider test_provider_mssql.py)
89+
ENDIF (ENABLE_MSSQLTEST)
90+
8691
IF (WITH_APIDOC)
8792
ADD_PYTHON_TEST(PyQgsDocCoverage test_qgsdoccoverage.py)
8893
#SIP coverage test relies on API doc parsing to identify members which should be in bindings
+57
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# -*- coding: utf-8 -*-
2+
"""QGIS Unit tests for the MS SQL provider.
3+
4+
.. note:: This program is free software; you can redistribute it and/or modify
5+
it under the terms of the GNU General Public License as published by
6+
the Free Software Foundation; either version 2 of the License, or
7+
(at your option) any later version.
8+
"""
9+
__author__ = 'Nyall Dawson'
10+
__date__ = '2015-12-07'
11+
__copyright__ = 'Copyright 2015, The QGIS Project'
12+
# This will get replaced with a git SHA1 when you do a git archive
13+
__revision__ = '$Format:%H$'
14+
15+
import qgis
16+
import os
17+
import sys
18+
from qgis.core import NULL
19+
20+
from qgis.core import QgsVectorLayer, QgsFeatureRequest, QgsFeature, QgsProviderRegistry
21+
from PyQt4.QtCore import QSettings
22+
from utilities import (unitTestDataPath,
23+
getQgisTestApp,
24+
unittest,
25+
TestCase
26+
)
27+
from providertestbase import ProviderTestCase
28+
29+
QGISAPP, CANVAS, IFACE, PARENT = getQgisTestApp()
30+
TEST_DATA_DIR = unitTestDataPath()
31+
32+
33+
class TestPyQgsMssqlProvider(TestCase, ProviderTestCase):
34+
35+
@classmethod
36+
def setUpClass(cls):
37+
"""Run before all tests"""
38+
cls.dbconn = u"dbname='gis' host=localhost\sqlexpress"
39+
if 'QGIS_MSSQLTEST_DB' in os.environ:
40+
cls.dbconn = os.environ['QGIS_MSSQLTEST_DB']
41+
# Create test layer
42+
cls.vl = QgsVectorLayer(cls.dbconn + ' sslmode=disable key=\'pk\' srid=4326 type=POINT table="qgis_test"."someData" (geom) sql=', 'test', 'mssql')
43+
assert(cls.vl.isValid())
44+
cls.provider = cls.vl.dataProvider()
45+
46+
@classmethod
47+
def tearDownClass(cls):
48+
"""Run after all tests"""
49+
50+
def enableCompiler(self):
51+
QSettings().setValue(u'/qgis/compileExpressions', True)
52+
53+
def disableCompiler(self):
54+
QSettings().setValue(u'/qgis/compileExpressions', False)
55+
56+
if __name__ == '__main__':
57+
unittest.main()
+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
CREATE SCHEMA qgis_test
2+
3+
CREATE TABLE qgis_test.[someData] (
4+
pk integer PRIMARY KEY,
5+
cnt integer,
6+
name nvarchar(max) DEFAULT 'qgis',
7+
name2 nvarchar(max) DEFAULT 'qgis',
8+
geom geometry
9+
)
10+
11+
INSERT INTO qgis_test.[someData] (pk, cnt, name, name2, geom) VALUES
12+
(5, -200, NULL, 'NuLl', geometry::STGeomFromText( 'Point(-71.123 78.23)', 4326 )),
13+
(3, 300, 'Pear', 'PEaR', NULL),
14+
(1, 100, 'Orange', 'oranGe', geometry::STGeomFromText( 'Point(-70.332 66.33)', 4326 )),
15+
(2, 200, 'Apple', 'Apple', geometry::STGeomFromText( 'Point(-68.2 70.8)', 4326 )),
16+
(4, 400, 'Honey', 'Honey', geometry::STGeomFromText( 'Point(-65.32 78.3)', 4326 ))
17+
;

0 commit comments

Comments
 (0)