#!/usr/bin/env python3
import copy,json,unittest
from pathlib import Path
from compare_cli import compare_cli
p=Path(__file__).parent;B=json.loads((p/'apifox-cli-evidence-B.json').read_text());C=json.loads((p/'apifox-cli-evidence-C.json').read_text())
class NativeCLIComparison(unittest.TestCase):
    def test_actual(self):self.assertEqual(compare_cli(B,C)['captured_full_wire_pairs'],6)
    def test_mutations(self):
        edits=[lambda x:x['wire'][0].update(scenario=x['wire'][1]['scenario']),lambda x:x['wire'][0].update(elapsed_ms=float('nan')),lambda x:x['wire'][0].update(method='POST'),lambda x:x['wire'][0]['body']['data']['detail'].update(enabled=0),lambda x:x['actual_runs'][0]['stats']['assertions'].update(failed=1),lambda x:x['independent_original_database'].update(actual_DML=1),lambda x:x['wire'][0].update(CLI_all_assertions_passed=False)]
        for edit in edits:
            with self.subTest(index=edits.index(edit)):
                bad=copy.deepcopy(C);edit(bad)
                with self.assertRaises(AssertionError):compare_cli(B,bad)
if __name__=='__main__':unittest.main()
