diff --git a/.github/ISSUE_TEMPLATE/design_partner.yml b/.github/ISSUE_TEMPLATE/design_partner.yml index 0a5cfd0..f364572 100644 --- a/.github/ISSUE_TEMPLATE/design_partner.yml +++ b/.github/ISSUE_TEMPLATE/design_partner.yml @@ -45,8 +45,10 @@ body: description: Select every package you expect to evaluate. options: - label: hayate + - label: hayate-admin - label: hayate-auth - label: hayate-fetch + - label: hayate-htmx - label: hayate-mcp - label: hayate-openapi - label: hayate-sql diff --git a/tests/test_design_partner_form.py b/tests/test_design_partner_form.py new file mode 100644 index 0000000..23aa44d --- /dev/null +++ b/tests/test_design_partner_form.py @@ -0,0 +1,50 @@ +from __future__ import annotations + +import re +import unittest +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[1] +FORM = ROOT / ".github" / "ISSUE_TEMPLATE" / "design_partner.yml" +PACKAGE_LABEL = re.compile(r"^ - label: (?P[a-z0-9-]+)$", re.MULTILINE) + +EXPECTED_PACKAGES = { + "create-hayate", + "hayate", + "hayate-admin", + "hayate-auth", + "hayate-fetch", + "hayate-htmx", + "hayate-mcp", + "hayate-openapi", + "hayate-sql", +} + + +class DesignPartnerFormTest(unittest.TestCase): + def test_exposes_every_public_ecosystem_package(self) -> None: + packages = PACKAGE_LABEL.findall(FORM.read_text(encoding="utf-8")) + + self.assertEqual(len(packages), len(set(packages))) + self.assertEqual(set(packages), EXPECTED_PACKAGES) + + def test_preserves_owner_external_and_privacy_confirmations(self) -> None: + form = FORM.read_text(encoding="utf-8") + + self.assertIn( + "This application is not owned by the Hayate maintainer.", + form, + ) + self.assertIn( + "I have not included secrets, customer data, proprietary code, " + "or vulnerability details.", + form, + ) + self.assertIn( + "I can share the measured onboarding outcome, privately if necessary.", + form, + ) + + +if __name__ == "__main__": + unittest.main()