Bind captured names to typed case entities with provenance
This commit is contained in:
1 parent
3bf7b5bba7
commit
aa6958165d
15 files changed
+285
-23
No files matched your search
@@ -133,3 +133,34 @@ def test_casebuilder_links_entities_and_preserves_prior_inputs(case_setup):
|
||||
@pytest.mark.parametrize('field',['max_queries','max_depth','max_relationships'])
|
||||
def test_invalid_limits_rejected(field):
|
||||
with pytest.raises(ToolError):ContextExpansion(ProjectResearch({}),{field:True})
|
||||
|
||||
|
||||
def test_typed_names_keep_exact_id_and_name_row_provenance():
|
||||
from viano_bug_analysis.analysis.quality import bind_entity_names, unnamed_entity_reasons
|
||||
service=ProjectResearch({},database=RelatedData())
|
||||
settings={'relationships':[rule()], 'entities':[{'entity_type':'device','table':'devices',
|
||||
'column':'id','name_column':'name','columns':['id','name','script']}]}
|
||||
additions,facts,_,_=ContextExpansion(service,settings).collect([initial()])
|
||||
named=next(f for f in facts if f['name']=='project_entity_name')
|
||||
value=named['value']
|
||||
assert (value['type'],value['id'],value['name'])==('device','22','Capture device')
|
||||
capture=json.loads(additions[value['provenance']['source_ref']])
|
||||
assert capture['result']['items'][0]['row']['id']==22
|
||||
assert value['provenance']['id_pointer']=='/result/items/0/row/id'
|
||||
assert value['provenance']['json_pointer']=='/result/items/0/row/name'
|
||||
context={'sources':{'F0001':{'kind':'fact','data':named},
|
||||
'N0001':{'kind':'entity','data':{'type':'device','id':'22'}},
|
||||
'N0002':{'kind':'entity','data':{'type':'task','id':'22'}},
|
||||
'N0003':{'kind':'entity','data':{'type':'device','id':'23'}}}}
|
||||
bind_entity_names(context)
|
||||
assert context['sources']['N0001']['data']['name_bindings'][0]['source_id']=='F0001'
|
||||
assert set(unnamed_entity_reasons(context))=={'N0002','N0003'}
|
||||
before=json.dumps(context,sort_keys=True)
|
||||
bind_entity_names(context)
|
||||
assert json.dumps(context,sort_keys=True)==before
|
||||
|
||||
|
||||
def test_invalid_name_rule_is_a_controlled_configuration_error():
|
||||
with pytest.raises(ToolError,match='PROJECT_ENRICHMENT_CONFIG'):
|
||||
ContextExpansion(ProjectResearch({}),{'entities':[{'entity_type':'device','table':'devices',
|
||||
'column':'id','name_column':'name','columns':['id']}]})
|
||||
Reference in new issue
Block a user