UNPKG

@danielkalen/simplybind

Version:

Magically simple, framework-less one-way/two-way data binding for frontend/backend in ~5kb.

40 lines (32 loc) 1.26 kB
import {AccessMember, AccessScope} from '../../src/ast'; import {createScopeForTest} from '../../src/scope'; describe('AccessMember', () => { let expression; beforeAll(() => { expression = new AccessMember(new AccessScope('foo', 0), 'bar'); }); it('evaluates member on bindingContext', () => { let scope = createScopeForTest({ foo: { bar: 'baz' } }); expect(expression.evaluate(scope, null)).toBe('baz'); }); it('evaluates member on overrideContext', () => { let scope = createScopeForTest({}); scope.overrideContext.foo = { bar: 'baz' }; expect(expression.evaluate(scope, null)).toBe('baz'); }); it('assigns member on bindingContext', () => { let scope = createScopeForTest({ foo: { bar: 'baz' } }); expression.assign(scope, 'bang') expect(scope.bindingContext.foo.bar).toBe('bang'); }); it('assigns member on overrideContext', () => { let scope = createScopeForTest({}); scope.overrideContext.foo = { bar: 'baz' }; expression.assign(scope, 'bang') expect(scope.overrideContext.foo.bar).toBe('bang'); }); it('returns the assigned value', () => { let scope = createScopeForTest({ foo: { bar: 'baz' } }); expect(expression.assign(scope, 'bang')).toBe('bang'); }); });