summaryrefslogtreecommitdiff
path: root/player-server/web/js/tests/search-parser.test.js
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-05-17 15:25:52 +0300
committerPaul Buetow <paul@buetow.org>2026-05-17 15:25:52 +0300
commit914bd7cd6aa14e839332a98d91c30b19865b0cf2 (patch)
tree02b11537237a204048589e14ed24938b805e42f7 /player-server/web/js/tests/search-parser.test.js
parent3b24f0e1be832584d6550e8cc3e5d24329f66f90 (diff)
Restructure repo: move Go server into player-server/
Diffstat (limited to 'player-server/web/js/tests/search-parser.test.js')
-rw-r--r--player-server/web/js/tests/search-parser.test.js33
1 files changed, 33 insertions, 0 deletions
diff --git a/player-server/web/js/tests/search-parser.test.js b/player-server/web/js/tests/search-parser.test.js
new file mode 100644
index 0000000..8b8e287
--- /dev/null
+++ b/player-server/web/js/tests/search-parser.test.js
@@ -0,0 +1,33 @@
+import { parseQuery } from '../search.js';
+
+const failures = [];
+
+function assert(cond, msg) {
+ if (!cond) failures.push(msg || 'assertion failed');
+}
+
+function testSetFilter() {
+ const parsed = parseQuery('set:yoga');
+ assert(parsed.set === 'yoga', 'set token should parse set name');
+ assert(parsed.search === '', 'set token should not become text search');
+}
+
+function testQuotedSetFilter() {
+ const parsed = parseQuery('set:"Yoga Flow" type:video morning');
+ assert(parsed.set === 'Yoga Flow', 'quoted set token should preserve spaces');
+ assert(parsed.type === 'video', 'other filters should still parse');
+ assert(parsed.search === 'morning', 'free text should still parse');
+}
+
+console.log('Running search parser tests...');
+testSetFilter();
+testQuotedSetFilter();
+
+if (failures.length) {
+ console.error('FAILURES:');
+ failures.forEach((m) => console.error(' - ' + m));
+ process.exit(1);
+} else {
+ console.log('All search parser tests passed.');
+ process.exit(0);
+}