import sys
import unittest
from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
from wflib import tasks as T
def ready(done):
doc = T.parse(f"# T\n\n## Pending\n\n- **t-x** [P2] (<1h): X.\n Done: {done}\n")
return doc.sections[0].items[0].runner_ready if hasattr(doc, "sections") else None
class HumanDoneTest(unittest.TestCase):
def test_owner_bound_subject(self):
self.assertTrue(ready("owner-bound task with Done not counted"))
def test_owner_actions(self):
self.assertFalse(ready("owner confirms X"))
self.assertFalse(ready("owner approves X"))
self.assertFalse(ready("report to owner"))
self.assertFalse(ready("confirm it works"))
def test_word_alone_is_fine(self):
self.assertTrue(ready("owner-facing docs updated; owner-private names scrubbed"))
self.assertTrue(ready("tests confirm the parser handles X"))
self.assertTrue(ready("the owner file is read"))
def test_more_actions(self):
self.assertFalse(ready("owner says it is fine"))
self.assertFalse(ready("Owner tests it"))
self.assertFalse(ready("confirm with the owner"))
def test_match_exposed(self):
doc = T.parse("# T\n\n## Pending\n\n- **t-x** [P2] (<1h): X.\n Done: owner approves X\n")
self.assertEqual(doc.sections[0].items[0].human_done_match, "owner approves")
if __name__ == "__main__":
unittest.main()