Skip to content

Commit d413c88

Browse files
committedMay 9, 2018
add UI form for testing
1 parent 1869929 commit d413c88

File tree

3 files changed

+105
-3
lines changed

3 files changed

+105
-3
lines changed
 

‎src/core/qgseditformconfig.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ bool QgsEditFormConfig::setUiForm( const QString &ui, QString *errMsg )
182182
loop.exec( QEventLoop::ExcludeUserInputEvents );
183183

184184
QNetworkReply *reply = fetcher.reply();
185-
if ( reply )
185+
if ( reply && reply->error() == QNetworkReply::NoError )
186186
{
187187
QTemporaryFile *localFile = new QTemporaryFile( QStringLiteral( "XXXXXX.ui" ) );
188188
if ( localFile->open() )
@@ -196,7 +196,7 @@ bool QgsEditFormConfig::setUiForm( const QString &ui, QString *errMsg )
196196
}
197197
if ( !success && errMsg )
198198
{
199-
*errMsg = QString( "Could not load UI from %1" ).arg( ui );
199+
*errMsg = QString( "Could not load UI from %1 (%2)" ).arg( ui ).arg( reply->errorString() );
200200
}
201201
}
202202
else

‎tests/src/python/test_qgseditformconfig.py

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,19 @@
1313
__revision__ = '$Format:%H$'
1414

1515
import qgis # NOQA
16+
import os
17+
import filecmp
1618

1719
from qgis.core import (QgsVectorLayer,
18-
QgsReadWriteContext)
20+
QgsReadWriteContext,
21+
QgsEditFormConfig)
1922
from qgis.gui import QgsGui
2023

2124
from qgis.testing import start_app, unittest
2225
from qgis.PyQt.QtXml import QDomDocument, QDomElement
26+
from utilities import unitTestDataPath
2327

28+
TEST_DATA_DIR = unitTestDataPath()
2429
start_app()
2530

2631

@@ -57,6 +62,33 @@ def testReadWriteXml(self):
5762
self.assertFalse(config2.labelOnTop(0))
5863
self.assertTrue(config2.labelOnTop(1))
5964

65+
def testFormUi(self):
66+
layer = self.createLayer()
67+
config = layer.editFormConfig()
68+
69+
uiLocal = os.path.join(TEST_DATA_DIR, 'layer_attribute_form.ui')
70+
(ok, _) = config.setUiForm(uiLocal)
71+
self.assertTrue(ok)
72+
self.assertEqual(config.layout(), QgsEditFormConfig.UiFileLayout)
73+
self.assertEqual(config.uiForm(QgsEditFormConfig.Original), uiLocal)
74+
self.assertEqual(config.uiForm(QgsEditFormConfig.LocalCopy), uiLocal)
75+
76+
uiUrl = 'https://raw.githubusercontent.com/3nids/QGIS/7ac09b1f9b1921e7f95ab077d97dcf0dfd57be4a/tests/testdata/layer_attribute_form.ui'
77+
(ok, _) = config.setUiForm(uiUrl)
78+
self.assertTrue(ok)
79+
self.assertEqual(config.layout(), QgsEditFormConfig.UiFileLayout)
80+
self.assertEqual(config.uiForm(QgsEditFormConfig.Original), uiUrl)
81+
localCopy = config.uiForm(QgsEditFormConfig.LocalCopy)
82+
self.assertNotEqual(localCopy, uiUrl)
83+
filecmp.cmp(localCopy, uiLocal)
84+
85+
uiBadUrl = 'http://www.qwertzuiopasdfghjklyxcvbnm.qwer/xxx.ui'
86+
(ok, _) = config.setUiForm(uiBadUrl)
87+
self.assertFalse(ok)
88+
self.assertEqual(config.layout(), QgsEditFormConfig.GeneratedLayout)
89+
self.assertEqual(config.uiForm(QgsEditFormConfig.Original), uiBadUrl)
90+
self.assertEqual(config.uiForm(QgsEditFormConfig.LocalCopy), '')
91+
6092
def testReadOnly(self):
6193
layer = self.createLayer()
6294
config = layer.editFormConfig()
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<ui version="4.0">
3+
<class>CustomUiTest</class>
4+
<widget class="QDialog" name="CustomUiTest">
5+
<property name="geometry">
6+
<rect>
7+
<x>0</x>
8+
<y>0</y>
9+
<width>176</width>
10+
<height>119</height>
11+
</rect>
12+
</property>
13+
<property name="windowTitle">
14+
<string>Dialog</string>
15+
</property>
16+
<layout class="QGridLayout" name="gridLayout">
17+
<item row="2" column="0">
18+
<widget class="QDialogButtonBox" name="buttonBox">
19+
<property name="orientation">
20+
<enum>Qt::Horizontal</enum>
21+
</property>
22+
<property name="standardButtons">
23+
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
24+
</property>
25+
</widget>
26+
</item>
27+
<item row="0" column="0">
28+
<widget class="QLineEdit" name="fldtxt"/>
29+
</item>
30+
<item row="1" column="0">
31+
<widget class="QSpinBox" name="fldint"/>
32+
</item>
33+
</layout>
34+
</widget>
35+
<resources/>
36+
<connections>
37+
<connection>
38+
<sender>buttonBox</sender>
39+
<signal>accepted()</signal>
40+
<receiver>CustomUiTest</receiver>
41+
<slot>accept()</slot>
42+
<hints>
43+
<hint type="sourcelabel">
44+
<x>248</x>
45+
<y>254</y>
46+
</hint>
47+
<hint type="destinationlabel">
48+
<x>157</x>
49+
<y>274</y>
50+
</hint>
51+
</hints>
52+
</connection>
53+
<connection>
54+
<sender>buttonBox</sender>
55+
<signal>rejected()</signal>
56+
<receiver>CustomUiTest</receiver>
57+
<slot>reject()</slot>
58+
<hints>
59+
<hint type="sourcelabel">
60+
<x>316</x>
61+
<y>260</y>
62+
</hint>
63+
<hint type="destinationlabel">
64+
<x>286</x>
65+
<y>274</y>
66+
</hint>
67+
</hints>
68+
</connection>
69+
</connections>
70+
</ui>

0 commit comments

Comments
 (0)
Please sign in to comment.