Never file a part marker under its own PC
This commit is contained in:
@@ -1008,3 +1008,41 @@ def test_an_ordinary_pc_gets_no_marker(
|
||||
'pctype': 'gea-shopfloor-collections'},
|
||||
headers={'X-API-Key': collector_key})
|
||||
assert Asset.query.filter(Asset.assetnumber.like('%-PARTMARKER')).all() == []
|
||||
|
||||
|
||||
def test_a_marker_is_never_filed_under_its_own_pc(
|
||||
client, db, collector_key, computer_assettype, machine_3015):
|
||||
"""A PC first seen before the machine-number fix was created with the
|
||||
machine number as its OWN asset number, and that is never overwritten. So
|
||||
resolving the number can return the PC itself, and filing the marker partof
|
||||
its own PC reads on the machine page as the PC being the operation."""
|
||||
from shopdb.core.models import Asset, AssetRelationship, RelationshipType
|
||||
from plugins.computers.models import Computer
|
||||
|
||||
db.session.add(RelationshipType(relationshiptype='partof',
|
||||
isdirectional=True))
|
||||
db.session.commit()
|
||||
|
||||
# A legacy PC: its own asset carries the machine number, and no separate
|
||||
# asset for the operation exists.
|
||||
client.post('/api/collector/computers',
|
||||
json={'hostname': 'LEGACYPC',
|
||||
'pctype': 'gea-shopfloor-partmarker'},
|
||||
headers={'X-API-Key': collector_key})
|
||||
comp = Computer.query.filter(Computer.hostname.ilike('LEGACYPC')).first()
|
||||
comp.asset.assetnumber = '0615'
|
||||
db.session.commit()
|
||||
|
||||
r = client.post('/api/collector/computers',
|
||||
json={'hostname': 'LEGACYPC', 'machinenumber': '0615',
|
||||
'pctype': 'gea-shopfloor-partmarker'},
|
||||
headers={'X-API-Key': collector_key})
|
||||
|
||||
partof = RelationshipType.query.filter_by(relationshiptype='partof').first()
|
||||
links = AssetRelationship.query.filter_by(
|
||||
relationshiptypeid=partof.relationshiptypeid, isactive=True).all()
|
||||
targets = [db.session.get(Asset, rel.targetassetid).assetid
|
||||
for rel in links]
|
||||
assert comp.assetid not in targets, 'marker filed under its own PC'
|
||||
assert any("own asset number" in w
|
||||
for w in r.get_json()['data']['warnings'])
|
||||
|
||||
Reference in New Issue
Block a user