35 lines
1.6 KiB
Python
35 lines
1.6 KiB
Python
"""订单详情到货批次批量加行回归测试。"""
|
|
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
|
|
APP_JS = (Path(__file__).resolve().parents[1] / 'static/js/app.js').read_text(encoding='utf-8')
|
|
|
|
|
|
class OrderArrivalMultiRowsTest(unittest.TestCase):
|
|
def test_detail_toolbar_places_multi_row_button_before_single_row_button(self):
|
|
multi_pos = APP_JS.index('id="addMultiBatchBtn"')
|
|
single_pos = APP_JS.index('id="addBatchBtn"', multi_pos)
|
|
self.assertLess(multi_pos, single_pos)
|
|
self.assertIn('onclick="promptAddArrivalBatchRows(this)"', APP_JS[multi_pos:single_pos])
|
|
|
|
def test_multi_row_prompt_requires_bounded_integer(self):
|
|
self.assertIn("showCenteredPrompt('添加多行'", APP_JS)
|
|
self.assertIn("type: 'number', min: 1, max: 100, step: 1", APP_JS)
|
|
self.assertIn('!Number.isInteger(count) || count < 1 || count > 100', APP_JS)
|
|
|
|
def test_shared_row_builder_allows_repeated_appends(self):
|
|
self.assertIn('function appendArrivalBatchEditingRow(btn)', APP_JS)
|
|
self.assertIn('for (var i = 0; i < count; i++)', APP_JS)
|
|
self.assertIn('var row = appendArrivalBatchEditingRow(btn)', APP_JS)
|
|
self.assertNotIn("tbody.querySelector('.batch-editing')", APP_JS)
|
|
|
|
def test_centered_prompt_supports_numeric_inputs_without_breaking_text_default(self):
|
|
self.assertIn('window.showCenteredPrompt = function(title, message, defaultValue, options)', APP_JS)
|
|
self.assertIn("var inputType = options.type === 'number' ? 'number' : 'text'", APP_JS)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|