Files
CutList/tests/test_cut_badge_format.py
aj 5409479e00
Build CutList image / build-and-push (push) Successful in 19s
fix(web): make printed cut instructions legible
Keep part numbers and their dividers visible in monochrome print output, and include the selected cutting tool and kerf on the printed report.
2026-08-03 02:18:45 +00:00

48 lines
2.1 KiB
Python

"""Focused regression checks for split part-number and length cut badges."""
from __future__ import annotations
import unittest
from pathlib import Path
REPO_ROOT = Path(__file__).resolve().parents[1]
JOB_EDITOR = REPO_ROOT / "CutList.Web/Components/Pages/Jobs/Edit.razor"
APP_CSS = REPO_ROOT / "CutList.Web/wwwroot/css/app.css"
class CutBadgeFormatTests(unittest.TestCase):
def test_named_cut_badge_renders_part_number_and_length_in_separate_sections(self) -> None:
markup = JOB_EDITOR.read_text()
results_start = markup.index("private RenderFragment RenderResultsTab()")
cuts_cell_start = markup.index("@foreach (var item in entry.Bin.Items)", results_start)
cut_rows_start = markup.rfind("<td>", results_start, cuts_cell_start)
cut_rows = markup[cut_rows_start:markup.index("</td>", cuts_cell_start)]
self.assertIn('class="badge me-1 mb-1 fs-6 cut-part-badge"', cut_rows)
self.assertIn('class="cut-part-badge-name"', cut_rows)
self.assertIn('class="cut-part-badge-length"', cut_rows)
self.assertIn('@item.Name', cut_rows)
self.assertIn('@FormatResultLength(item.Length)', cut_rows)
self.assertNotIn('$"{item.Name} (', cut_rows)
def test_length_section_has_a_darker_background_than_the_part_number_section(self) -> None:
css = APP_CSS.read_text()
self.assertIn('.cut-part-badge {', css)
self.assertIn('.cut-part-badge-name {', css)
self.assertIn('.cut-part-badge-length {', css)
self.assertIn('background-color: #4c6680;', css)
def test_printed_cut_badges_keep_part_numbers_and_separators_legible(self) -> None:
report_css = (REPO_ROOT / "CutList.Web/wwwroot/css/report.css").read_text()
print_styles = report_css[report_css.index("@media print {"):]
self.assertIn(".cut-part-badge {", print_styles)
self.assertIn("color: #000 !important;", print_styles)
self.assertIn(".cut-part-badge-divider {", print_styles)
self.assertIn("border-left: 1px solid #000 !important;", print_styles)
if __name__ == "__main__":
unittest.main()