Skip to content

Commit eeebd67

Browse files
committed
add test coverage for process.parent reuse case
1 parent 9c6505f commit eeebd67

File tree

1 file changed

+35
-1
lines changed

1 file changed

+35
-1
lines changed

scripts/tests/unit/test_schema_finalizer.py

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ def schema_process(self):
4747
'order': 2,
4848
'expected': [
4949
{'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'},
5052
]
5153
}
5254
},
@@ -143,30 +145,57 @@ def schema_server(self):
143145
}
144146
}
145147

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+
146171
# perform_reuse
147172

148173
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()}
150175
# If the test had multiple foreign destinations for user fields, we could compare them together instead
151176
finalizer.perform_reuse(fields)
152177
process_fields = fields['process']['fields']
153178
server_fields = fields['server']['fields']
154179
user_fields = fields['user']['fields']
180+
process_reuse_fields = fields['reuse']['fields']['process']['fields']
155181
# Expected reuse
156182
self.assertIn('parent', process_fields)
157183
self.assertIn('user', server_fields)
158184
self.assertIn('target', user_fields)
159185
self.assertIn('effective', user_fields)
186+
self.assertIn('parent', process_reuse_fields)
160187
# Sanity check for presence of leaf fields, after performing reuse
161188
self.assertIn('name', user_fields['target']['fields'])
162189
self.assertIn('name', user_fields['effective']['fields'])
163190
self.assertIn('name', server_fields['user']['fields'])
164191
self.assertIn('pid', process_fields['parent']['fields'])
192+
self.assertIn('pid', process_reuse_fields['parent']['fields'])
165193
# Ensure the parent field of reused fields is marked as intermediate
166194
self.assertTrue(server_fields['user']['field_details']['intermediate'])
167195
self.assertTrue(process_fields['parent']['field_details']['intermediate'])
168196
self.assertTrue(user_fields['target']['field_details']['intermediate'])
169197
self.assertTrue(user_fields['effective']['field_details']['intermediate'])
198+
self.assertTrue(process_reuse_fields['parent']['field_details']['intermediate'])
170199
# No unexpected cross-nesting
171200
self.assertNotIn('target', user_fields['target']['fields'])
172201
self.assertNotIn('target', user_fields['effective']['fields'])
@@ -176,6 +205,7 @@ def test_perform_reuse_with_foreign_reuse_and_self_reuse(self):
176205
self.assertIn('user.effective', fields['user']['schema_details']['nestings'])
177206
self.assertIn('user.target', fields['user']['schema_details']['nestings'])
178207
self.assertIn('server.user', fields['server']['schema_details']['nestings'])
208+
self.assertIn('reuse.process.parent', fields['reuse']['schema_details']['nestings'])
179209
# Attribute 'reused_here' lists nestings inside a destination schema
180210
self.assertIn({'full': 'process.parent', 'schema_name': 'process', 'short': 'short desc'},
181211
fields['process']['schema_details']['reused_here'])
@@ -185,6 +215,8 @@ def test_perform_reuse_with_foreign_reuse_and_self_reuse(self):
185215
fields['user']['schema_details']['reused_here'])
186216
self.assertIn({'full': 'server.user', 'schema_name': 'user', 'short': 'short desc'},
187217
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'])
188220
# Reused fields have an indication they're reused
189221
self.assertEqual(process_fields['parent']['field_details']['original_fieldset'], 'process',
190222
"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):
193225
self.assertEqual(server_fields['user']['field_details']['original_fieldset'], 'user',
194226
"The parent field of foreign reused fields should have 'original_fieldset' populated")
195227
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")
196230
# Original fieldset's fields must not be marked with 'original_fieldset='
197231
self.assertNotIn('original_fieldset', user_fields['name']['field_details'])
198232
self.assertNotIn('original_fieldset', process_fields['pid']['field_details'])

0 commit comments

Comments
 (0)