44 lines
1.3 KiB
Python
44 lines
1.3 KiB
Python
"""Regression for #1809: document library counters must update after delete.
|
|
|
|
documentLibrary.js is a browser module with several DOM-only imports, so this
|
|
guards the relevant wiring at the source level. A single-card delete used to
|
|
remove the card and decrement `_libraryTotal`, but the header/chips render from
|
|
`_libraryLanguages`, which stayed stale until a full library refetch.
|
|
"""
|
|
|
|
from pathlib import Path
|
|
|
|
|
|
SRC = Path(__file__).resolve().parent.parent / "static/js/documentLibrary.js"
|
|
|
|
|
|
def _src() -> str:
|
|
return SRC.read_text(encoding="utf-8")
|
|
|
|
|
|
def _between(text: str, start: str, end: str) -> str:
|
|
begin = text.index(start)
|
|
finish = text.index(end, begin)
|
|
return text[begin:finish]
|
|
|
|
|
|
def test_single_delete_updates_language_counters_and_chips():
|
|
text = _src()
|
|
|
|
helper = _between(
|
|
text,
|
|
"function libraryRemoveDocumentFromState(docId)",
|
|
"function libraryRenderGrid()",
|
|
)
|
|
assert "_libraryLanguages[lang]" in helper
|
|
assert "delete _libraryLanguages[lang]" in helper
|
|
assert "libraryRenderStats();" in helper
|
|
assert "libraryRenderLangChips();" in helper
|
|
|
|
delete_body = _between(
|
|
text,
|
|
"async function libraryDeleteSingle(docId, card)",
|
|
"async function libraryBulkDelete()",
|
|
)
|
|
assert "libraryRemoveDocumentFromState(docId);" in delete_body
|