Skip to content

Commit d4feb35

Browse files
committedOct 15, 2016
Add test for setting up connection string
1 parent be3e807 commit d4feb35

File tree

2 files changed

+71
-18
lines changed

2 files changed

+71
-18
lines changed
 

‎python/plugins/processing/algs/gdal/ogr2ogrtopostgis.py

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -153,19 +153,35 @@ def defineCharacteristics(self):
153153
self.addParameter(ParameterString(self.OPTIONS,
154154
self.tr('Additional creation options'), '', optional=True))
155155

156+
def getConnectionString(self):
157+
host = unicode(self.getParameterValue(self.HOST))
158+
port = unicode(self.getParameterValue(self.PORT))
159+
user = unicode(self.getParameterValue(self.USER))
160+
dbname = unicode(self.getParameterValue(self.DBNAME))
161+
password = unicode(self.getParameterValue(self.PASSWORD))
162+
schema = unicode(self.getParameterValue(self.SCHEMA))
163+
arguments = []
164+
if host:
165+
arguments.append('host=' + host)
166+
if port:
167+
arguments.append('port=' + port)
168+
if dbname:
169+
arguments.append('dbname=' + dbname)
170+
if password:
171+
arguments.append('password=' + password)
172+
if schema:
173+
arguments.append('active_schema=' + schema)
174+
if user:
175+
arguments.append('user=' + user)
176+
return GdalUtils.escapeAndJoin(arguments)
177+
156178
def getConsoleCommands(self):
157179
inLayer = self.getParameterValue(self.INPUT_LAYER)
158180
ogrLayer = ogrConnectionString(inLayer)[1:-1]
159181
shapeEncoding = self.getParameterValue(self.SHAPE_ENCODING)
160182
ssrs = unicode(self.getParameterValue(self.S_SRS))
161183
tsrs = unicode(self.getParameterValue(self.T_SRS))
162184
asrs = unicode(self.getParameterValue(self.A_SRS))
163-
host = unicode(self.getParameterValue(self.HOST))
164-
port = unicode(self.getParameterValue(self.PORT))
165-
user = unicode(self.getParameterValue(self.USER))
166-
dbname = unicode(self.getParameterValue(self.DBNAME))
167-
password = unicode(self.getParameterValue(self.PASSWORD))
168-
schema = unicode(self.getParameterValue(self.SCHEMA))
169185
table = unicode(self.getParameterValue(self.TABLE))
170186
pk = unicode(self.getParameterValue(self.PK))
171187
pkstring = "-lco FID=" + pk
@@ -203,18 +219,7 @@ def getConsoleCommands(self):
203219
arguments.append('-f')
204220
arguments.append('PostgreSQL')
205221
arguments.append('PG:"')
206-
if host:
207-
arguments.append(' host=' + host)
208-
if port:
209-
arguments.append('port=' + port)
210-
if dbname:
211-
arguments.append('dbname=' + dbname)
212-
if password:
213-
arguments.append('password=' + password)
214-
if schema:
215-
arguments.append('active_schema=' + schema)
216-
if user:
217-
arguments.append('user=' + user)
222+
arguments.append(self.getConnectionString())
218223
arguments.append('"')
219224
arguments.append(dimstring)
220225
arguments.append(ogrLayer)

‎python/plugins/processing/tests/GdalAlgorithmsTest.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
__revision__ = ':%H$'
2727

2828
import AlgorithmsTestBase
29+
from processing.algs.gdal.ogr2ogrtopostgis import Ogr2OgrToPostGis
2930

3031
import nose2
3132
import shutil
@@ -54,5 +55,52 @@ def test_definition_file(self):
5455
return 'gdal_algorithm_tests.yaml'
5556

5657

58+
class TestGdalOgr2OgrToPostgis(unittest.TestCase):
59+
60+
@classmethod
61+
def setUpClass(cls):
62+
#start_app()
63+
pass
64+
65+
@classmethod
66+
def tearDownClass(cls):
67+
pass
68+
69+
# See http://hub.qgis.org/issues/15706
70+
def test_getConnectionString(self):
71+
72+
obj = Ogr2OgrToPostGis()
73+
74+
cs = obj.getConnectionString()
75+
# NOTE: defaults are debatable, see
76+
# https://github.com/qgis/QGIS/pull/3607#issuecomment-253971020
77+
self.assertEquals(obj.getConnectionString(),
78+
"host=localhost port=5432 active_schema=public")
79+
80+
obj.setParameterValue('HOST', 'remote')
81+
self.assertEquals(obj.getConnectionString(),
82+
"host=remote port=5432 active_schema=public")
83+
84+
obj.setParameterValue('HOST', '')
85+
self.assertEquals(obj.getConnectionString(),
86+
"port=5432 active_schema=public")
87+
88+
obj.setParameterValue('PORT', '5555')
89+
self.assertEquals(obj.getConnectionString(),
90+
"port=5555 active_schema=public")
91+
92+
obj.setParameterValue('PORT', '')
93+
self.assertEquals(obj.getConnectionString(),
94+
"active_schema=public")
95+
96+
obj.setParameterValue('USER', 'usr')
97+
self.assertEquals(obj.getConnectionString(),
98+
"active_schema=public user=usr")
99+
100+
obj.setParameterValue('PASSWORD', 'pwd')
101+
self.assertEquals(obj.getConnectionString(),
102+
"password=pwd active_schema=public user=usr")
103+
104+
57105
if __name__ == '__main__':
58106
nose2.main()

0 commit comments

Comments
 (0)
Please sign in to comment.