From 68d117e60ab015cf11c5257f802b399a8fc873d5 Mon Sep 17 00:00:00 2001 From: Lauryn Menard Date: Wed, 13 Dec 2023 18:25:40 +0100 Subject: [PATCH] support: Add sponsorship request information to remote support view. --- analytics/tests/test_support_views.py | 80 +++++++++++++++++++ .../analytics/sponsorship_forms_support.html | 19 +++++ 2 files changed, 99 insertions(+) diff --git a/analytics/tests/test_support_views.py b/analytics/tests/test_support_views.py index 1c31d3f057..a162edfcbf 100644 --- a/analytics/tests/test_support_views.py +++ b/analytics/tests/test_support_views.py @@ -13,6 +13,8 @@ from corporate.models import ( Customer, CustomerPlan, LicenseLedger, + SponsoredPlanTypes, + ZulipSponsorshipRequest, get_current_plan_by_realm, get_customer_by_realm, ) @@ -23,6 +25,7 @@ from zerver.lib.test_classes import ZulipTestCase from zerver.lib.test_helpers import reset_email_visibility_to_everyone_in_zulip_realm from zerver.models import ( MultiuseInvite, + OrgTypeEnum, PreregistrationUser, Realm, UserMessage, @@ -43,6 +46,24 @@ from zilencer.models import RemoteZulipServer class TestRemoteServerSupportEndpoint(ZulipTestCase): @override def setUp(self) -> None: + def add_sponsorship_request( + hostname: str, org_type: int, website: str, paid_users: str, plan: str + ) -> None: + remote_server = RemoteZulipServer.objects.get(hostname=hostname) + customer = Customer.objects.create( + remote_server=remote_server, sponsorship_pending=True + ) + ZulipSponsorshipRequest.objects.create( + customer=customer, + org_type=org_type, + org_website=website, + org_description="We help people.", + expected_total_users="20-35", + paid_users_count=paid_users, + paid_users_description="", + requested_plan=plan, + ) + super().setUp() # Set up some initial example data. @@ -52,6 +73,23 @@ class TestRemoteServerSupportEndpoint(ZulipTestCase): hostname=hostname, contact_email=f"admin@{hostname}", plan_type=1, uuid=uuid.uuid4() ) + # Add example sponsorship request data + add_sponsorship_request( + hostname="zulip-1.example.com", + org_type=OrgTypeEnum.Community.value, + website="", + paid_users="None", + plan=SponsoredPlanTypes.BUSINESS.value, + ) + + add_sponsorship_request( + hostname="zulip-2.example.com", + org_type=OrgTypeEnum.OpenSource.value, + website="example.org", + paid_users="", + plan=SponsoredPlanTypes.COMMUNITY.value, + ) + def test_search(self) -> None: self.login("cordelia") @@ -77,6 +115,19 @@ class TestRemoteServerSupportEndpoint(ZulipTestCase): self.assert_in_success_response(["Max monthly messages: 1000"], result) self.assert_not_in_success_response(["

zulip-2.example.com

"], result) + # Sponsorship request information + self.assert_in_success_response(["
  • Organization type: Community
  • "], result) + self.assert_in_success_response( + ["
  • Organization website: No website submitted
  • "], result + ) + self.assert_in_success_response(["
  • Paid users: None
  • "], result) + self.assert_in_success_response(["
  • Requested plan: Business
  • "], result) + self.assert_in_success_response( + ["
  • Organization description: We help people.
  • "], result + ) + self.assert_in_success_response(["
  • Estimated total users: 20-35
  • "], result) + self.assert_in_success_response(["
  • Description of paid users:
  • "], result) + with mock.patch( "analytics.views.support.compute_max_monthly_messages", side_effect=MissingDataError ): @@ -96,6 +147,35 @@ class TestRemoteServerSupportEndpoint(ZulipTestCase): self.assert_in_success_response(["Contact email: admin@zulip-2.example.com"], result) self.assert_not_in_success_response(["

    zulip-1.example.com

    "], result) + # Sponsorship request information + self.assert_in_success_response( + ["
  • Organization type: Open-source project
  • "], result + ) + self.assert_in_success_response( + ["
  • Organization website: example.org
  • "], result + ) + self.assert_in_success_response(["
  • Paid users:
  • "], result) + self.assert_in_success_response(["
  • Requested plan: Community
  • "], result) + self.assert_in_success_response( + ["
  • Organization description: We help people.
  • "], result + ) + self.assert_in_success_response(["
  • Estimated total users: 20-35
  • "], result) + self.assert_in_success_response(["
  • Description of paid users:
  • "], result) + + result = self.client_get("/activity/remote/support", {"q": "admin@zulip-3.example.com"}) + self.assert_in_success_response(["

    zulip-3.example.com

    "], result) + self.assert_in_success_response(["Contact email: admin@zulip-3.example.com"], result) + self.assert_not_in_success_response(["

    zulip-1.example.com

    "], result) + + # Sponsorship request information + self.assert_not_in_success_response( + ["
  • Organization description: We help people.
  • "], result + ) + self.assert_not_in_success_response( + ["
  • Estimated total users: 20-35
  • "], result + ) + self.assert_not_in_success_response(["
  • Description of paid users:
  • "], result) + class TestSupportEndpoint(ZulipTestCase): def test_search(self) -> None: diff --git a/templates/analytics/sponsorship_forms_support.html b/templates/analytics/sponsorship_forms_support.html index 4513f84d63..1c99267fc0 100644 --- a/templates/analytics/sponsorship_forms_support.html +++ b/templates/analytics/sponsorship_forms_support.html @@ -32,3 +32,22 @@ {% endif %} + +{% if sponsorship_data.sponsorship_pending %} +
    +

    Sponsorship request information:

    + {% if sponsorship_data.latest_sponsorship_request %} + + {% else %} + No sponsorship requests have been submitted.

    + {% endif %} +
    +{% endif %}