# retoor from devplacepy.database import CONSENT_KINDS from devplacepy.services.acceptance.agreements import ( AGREEMENTS, agreement_for, label_for, setting_key, ) from devplacepy.services.acceptance.service import AcceptanceService def test_every_consent_kind_is_classified_as_an_agreement(): assert {agreement.kind for agreement in AGREEMENTS} == set(CONSENT_KINDS) def test_setting_keys_are_unique_and_namespaced(): keys = [setting_key(agreement.kind) for agreement in AGREEMENTS] assert len(keys) == len(set(keys)) for key in keys: assert key.startswith("acceptance_grant_") def test_every_agreement_has_a_config_field_in_the_agreements_group(): service = AcceptanceService() fields = {field.key: field for field in service.config_fields} for agreement in AGREEMENTS: field = fields[setting_key(agreement.kind)] assert field.type == "bool" assert field.default is False assert field.group == "Agreements" def test_labels_come_from_the_consent_registry(): for agreement in AGREEMENTS: assert label_for(agreement.kind) == CONSENT_KINDS[agreement.kind] def test_only_terms_declares_a_gate_column(): gated = [agreement.kind for agreement in AGREEMENTS if agreement.gate_column] assert gated == ["terms"] def test_versioned_agreements_match_the_application_version_keys(): from devplacepy.routers.profile.consent import VERSION_KEYS versioned = { agreement.kind: agreement.version_setting for agreement in AGREEMENTS if agreement.version_setting } assert versioned == VERSION_KEYS def test_agreement_lookup_is_total_over_the_registry(): for agreement in AGREEMENTS: assert agreement_for(agreement.kind) is agreement assert agreement_for("not_a_consent") is None def test_the_service_is_opt_in_and_runs_every_five_minutes(): service = AcceptanceService() assert service.default_enabled is False assert service.interval_seconds == 300 assert service.is_enabled() is False