From d366a1e8ef32769e28814615fb880fb4e9d40d37 Mon Sep 17 00:00:00 2001 From: benceruleanlu Date: Wed, 30 Apr 2025 15:18:46 -0400 Subject: [PATCH] "e2e" parseAST tests --- tests-ui/tests/store/contextKeyStore.spec.ts | 51 +++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/tests-ui/tests/store/contextKeyStore.spec.ts b/tests-ui/tests/store/contextKeyStore.spec.ts index b260568e4..1a01e73f5 100644 --- a/tests-ui/tests/store/contextKeyStore.spec.ts +++ b/tests-ui/tests/store/contextKeyStore.spec.ts @@ -1 +1,50 @@ -// TODO@benceruleanlu: Write unit tests after contextKeyStore is finished +import { createPinia, setActivePinia } from 'pinia' +import { beforeEach, describe, expect, it } from 'vitest' + +import { useContextKeyStore } from '@/stores/contextKeyStore' + +describe('evalAst via evaluateCondition', () => { + let store: ReturnType + + beforeEach(() => { + setActivePinia(createPinia()) + store = useContextKeyStore() + }) + + it('evaluates logical AND and NOT correctly', () => { + store.setContextKey('a', true) + store.setContextKey('b', false) + const result = store.evaluateCondition('a && !b') + expect(result).toBe(true) + }) + + it('evaluates OR and AND precedence correctly', () => { + store.setContextKey('a', false) + store.setContextKey('b', true) + store.setContextKey('c', false) + const result = store.evaluateCondition('a || b && c') + expect(result).toBe(false) + }) + + it('evaluates equality and inequality with numeric values', () => { + store.setContextKey('d', 1) + store.setContextKey('e', 1) + const eq = store.evaluateCondition('d == e') + const neq = store.evaluateCondition('d != e') + expect(eq).toBe(true) + expect(neq).toBe(false) + }) + + it('checks identifier truthiness for string and zero numeric', () => { + store.setContextKey('s', 'hello') + store.setContextKey('z', 0) + expect(store.evaluateCondition('s')).toBe(true) + expect(store.evaluateCondition('!s')).toBe(false) + expect(store.evaluateCondition('z')).toBe(false) + }) + + it('evaluates literals correctly', () => { + store.setContextKey('s', 'hello') + expect(store.evaluateCondition('s != "hello"')).toBe(false) + }) +})