Files
core/tests/rules/simple-defeasible.test.js
T

63 lines
1.9 KiB
JavaScript
Raw Normal View History

import { Arbiter } from '../../src/core/Arbiter.js';
import { describe, it, beforeEach } from 'node:test';
import assert from 'node:assert/strict';
describe('Simple Defeasible Logic Debug', () => {
let arbiter;
beforeEach(() => {
arbiter = new Arbiter({ embeddingDimensions: 256 });
// Set up basic entities
arbiter.addNode('user:alice', 'user');
arbiter.addNode('doc:test', 'document');
// Set up basic relations
arbiter.setRelationConfig('can_access', { type: 'direct' });
arbiter.setRelationConfig('is_blocked', { type: 'direct' });
});
it('tests basic union logic', () => {
// Set up user access
arbiter.addRelation('user:alice', 'can_access', 'doc:test', {
value: 1.0,
possibility: 1.0,
changed_last_at: Date.now()
});
// Test simple union
arbiter.setRelationConfig('simple_union', {
union: [
{ type: 'direct', relation: 'can_access' }
]
});
const result = arbiter.authChecker.check('user:alice', 'simple_union', 'doc:test');
if (process.env.TEST_DEBUG === '1') console.log('Simple union result:', result);
assert.ok(result.possibility > 0, `Expected some possibility, got ${result.possibility}`);
});
it('tests basic intersection logic', () => {
// Set up user access
arbiter.addRelation('user:alice', 'can_access', 'doc:test', {
value: 1.0,
possibility: 1.0,
changed_last_at: Date.now()
});
// Test simple intersection
arbiter.setRelationConfig('simple_intersection', {
intersection: [
{ type: 'direct', relation: 'can_access' }
]
});
const result = arbiter.authChecker.check('user:alice', 'simple_intersection', 'doc:test');
if (process.env.TEST_DEBUG === '1') console.log('Simple intersection result:', result);
assert.ok(result.possibility > 0, `Expected some possibility, got ${result.possibility}`);
});
});