feat: 增加报工超额快照字段
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
from sqlalchemy import BigInteger, create_engine, inspect
|
||||
from sqlalchemy.ext.compiler import compiles
|
||||
|
||||
from app.database import Base
|
||||
from app.models import ProductionReport, ProductionReportItem # noqa: F401
|
||||
|
||||
|
||||
@compiles(BigInteger, "sqlite")
|
||||
def _compile_big_integer_for_sqlite(type_, compiler, **kw):
|
||||
return "INTEGER"
|
||||
|
||||
|
||||
def test_report_over_limit_columns_exist_on_sqlite_metadata():
|
||||
engine = create_engine("sqlite:///:memory:")
|
||||
Base.metadata.create_all(engine)
|
||||
inspector = inspect(engine)
|
||||
|
||||
report_column_rows = inspector.get_columns("production_reports")
|
||||
item_column_rows = inspector.get_columns("production_report_items")
|
||||
report_columns = {column["name"] for column in report_column_rows}
|
||||
item_columns = {column["name"] for column in item_column_rows}
|
||||
report_column_by_name = {column["name"]: column for column in report_column_rows}
|
||||
item_column_by_name = {column["name"]: column for column in item_column_rows}
|
||||
report_indexes = {index["name"]: tuple(index["column_names"]) for index in inspector.get_indexes("production_reports")}
|
||||
item_indexes = {
|
||||
index["name"]: tuple(index["column_names"])
|
||||
for index in inspector.get_indexes("production_report_items")
|
||||
}
|
||||
|
||||
assert {"has_over_limit", "over_limit_summary"}.issubset(report_columns)
|
||||
assert {
|
||||
"over_limit_status",
|
||||
"over_limit_type",
|
||||
"over_limit_reason",
|
||||
"over_limit_checked_at",
|
||||
"over_limit_check_source",
|
||||
"over_limit_batch_no",
|
||||
"over_limit_product_gross_weight_kg",
|
||||
"over_limit_issued_weight_kg",
|
||||
"over_limit_max_reportable_qty",
|
||||
"over_limit_previous_good_qty",
|
||||
"over_limit_current_cumulative_qty",
|
||||
"over_limit_current_report_qty",
|
||||
}.issubset(item_columns)
|
||||
|
||||
assert report_indexes["idx_reports_over_limit"] == ("has_over_limit", "submitted_at")
|
||||
assert item_indexes["idx_report_items_over_limit_status"] == ("over_limit_status",)
|
||||
assert item_indexes["idx_report_items_process_batch"] == (
|
||||
"attendance_point_name",
|
||||
"project_no",
|
||||
"product_name",
|
||||
"raw_material_batch_no",
|
||||
"process_name",
|
||||
)
|
||||
assert report_column_by_name["has_over_limit"]["nullable"] is False
|
||||
assert str(report_column_by_name["has_over_limit"]["default"]).strip("'\"") in {"0", "false", "FALSE"}
|
||||
assert item_column_by_name["over_limit_status"]["nullable"] is False
|
||||
assert str(item_column_by_name["over_limit_status"]["default"]).strip("'\"") == "not_checked"
|
||||
Reference in New Issue
Block a user