import json, pathlib, sys, unittest
ROOT=pathlib.Path(__file__).resolve().parents[1]
sys.path.insert(0,str(ROOT/'src'))
from supply_chain_evidence import evaluate, apply_probe
class Contract(unittest.TestCase):
 @classmethod
 def setUpClass(cls):
  cls.base=json.loads((ROOT/'fixture/baseline-release.json').read_text()); cls.policy=json.loads((ROOT/'fixture/policy.json').read_text()); cls.probes=json.loads((ROOT/'fixture/probe-cases.json').read_text())
 def test_baseline(self): self.assertEqual(evaluate(self.base,self.policy)['decision'],'ACCEPT_EVIDENCE_SET')
 def test_probes(self):
  for name,p in self.probes.items(): self.assertEqual(evaluate(apply_probe(self.base,p),self.policy)['decision'],p['expected_decision'],name)
if __name__=='__main__': unittest.main()
