diff --git a/tests/scripts/__init__.py b/tests/scripts/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/scripts/ci/__init__.py b/tests/scripts/ci/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/scripts/ci/test_pr_review_merge_scheduler.py b/tests/scripts/ci/test_pr_review_merge_scheduler.py new file mode 100644 index 0000000..6bbbbd6 --- /dev/null +++ b/tests/scripts/ci/test_pr_review_merge_scheduler.py @@ -0,0 +1,80 @@ +import pytest + +from scripts.ci.pr_review_merge_scheduler import is_opencode_context + +def test_is_opencode_context_checkrun_name(): + node = { + "__typename": "CheckRun", + "name": "opencode-review", + } + assert is_opencode_context(node) is True + +def test_is_opencode_context_checkrun_workflow_name(): + node = { + "__typename": "CheckRun", + "name": "other-check", + "checkSuite": { + "workflowRun": { + "workflow": { + "name": "OpenCode Review" + } + } + } + } + assert is_opencode_context(node) is True + +def test_is_opencode_context_checkrun_false(): + node = { + "__typename": "CheckRun", + "name": "other-check", + "checkSuite": { + "workflowRun": { + "workflow": { + "name": "Other Workflow" + } + } + } + } + assert is_opencode_context(node) is False + +def test_is_opencode_context_checkrun_missing_fields(): + node = { + "__typename": "CheckRun", + "name": "other-check", + "checkSuite": {} + } + assert is_opencode_context(node) is False + + node2 = { + "__typename": "CheckRun", + "name": "other-check", + # missing checkSuite entirely + } + assert is_opencode_context(node2) is False + +def test_is_opencode_context_statuscontext_match(): + node = { + "__typename": "StatusContext", + "context": "opencode-review", + } + assert is_opencode_context(node) is True + +def test_is_opencode_context_statuscontext_mismatch(): + node = { + "__typename": "StatusContext", + "context": "other-review", + } + assert is_opencode_context(node) is False + +def test_is_opencode_context_statuscontext_missing(): + node = { + "__typename": "StatusContext", + # missing context + } + assert is_opencode_context(node) is False + +def test_is_opencode_context_missing_typename(): + node = { + "context": "opencode-review", + } + assert is_opencode_context(node) is True