新增订单概况并优化自动刷新和错误提示
This commit is contained in:
@@ -67,6 +67,9 @@ class CustomerOrderTests(unittest.TestCase):
|
||||
second = self.client.get('/api/customer/orders', query_string={'before': first['next_before']}).json
|
||||
self.assertEqual(len(second['orders']), 5)
|
||||
self.assertIsNone(second['next_before'])
|
||||
self.assertEqual(first['summary'], {'total': 25, 'pending': 0, 'processing': 25,
|
||||
'completed': 0, 'cancelled': 0, 'other': 0})
|
||||
self.assertEqual(second['summary'], first['summary'])
|
||||
self.assertFalse({x['id'] for x in first['orders']} & {x['id'] for x in second['orders']})
|
||||
for value in ['-1', '0', 'NaN', '9223372036854775808']:
|
||||
self.assertEqual(self.client.get('/api/customer/orders', query_string={'before': value}).status_code, 400)
|
||||
@@ -84,10 +87,12 @@ class CustomerOrderTests(unittest.TestCase):
|
||||
def test_empty_scope_and_configured_tenant_restriction(self):
|
||||
self.login('empty')
|
||||
self.assertEqual(self.client.get('/api/customer/orders').json['orders'], [])
|
||||
self.assertEqual(self.client.get('/api/customer/orders').json['summary']['total'], 0)
|
||||
self.assertEqual(self.client.get('/api/customer/orders/1').status_code, 404)
|
||||
self.app.config['ORDER_DATA_TENANT_ID'] = 'b'
|
||||
self.login()
|
||||
self.assertEqual(self.client.get('/api/customer/orders').json['orders'], [])
|
||||
self.assertEqual(self.client.get('/api/customer/orders').json['summary']['total'], 0)
|
||||
self.assertEqual(self.client.get('/api/customer/orders/1').status_code, 404)
|
||||
|
||||
def test_multiple_grants_and_revocation(self):
|
||||
@@ -100,6 +105,7 @@ class CustomerOrderTests(unittest.TestCase):
|
||||
con.close()
|
||||
self.login()
|
||||
self.assertEqual(self.client.get('/api/customer/orders').json['orders'][0]['id'], self.foreign_id)
|
||||
self.assertEqual(self.client.get('/api/customer/orders').json['summary']['total'], 26)
|
||||
with self.app.app_context():
|
||||
con = db.connect()
|
||||
con.execute("DELETE FROM customer_tenant_grants WHERE tenant_id='b'")
|
||||
@@ -113,3 +119,41 @@ class CustomerOrderTests(unittest.TestCase):
|
||||
response = self.client.get('/api/customer/orders')
|
||||
self.assertEqual(response.status_code, 503)
|
||||
self.assertNotIn('sqlite', response.get_data(as_text=True))
|
||||
|
||||
def test_overview_counts_full_scope_and_filters_before_paging(self):
|
||||
statuses = ['DRAFT', 'SUBMITTED', 'APPROVED', 'ACCEPTED', 'COMPLETED',
|
||||
'CANCELLED', 'REJECTED', 'UNKNOWN_FUTURE_STATUS']
|
||||
with self.app.app_context():
|
||||
con = db.connect()
|
||||
for index, status in enumerate(statuses):
|
||||
con.execute('UPDATE order_test_data SET status=? WHERE tenant_id=? AND order_no=?',
|
||||
(status, 'a', f'A2026{index:04}'))
|
||||
con.commit()
|
||||
con.close()
|
||||
self.login()
|
||||
expected = {'total': 25, 'pending': 4, 'processing': 17, 'completed': 1, 'cancelled': 1, 'other': 2}
|
||||
all_data = self.client.get('/api/customer/orders?tenant_id=b').json
|
||||
self.assertEqual(all_data['summary'], expected)
|
||||
for status, count in [('pending', 4), ('processing', 17), ('completed', 1), ('cancelled', 1), ('other', 2)]:
|
||||
with self.subTest(status=status):
|
||||
response = self.client.get('/api/customer/orders', query_string={'status': status, 'tenant_id': 'b'})
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(len(response.json['orders']), count)
|
||||
self.assertEqual(response.json['summary'], expected)
|
||||
self.assertIsNone(response.json['next_before'])
|
||||
self.assertNotIn(self.foreign_id, [item['id'] for item in response.json['orders']])
|
||||
self.assertEqual({x['status'] for x in self.client.get('/api/customer/orders?status=other').json['orders']},
|
||||
{'REJECTED', 'UNKNOWN_FUTURE_STATUS'})
|
||||
for status in ['bad', 'PROCESSING', "pending' OR 1=1", '']:
|
||||
self.assertEqual(self.client.get('/api/customer/orders', query_string={'status': status}).status_code, 400)
|
||||
|
||||
def test_filtered_cursor_keeps_summary_and_does_not_include_other_statuses(self):
|
||||
self.login()
|
||||
first = self.client.get('/api/customer/orders?status=processing').json
|
||||
second = self.client.get('/api/customer/orders', query_string={'status': 'processing', 'before': first['next_before']}).json
|
||||
self.assertEqual(len(first['orders']), 20)
|
||||
self.assertEqual(len(second['orders']), 5)
|
||||
self.assertEqual(second['summary']['processing'], 25)
|
||||
empty = self.client.get('/api/customer/orders?status=completed').json
|
||||
self.assertEqual(empty['orders'], [])
|
||||
self.assertEqual(empty['summary']['total'], 25)
|
||||
|
||||
Reference in New Issue
Block a user