Skip to content

Commit 3fc0e69

Browse files
committedOct 5, 2018
[mssql] Add unit test for #15305
1 parent 17b80c1 commit 3fc0e69

File tree

1 file changed

+73
-1
lines changed

1 file changed

+73
-1
lines changed
 

‎tests/src/python/test_provider_mssql.py‎

Lines changed: 73 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,17 @@
1616

1717
import os
1818

19-
from qgis.core import QgsSettings, QgsVectorLayer, QgsFeatureRequest
19+
from qgis.core import (QgsSettings,
20+
QgsVectorLayer,
21+
QgsFeatureRequest,
22+
QgsFeature,
23+
QgsFields,
24+
QgsField,
25+
QgsGeometry,
26+
QgsPointXY,
27+
NULL,
28+
QgsVectorLayerExporter,
29+
QgsCoordinateReferenceSystem)
2030

2131
from qgis.PyQt.QtCore import QDate, QTime, QDateTime, QVariant
2232

@@ -164,6 +174,68 @@ def testDateTimeTypes(self):
164174
self.assertEqual(f.attributes()[datetime_idx], QDateTime(
165175
QDate(2004, 3, 4), QTime(13, 41, 52)))
166176

177+
def testCreateLayer(self):
178+
layer = QgsVectorLayer("Point?field=id:integer&field=fldtxt:string&field=fldint:integer",
179+
"addfeat", "memory")
180+
pr = layer.dataProvider()
181+
f = QgsFeature()
182+
f.setAttributes([1, "test", 1])
183+
f.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(1, 2)))
184+
f2 = QgsFeature()
185+
f2.setAttributes([2, "test2", 3])
186+
f3 = QgsFeature()
187+
f3.setAttributes([3, "test2", NULL])
188+
f3.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(3, 2)))
189+
f4 = QgsFeature()
190+
f4.setAttributes([4, NULL, 3])
191+
f4.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(4, 3)))
192+
pr.addFeatures([f, f2, f3, f4])
193+
194+
uri = '{} table="qgis_test"."new_table" sql='.format(self.dbconn)
195+
error, message = QgsVectorLayerExporter.exportLayer(layer, uri, 'mssql', QgsCoordinateReferenceSystem('EPSG:4326'))
196+
self.assertEqual(error, QgsVectorLayerExporter.NoError)
197+
198+
new_layer = QgsVectorLayer(uri, 'new', 'mssql')
199+
self.assertTrue(new_layer.isValid())
200+
self.assertEqual([f.name() for f in new_layer.fields()], ['qgs_fid', 'id', 'fldtxt', 'fldint'])
201+
202+
features = [f.attributes() for f in new_layer.getFeatures()]
203+
self.assertEqual(features, [[1, 1, 'test', 1],
204+
[2, 2, 'test2', 3],
205+
[3, 3, 'test2', NULL],
206+
[4, 4, NULL, 3]])
207+
geom = [f.geometry().asWkt() for f in new_layer.getFeatures()]
208+
self.assertEqual(geom, ['Point (1 2)', '', 'Point (3 2)', 'Point (4 3)'])
209+
210+
def testCreateLayerMultiPoint(self):
211+
layer = QgsVectorLayer("MultiPoint?field=id:integer&field=fldtxt:string&field=fldint:integer",
212+
"addfeat", "memory")
213+
pr = layer.dataProvider()
214+
f = QgsFeature()
215+
f.setAttributes([1, "test", 1])
216+
f.setGeometry(QgsGeometry.fromWkt('MultiPoint(1 2, 3 4)'))
217+
f2 = QgsFeature()
218+
f2.setAttributes([2, "test2", 3])
219+
f3 = QgsFeature()
220+
f3.setAttributes([3, "test2", NULL])
221+
f3.setGeometry(QgsGeometry.fromWkt('MultiPoint(7 8)'))
222+
pr.addFeatures([f, f2, f3])
223+
224+
uri = '{} table="qgis_test"."new_table_multipoint" sql='.format(self.dbconn)
225+
error, message = QgsVectorLayerExporter.exportLayer(layer, uri, 'mssql', QgsCoordinateReferenceSystem('EPSG:4326'))
226+
self.assertEqual(error, QgsVectorLayerExporter.NoError)
227+
228+
new_layer = QgsVectorLayer(uri, 'new', 'mssql')
229+
self.assertTrue(new_layer.isValid())
230+
self.assertEqual([f.name() for f in new_layer.fields()], ['qgs_fid', 'id', 'fldtxt', 'fldint'])
231+
232+
features = [f.attributes() for f in new_layer.getFeatures()]
233+
self.assertEqual(features, [[1, 1, 'test', 1],
234+
[2, 2, 'test2', 3],
235+
[3, 3, 'test2', NULL]])
236+
geom = [f.geometry().asWkt() for f in new_layer.getFeatures()]
237+
self.assertEqual(geom, ['MultiPoint ((1 2),(3 4))', '', 'MultiPoint ((7 8))'])
238+
167239

168240
if __name__ == '__main__':
169241
unittest.main()

0 commit comments

Comments
 (0)
Please sign in to comment.