Skip to content

Commit 6731eaa

Browse files
strkalexbruy
authored andcommittedOct 18, 2016
Add test for setting up connection string
Conflicts: python/plugins/processing/algs/gdal/ogr2ogrtopostgis.py
1 parent d63222e commit 6731eaa

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
@@ -154,19 +154,35 @@ def defineCharacteristics(self):
154154
self.addParameter(ParameterString(self.OPTIONS,
155155
self.tr('Additional creation options'), '', optional=True))
156156

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