@@ -47,6 +47,8 @@ def schema_process(self):
47
47
'order' : 2 ,
48
48
'expected' : [
49
49
{'full' : 'process.parent' , 'at' : 'process' , 'as' : 'parent' },
50
+ {'full' : 'reuse.process' , 'at' : 'reuse' , 'as' : 'process' },
51
+ {'full' : 'reuse.process.parent' , 'at' : 'reuse.process' , 'as' : 'parent' },
50
52
]
51
53
}
52
54
},
@@ -143,30 +145,57 @@ def schema_server(self):
143
145
}
144
146
}
145
147
148
+ def schema_process_reuse (self ):
149
+ return {
150
+ 'reuse' : {
151
+ 'schema_details' : {
152
+ 'title' : 'Reuse' ,
153
+ 'root' : False
154
+ },
155
+ 'field_details' : {
156
+ 'name' : 'Reuse' ,
157
+ 'node_name' : 'Reuse' ,
158
+ 'short' : 'reuse example' ,
159
+ },
160
+ 'fields' : {
161
+ 'pid' : {
162
+ 'field_details' : {
163
+ 'name' : 'pid' ,
164
+ 'node_name' : 'pid' ,
165
+ }
166
+ }
167
+ }
168
+ }
169
+ }
170
+
146
171
# perform_reuse
147
172
148
173
def test_perform_reuse_with_foreign_reuse_and_self_reuse (self ):
149
- fields = {** self .schema_user (), ** self .schema_server (), ** self .schema_process ()}
174
+ fields = {** self .schema_user (), ** self .schema_server (), ** self .schema_process (), ** self . schema_process_reuse () }
150
175
# If the test had multiple foreign destinations for user fields, we could compare them together instead
151
176
finalizer .perform_reuse (fields )
152
177
process_fields = fields ['process' ]['fields' ]
153
178
server_fields = fields ['server' ]['fields' ]
154
179
user_fields = fields ['user' ]['fields' ]
180
+ process_reuse_fields = fields ['reuse' ]['fields' ]['process' ]['fields' ]
155
181
# Expected reuse
156
182
self .assertIn ('parent' , process_fields )
157
183
self .assertIn ('user' , server_fields )
158
184
self .assertIn ('target' , user_fields )
159
185
self .assertIn ('effective' , user_fields )
186
+ self .assertIn ('parent' , process_reuse_fields )
160
187
# Sanity check for presence of leaf fields, after performing reuse
161
188
self .assertIn ('name' , user_fields ['target' ]['fields' ])
162
189
self .assertIn ('name' , user_fields ['effective' ]['fields' ])
163
190
self .assertIn ('name' , server_fields ['user' ]['fields' ])
164
191
self .assertIn ('pid' , process_fields ['parent' ]['fields' ])
192
+ self .assertIn ('pid' , process_reuse_fields ['parent' ]['fields' ])
165
193
# Ensure the parent field of reused fields is marked as intermediate
166
194
self .assertTrue (server_fields ['user' ]['field_details' ]['intermediate' ])
167
195
self .assertTrue (process_fields ['parent' ]['field_details' ]['intermediate' ])
168
196
self .assertTrue (user_fields ['target' ]['field_details' ]['intermediate' ])
169
197
self .assertTrue (user_fields ['effective' ]['field_details' ]['intermediate' ])
198
+ self .assertTrue (process_reuse_fields ['parent' ]['field_details' ]['intermediate' ])
170
199
# No unexpected cross-nesting
171
200
self .assertNotIn ('target' , user_fields ['target' ]['fields' ])
172
201
self .assertNotIn ('target' , user_fields ['effective' ]['fields' ])
@@ -176,6 +205,7 @@ def test_perform_reuse_with_foreign_reuse_and_self_reuse(self):
176
205
self .assertIn ('user.effective' , fields ['user' ]['schema_details' ]['nestings' ])
177
206
self .assertIn ('user.target' , fields ['user' ]['schema_details' ]['nestings' ])
178
207
self .assertIn ('server.user' , fields ['server' ]['schema_details' ]['nestings' ])
208
+ self .assertIn ('reuse.process.parent' , fields ['reuse' ]['schema_details' ]['nestings' ])
179
209
# Attribute 'reused_here' lists nestings inside a destination schema
180
210
self .assertIn ({'full' : 'process.parent' , 'schema_name' : 'process' , 'short' : 'short desc' },
181
211
fields ['process' ]['schema_details' ]['reused_here' ])
@@ -185,6 +215,8 @@ def test_perform_reuse_with_foreign_reuse_and_self_reuse(self):
185
215
fields ['user' ]['schema_details' ]['reused_here' ])
186
216
self .assertIn ({'full' : 'server.user' , 'schema_name' : 'user' , 'short' : 'short desc' },
187
217
fields ['server' ]['schema_details' ]['reused_here' ])
218
+ self .assertIn ({'full' : 'reuse.process.parent' , 'schema_name' : 'process' , 'short' : 'short desc' },
219
+ fields ['reuse' ]['schema_details' ]['reused_here' ])
188
220
# Reused fields have an indication they're reused
189
221
self .assertEqual (process_fields ['parent' ]['field_details' ]['original_fieldset' ], 'process' ,
190
222
"The parent field of reused fields should have 'original_fieldset' populated" )
@@ -193,6 +225,8 @@ def test_perform_reuse_with_foreign_reuse_and_self_reuse(self):
193
225
self .assertEqual (server_fields ['user' ]['field_details' ]['original_fieldset' ], 'user' ,
194
226
"The parent field of foreign reused fields should have 'original_fieldset' populated" )
195
227
self .assertEqual (server_fields ['user' ]['fields' ]['name' ]['field_details' ]['original_fieldset' ], 'user' )
228
+ self .assertEqual (process_reuse_fields ['parent' ]['field_details' ]['original_fieldset' ], 'process' ,
229
+ "The parent field of reused fields should have 'original_fieldset' populated" )
196
230
# Original fieldset's fields must not be marked with 'original_fieldset='
197
231
self .assertNotIn ('original_fieldset' , user_fields ['name' ]['field_details' ])
198
232
self .assertNotIn ('original_fieldset' , process_fields ['pid' ]['field_details' ])
0 commit comments