feat: finish phase 4 portal review fixes
This commit is contained in:
+98
-1
@@ -3,6 +3,7 @@ from decimal import Decimal
|
||||
|
||||
from allauth.account.models import EmailAddress
|
||||
from django.contrib.auth import get_user, get_user_model
|
||||
from django.contrib.staticfiles import finders
|
||||
from django.core import mail
|
||||
from django.core.cache import cache
|
||||
from django.test import Client, TestCase, override_settings
|
||||
@@ -377,6 +378,43 @@ class PortalAccountFlowTests(TestCase):
|
||||
self.assertContains(response, "R-OWN-PENDING-503")
|
||||
self.assertNotContains(response, "R-OTHER-RECHARGE-503")
|
||||
|
||||
def test_recharge_records_paginate_more_than_page_size(self):
|
||||
user = self.create_verified_user()
|
||||
other_user = self.create_verified_user()
|
||||
self.create_recharge_order(
|
||||
other_user,
|
||||
order_no="R-PAGE-OTHER-505",
|
||||
amount="99.00",
|
||||
points=990,
|
||||
)
|
||||
for index in range(55):
|
||||
self.create_recharge_order(
|
||||
user,
|
||||
order_no=f"R-PAGE-{index:03d}",
|
||||
amount="1.00",
|
||||
points=10,
|
||||
)
|
||||
self.client.force_login(user)
|
||||
|
||||
first_page = self.client.get("/records/recharge")
|
||||
second_page = self.client.get("/records/recharge?page=2")
|
||||
|
||||
self.assertEqual(first_page.status_code, 200)
|
||||
self.assertEqual(first_page.context["records_total_count"], 55)
|
||||
self.assertEqual(first_page.context["page_obj"].number, 1)
|
||||
self.assertEqual(len(first_page.context["recharge_orders"]), 50)
|
||||
self.assertContains(first_page, "共 55 条,每页 50 条")
|
||||
self.assertContains(first_page, "R-PAGE-054")
|
||||
self.assertNotContains(first_page, "R-PAGE-000")
|
||||
self.assertNotContains(first_page, "R-PAGE-OTHER-505")
|
||||
|
||||
self.assertEqual(second_page.status_code, 200)
|
||||
self.assertEqual(second_page.context["page_obj"].number, 2)
|
||||
self.assertEqual(len(second_page.context["recharge_orders"]), 5)
|
||||
self.assertContains(second_page, "R-PAGE-000")
|
||||
self.assertNotContains(second_page, "R-PAGE-054")
|
||||
self.assertNotContains(second_page, "R-PAGE-OTHER-505")
|
||||
|
||||
def test_usage_records_require_login_and_only_show_current_user_usage(self):
|
||||
user = self.create_verified_user()
|
||||
other_user = self.create_verified_user()
|
||||
@@ -435,6 +473,59 @@ class PortalAccountFlowTests(TestCase):
|
||||
self.assertNotContains(response, "other-alias")
|
||||
self.assertNotContains(response, other_key.key_prefix)
|
||||
|
||||
def test_usage_records_paginate_more_than_page_size(self):
|
||||
user = self.create_verified_user()
|
||||
other_user = self.create_verified_user()
|
||||
api_key, _raw_key = ApiKey.create_for_user(user, name="desktop")
|
||||
other_key, _other_raw_key = ApiKey.create_for_user(other_user, name="other")
|
||||
other_call = self.create_call_record(
|
||||
other_user,
|
||||
other_key,
|
||||
alias="other-page-alias",
|
||||
points_cost=99,
|
||||
)
|
||||
PointsLedger.objects.create(
|
||||
user=other_user,
|
||||
change_type=PointsLedger.ChangeType.CONSUME,
|
||||
points_delta=-99,
|
||||
balance_after=0,
|
||||
ref_call=other_call,
|
||||
)
|
||||
for index in range(55):
|
||||
call = self.create_call_record(
|
||||
user,
|
||||
api_key,
|
||||
alias=f"title-page-{index:03d}",
|
||||
points_cost=1,
|
||||
)
|
||||
PointsLedger.objects.create(
|
||||
user=user,
|
||||
change_type=PointsLedger.ChangeType.CONSUME,
|
||||
points_delta=-1,
|
||||
balance_after=100 - index,
|
||||
ref_call=call,
|
||||
)
|
||||
self.client.force_login(user)
|
||||
|
||||
first_page = self.client.get("/records/usage")
|
||||
second_page = self.client.get("/records/usage?page=2")
|
||||
|
||||
self.assertEqual(first_page.status_code, 200)
|
||||
self.assertEqual(first_page.context["records_total_count"], 55)
|
||||
self.assertEqual(first_page.context["page_obj"].number, 1)
|
||||
self.assertEqual(len(first_page.context["usage_entries"]), 50)
|
||||
self.assertContains(first_page, "共 55 条,每页 50 条")
|
||||
self.assertContains(first_page, "title-page-054")
|
||||
self.assertNotContains(first_page, "title-page-000")
|
||||
self.assertNotContains(first_page, "other-page-alias")
|
||||
|
||||
self.assertEqual(second_page.status_code, 200)
|
||||
self.assertEqual(second_page.context["page_obj"].number, 2)
|
||||
self.assertEqual(len(second_page.context["usage_entries"]), 5)
|
||||
self.assertContains(second_page, "title-page-000")
|
||||
self.assertNotContains(second_page, "title-page-054")
|
||||
self.assertNotContains(second_page, "other-page-alias")
|
||||
|
||||
def test_recharge_page_requires_login_and_shows_form(self):
|
||||
user = self.create_verified_user()
|
||||
UserWallet.objects.create(user=user, points_balance=25)
|
||||
@@ -450,8 +541,14 @@ class PortalAccountFlowTests(TestCase):
|
||||
self.assertEqual(response.context["balance"].points_balance, 25)
|
||||
self.assertContains(response, "充值金额")
|
||||
self.assertContains(response, "创建订单")
|
||||
self.assertContains(response, "qrcode@1.5.4")
|
||||
self.assertContains(response, "portal/vendor/bootstrap/bootstrap.min.css")
|
||||
self.assertContains(response, "portal/vendor/qrcode/qrcode.js")
|
||||
self.assertContains(response, "QRCode.toCanvas")
|
||||
self.assertNotContains(response, "cdn.jsdelivr.net")
|
||||
self.assertIsNotNone(
|
||||
finders.find("portal/vendor/bootstrap/bootstrap.min.css")
|
||||
)
|
||||
self.assertIsNotNone(finders.find("portal/vendor/qrcode/qrcode.js"))
|
||||
|
||||
def test_recharge_page_post_creates_pending_order_without_crediting_wallet_or_ledger(self):
|
||||
user = self.create_verified_user()
|
||||
|
||||
Reference in New Issue
Block a user