mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-10-27 08:12:22 +01:00
Merge current dev and refresh PR #6741 from the 7011 integration
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
"""Quick Select / Object Select must honour the New/Add/Subtract mode toggle.
|
||||
|
||||
The wand's segmented control (`.ge-wand-mode-btn`) writes `state.wandMode`;
|
||||
every selection tool has to read it back. Quick Select used to hard-code
|
||||
`'add'` (so every dab added, regardless of the toggle) and Object Select
|
||||
hard-coded `'replace'`, so picking Subtract did nothing in either tool.
|
||||
"""
|
||||
|
||||
from pathlib import Path
|
||||
import re
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
QUICK = (ROOT / "static/js/editor/tools/quick-select.js").read_text(encoding="utf-8")
|
||||
OBJECT = (ROOT / "static/js/editor/tools/object-select.js").read_text(encoding="utf-8")
|
||||
SW = (ROOT / "static/sw.js").read_text(encoding="utf-8")
|
||||
|
||||
|
||||
def test_quick_select_reads_the_wand_mode_toggle():
|
||||
assert "import { state } from '../state.js';" in QUICK
|
||||
assert "const modeFor = (event) => selectionModeForEvent(event, state.wandMode || 'replace');" in QUICK
|
||||
# the draft mode is captured on begin and re-used for the whole stroke
|
||||
assert "let strokeMode = 'replace';" in QUICK
|
||||
assert "strokeMode = modeFor(event);" in QUICK
|
||||
assert "sample(event, strokeMode);" in QUICK
|
||||
# after the first replace, later dabs accumulate instead of wiping progress
|
||||
assert "sample(event, strokeMode === 'replace' ? 'add' : selectionModeForEvent(event, strokeMode));" in QUICK
|
||||
# the old hard-coded add default is gone
|
||||
assert "selectionModeForEvent(event, 'add')" not in QUICK
|
||||
|
||||
|
||||
def test_object_select_reads_the_wand_mode_toggle():
|
||||
assert "import { state } from '../state.js';" in OBJECT
|
||||
assert "mode = selectionModeForEvent(event, state.wandMode || 'replace');" in OBJECT
|
||||
assert "mode = selectionModeForEvent(event, 'replace');" not in OBJECT
|
||||
|
||||
|
||||
def test_sw_cache_name_bumped():
|
||||
assert re.search(r"odysseus-v\d+-pr40-editor-precache", SW)
|
||||
Reference in New Issue
Block a user