feat: scoped responsibility selectors, home card layouts and network topology
This commit is contained in:
@@ -28,3 +28,23 @@ test('camera recorder and general device records appear in one catalog without m
|
||||
assert.deepEqual(m.catalog(state).map(d=>d.deviceType),['摄像机','录像机','冰箱']);assert.equal(JSON.stringify(state),before);
|
||||
assert.equal(m.groups(devices,[],sites).length,1);
|
||||
});
|
||||
|
||||
test('same-name people with different references form separate responsibility groups',()=>{
|
||||
const rows=[{id:'a',managerName:'张伟',managerRef:'user:one'},{id:'b',managerName:'张伟',managerRef:'user:two'}];
|
||||
assert.equal(m.groups(rows,['manager'],[]).length,2);
|
||||
});
|
||||
|
||||
test('network topology preserves explicit uplinks and remains usable with missing or cyclic parents',()=>{
|
||||
const data=[{id:'r'},{id:'c',uplinkId:'r'},{id:'p',uplinkId:'hidden'}];
|
||||
const tree=m.topology(data);assert.deepEqual(tree.children.get('r').map(x=>x.id),['c']);assert.equal(tree.parents.get('p'),'');
|
||||
assert.equal(m.topology([{id:'a',uplinkId:'b'},{id:'b',uplinkId:'a'}]).children.get('').length,2);
|
||||
});
|
||||
test('network summary distinguishes recorder stream source from physical camera address',()=>{
|
||||
const n=m.network({id:'a',managementHost:'192.168.8.160',networkAccess:'tailscale'},{cameras:[{assetId:'a',host:'192.168.3.135',sourceKind:'recorder',recorderId:'r',archiveSource:'recorder',archiveRecorderId:'r'}]});
|
||||
assert.deepEqual(n.hosts,['192.168.8.160']);assert.deepEqual(n.via,['r']);assert.deepEqual(n.archiveVia,['r']);assert.equal(n.access,'tailscale');
|
||||
});
|
||||
|
||||
test('configured camera address overrides an old inventory address and is searchable',()=>{
|
||||
const rows=m.catalog({assets:[{id:'a',managementHost:'192.168.1.20'}],cameras:[{assetId:'a',host:'192.168.1.30',sourceKind:'direct'}]});
|
||||
assert.deepEqual(rows[0].networkHosts,['192.168.1.30']);assert.equal(m.matches(rows[0],'192.168.1.30',[]),true);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user