|
25 | 25 | TestCase,
|
26 | 26 | unittest
|
27 | 27 | )
|
| 28 | + |
28 | 29 | QGISAPP, CANVAS, IFACE, PARENT = getQgisTestApp()
|
29 | 30 |
|
| 31 | + |
30 | 32 | def createReferencingLayer():
|
31 | 33 | layer = QgsVectorLayer("Point?field=fldtxt:string&field=foreignkey:integer",
|
32 | 34 | "referencinglayer", "memory")
|
33 | 35 | pr = layer.dataProvider()
|
34 | 36 | f1 = QgsFeature()
|
35 |
| - f1.setFields( layer.pendingFields() ) |
| 37 | + f1.setFields(layer.pendingFields()) |
36 | 38 | f1.setAttributes(["test1", 123])
|
37 |
| - f1.setGeometry(QgsGeometry.fromPoint(QgsPoint(100,200))) |
| 39 | + f1.setGeometry(QgsGeometry.fromPoint(QgsPoint(100, 200))) |
38 | 40 | f2 = QgsFeature()
|
39 |
| - f2.setFields( layer.pendingFields() ) |
| 41 | + f2.setFields(layer.pendingFields()) |
40 | 42 | f2.setAttributes(["test2", 123])
|
41 |
| - f2.setGeometry(QgsGeometry.fromPoint(QgsPoint(101,201))) |
42 |
| - assert pr.addFeatures([f1,f2]) |
| 43 | + f2.setGeometry(QgsGeometry.fromPoint(QgsPoint(101, 201))) |
| 44 | + assert pr.addFeatures([f1, f2]) |
43 | 45 | return layer
|
44 | 46 |
|
| 47 | + |
45 | 48 | def createReferencedLayer():
|
46 | 49 | layer = QgsVectorLayer(
|
47 | 50 | "Point?field=x:string&field=y:integer&field=z:integer",
|
48 | 51 | "referencedlayer", "memory")
|
49 | 52 | pr = layer.dataProvider()
|
50 | 53 | f1 = QgsFeature()
|
51 |
| - f1.setFields( layer.pendingFields() ) |
| 54 | + f1.setFields(layer.pendingFields()) |
52 | 55 | f1.setAttributes(["foo", 123, 321])
|
53 |
| - f1.setGeometry(QgsGeometry.fromPoint(QgsPoint(1,1))) |
| 56 | + f1.setGeometry(QgsGeometry.fromPoint(QgsPoint(1, 1))) |
54 | 57 | f2 = QgsFeature()
|
55 |
| - f2.setFields( layer.pendingFields() ) |
| 58 | + f2.setFields(layer.pendingFields()) |
56 | 59 | f2.setAttributes(["bar", 456, 654])
|
57 |
| - f2.setGeometry(QgsGeometry.fromPoint(QgsPoint(2,2))) |
| 60 | + f2.setGeometry(QgsGeometry.fromPoint(QgsPoint(2, 2))) |
58 | 61 | f3 = QgsFeature()
|
59 |
| - f3.setFields( layer.pendingFields() ) |
| 62 | + f3.setFields(layer.pendingFields()) |
60 | 63 | f3.setAttributes(["foobar", 789, 554])
|
61 |
| - f3.setGeometry(QgsGeometry.fromPoint(QgsPoint(2,3))) |
| 64 | + f3.setGeometry(QgsGeometry.fromPoint(QgsPoint(2, 3))) |
62 | 65 | assert pr.addFeatures([f1, f2, f3])
|
63 | 66 | return layer
|
64 | 67 |
|
| 68 | + |
65 | 69 | def formatAttributes(attrs):
|
66 |
| - return repr([ unicode(a) for a in attrs ]) |
| 70 | + return repr([unicode(a) for a in attrs]) |
| 71 | + |
67 | 72 |
|
68 |
| -class TestQgsRelation( TestCase ): |
| 73 | +class TestQgsRelation(TestCase): |
| 74 | + def setUp(self): |
| 75 | + self.referencedLayer = createReferencedLayer() |
| 76 | + self.referencingLayer = createReferencingLayer() |
| 77 | + QgsMapLayerRegistry.instance().addMapLayers([self.referencedLayer, self.referencingLayer]) |
| 78 | + |
| 79 | + def tearDown(self): |
| 80 | + QgsMapLayerRegistry.instance().removeAllMapLayers() |
69 | 81 |
|
70 | 82 | def test_isValid(self):
|
71 |
| - referencedLayer = createReferencedLayer() |
72 |
| - referencingLayer = createReferencingLayer() |
73 |
| - QgsMapLayerRegistry.instance().addMapLayers([referencedLayer,referencingLayer]) |
74 | 83 |
|
75 | 84 | rel = QgsRelation()
|
76 | 85 | assert not rel.isValid()
|
77 | 86 |
|
78 |
| - rel.setRelationId( 'rel1' ) |
| 87 | + rel.setRelationId('rel1') |
79 | 88 | assert not rel.isValid()
|
80 | 89 |
|
81 |
| - rel.setRelationName( 'Relation Number One' ) |
| 90 | + rel.setRelationName('Relation Number One') |
82 | 91 | assert not rel.isValid()
|
83 | 92 |
|
84 |
| - rel.setReferencingLayer( referencingLayer.id() ) |
| 93 | + rel.setReferencingLayer(self.referencingLayer.id()) |
85 | 94 | assert not rel.isValid()
|
86 | 95 |
|
87 |
| - rel.setReferencedLayer( referencedLayer.id() ) |
| 96 | + rel.setReferencedLayer(self.referencedLayer.id()) |
88 | 97 | assert not rel.isValid()
|
89 | 98 |
|
90 |
| - rel.addFieldPair( 'foreignkey', 'y' ) |
| 99 | + rel.addFieldPair('foreignkey', 'y') |
91 | 100 | assert rel.isValid()
|
92 | 101 |
|
93 |
| - QgsMapLayerRegistry.instance().removeAllMapLayers() |
94 | 102 |
|
95 | 103 | def test_getRelatedFeatures(self):
|
96 |
| - referencedLayer = createReferencedLayer() |
97 |
| - referencingLayer = createReferencingLayer() |
98 |
| - QgsMapLayerRegistry.instance().addMapLayers([referencedLayer,referencingLayer]) |
99 |
| - |
100 | 104 | rel = QgsRelation()
|
101 | 105 |
|
102 |
| - rel.setRelationId( 'rel1' ) |
103 |
| - rel.setRelationName( 'Relation Number One' ) |
104 |
| - rel.setReferencingLayer( referencingLayer.id() ) |
105 |
| - rel.setReferencedLayer( referencedLayer.id() ) |
106 |
| - rel.addFieldPair( 'foreignkey', 'y' ) |
| 106 | + rel.setRelationId('rel1') |
| 107 | + rel.setRelationName('Relation Number One') |
| 108 | + rel.setReferencingLayer(self.referencingLayer.id()) |
| 109 | + rel.setReferencedLayer(self.referencedLayer.id()) |
| 110 | + rel.addFieldPair('foreignkey', 'y') |
107 | 111 |
|
108 |
| - feat = referencedLayer.getFeatures().next() |
| 112 | + feat = self.referencedLayer.getFeatures().next() |
109 | 113 |
|
110 |
| - it = rel.getRelatedFeatures( feat ) |
| 114 | + it = rel.getRelatedFeatures(feat) |
111 | 115 |
|
112 |
| - [ a.attributes() for a in it ] == [[u'test1', 123], [u'test2', 123]] |
| 116 | + assert [a.attributes() for a in it] == [[u'test1', 123], [u'test2', 123]] |
113 | 117 |
|
114 |
| - QgsMapLayerRegistry.instance().removeAllMapLayers() |
| 118 | + def test_getReferencedFeature(self): |
| 119 | + rel = QgsRelation() |
| 120 | + rel.setRelationId('rel1') |
| 121 | + rel.setRelationName('Relation Number One') |
| 122 | + rel.setReferencingLayer(self.referencingLayer.id()) |
| 123 | + rel.setReferencedLayer(self.referencedLayer.id()) |
| 124 | + rel.addFieldPair('foreignkey', 'y') |
115 | 125 |
|
116 |
| - def test_fieldPairs(self): |
117 |
| - referencedLayer = createReferencedLayer() |
118 |
| - referencingLayer = createReferencingLayer() |
119 |
| - QgsMapLayerRegistry.instance().addMapLayers([referencedLayer,referencingLayer]) |
| 126 | + feat = self.referencingLayer.getFeatures().next() |
120 | 127 |
|
121 |
| - rel = QgsRelation() |
| 128 | + f = rel.getReferencedFeature(feat) |
122 | 129 |
|
123 |
| - rel.setRelationId( 'rel1' ) |
124 |
| - rel.setRelationName( 'Relation Number One' ) |
125 |
| - rel.setReferencingLayer( referencingLayer.id() ) |
126 |
| - rel.setReferencedLayer( referencedLayer.id() ) |
127 |
| - rel.addFieldPair( 'foreignkey', 'y' ) |
| 130 | + assert f.isValid() |
| 131 | + assert f[0] == 'foo' |
128 | 132 |
|
129 |
| - assert( rel.fieldPairs() == { 'foreignkey': 'y'} ) |
130 | 133 |
|
131 |
| - QgsMapLayerRegistry.instance().removeAllMapLayers() |
| 134 | + def test_fieldPairs(self): |
| 135 | + rel = QgsRelation() |
| 136 | + |
| 137 | + rel.setRelationId('rel1') |
| 138 | + rel.setRelationName('Relation Number One') |
| 139 | + rel.setReferencingLayer(self.referencingLayer.id()) |
| 140 | + rel.setReferencedLayer(self.referencedLayer.id()) |
| 141 | + rel.addFieldPair('foreignkey', 'y') |
| 142 | + |
| 143 | + assert (rel.fieldPairs() == {'foreignkey': 'y'}) |
132 | 144 |
|
133 | 145 |
|
134 | 146 | if __name__ == '__main__':
|
|
0 commit comments