import json
import sys
import unittest
from pathlib import Path


HARNESS_ROOT = Path(__file__).resolve().parents[1]
sys.path.insert(0, str(HARNESS_ROOT))

from validate_task_contract import validate_file  # noqa: E402


class TaskContractV1Test(unittest.TestCase):
    def test_complete_task_is_accepted(self):
        errors = validate_file(HARNESS_ROOT / "examples/task-v1-valid.json")

        self.assertEqual([], errors)

    def test_incomplete_task_is_rejected(self):
        errors = validate_file(HARNESS_ROOT / "examples/task-v1-invalid.json")

        self.assertIn("owner is required", errors)
        self.assertIn("acceptance_criteria must contain at least 1 item", errors)

    def test_examples_describe_opposite_outcomes(self):
        valid = json.loads((HARNESS_ROOT / "examples/task-v1-valid.json").read_text())
        invalid = json.loads((HARNESS_ROOT / "examples/task-v1-invalid.json").read_text())

        self.assertIn("owner", valid)
        self.assertNotIn("owner", invalid)


if __name__ == "__main__":
    unittest.main()
