{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-markus/src/client/reactive/test/active-expression/inactive.spec.js"],"names":["chai","expect","sinon","sinonChai","BaseActiveExpression","aexpr","use","describe","it","to","respondTo","spy","obj","a","onChange","not","be","called","checkAndNotify","calledOnce","done","Promise","resolve","reject","setTimeout","o","params","obj1","val","obj2","obj3","o1","o2","o3","calledWith","actual","meta","value","equal","get","expr","have","been","getCall","args","property"],"mappings":"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","file":"inactive.spec.js","sourcesContent":["'use strict';\n\nimport chai, {expect} from 'src/external/chai.js';\nimport sinon from 'src/external/sinon-3.2.1.js';\nimport sinonChai from 'src/external/sinon-chai.js';\nchai.use(sinonChai);\n\nimport { BaseActiveExpression, aexpr } from '../../active-expression/active-expression.js';\n\ndescribe('Enable and Disable', () => {\n    it('responds to enable/disable', () => {\n      expect(BaseActiveExpression).to.respondTo('enable');\n      expect(BaseActiveExpression).to.respondTo('disable');\n      expect(BaseActiveExpression).to.respondTo('isEnabled');\n      // expect(BaseActiveExpression).to.respondTo('enable');\n      // expect(BaseActiveExpression).to.respondTo('enable');\n    });\n    it(\"basic callback\", () => {\n        let spy = sinon.spy(),\n            obj = {a:1},\n            aexpr = new BaseActiveExpression(() => obj.a)\n                .onChange(spy);\n      \n        expect(spy).not.to.be.called;\n\n        obj.a = 2;\n        aexpr.checkAndNotify();\n\n        expect(spy).to.be.calledOnce;\n    });\n  \n    it(\"works with promises\", (done) => {\n          let spy = sinon.spy(),\n              obj = {a:1},\n              aexpr = new BaseActiveExpression(() => {\n                return new Promise((resolve, reject) => {\n                  setTimeout(resolve, 1, obj.a);\n                });\n              }).onChange(spy);\n\n          setTimeout(() => {\n            expect(spy).not.to.be.called;\n\n            obj.a = 2;\n            aexpr.checkAndNotify();\n\n            setTimeout(() => {\n              expect(spy).to.be.calledOnce;\n              done();\n            }, 2);\n          }, 2);\n      });\n\n    describe('Parameters', () => {\n        it(\"single parameter\", () => {\n            let spy = sinon.spy(),\n                obj = {a:1},\n                aexpr = new BaseActiveExpression(o => o.a, { params: [obj] })\n                    .onChange(spy);\n\n            expect(spy).not.to.be.called;\n\n            obj.a = 2;\n            aexpr.checkAndNotify();\n\n            expect(spy).to.be.calledOnce;\n        });\n\n        it(\"multiple parameters\", () => {\n            let spy = sinon.spy(),\n                obj1 = {val:1},\n                obj2 = {val:2},\n                obj3 = {val:3},\n                aexpr = new BaseActiveExpression((o1, o2, o3) => o1.val + o2.val + o3.val, { params: [obj1, obj2, obj3] })\n                    .onChange(spy);\n\n            expect(spy).not.to.be.called;\n\n            obj1.val = 10;\n            aexpr.checkAndNotify();\n\n            expect(spy).to.be.calledWith(15);\n\n            obj2.val = 20;\n            aexpr.checkAndNotify();\n\n            expect(spy).to.be.calledWith(33);\n        });\n\n    });\n  describe('meta', () => {\n    it('responds to meta', () => {\n      // expect(BaseActiveExpression).to.respondTo('activate');\n    });\n    it('meta is chainable', () => {\n      let aexpr = new BaseActiveExpression(() => {});\n\n      let actual = aexpr.meta({ value: 'expect' });\n      expect(actual).to.equal(aexpr);\n    });\n    it('stores values conveniently', () => {\n      let aexpr = new BaseActiveExpression(() => {});\n\n      aexpr.meta({ value: 'expected' });\n      expect(aexpr.meta().get('value')).to.equal('expected');\n    });\n  });\n  describe('callback parameters', () => {\n    it('params include new value', () => {\n        let spy = sinon.spy(),\n            val = 17,\n            aexpr = new BaseActiveExpression(() => val)\n                .onChange(spy);\n      \n        val = 42;\n        aexpr.checkAndNotify();\n\n        expect(spy).to.be.calledOnce;\n        expect(spy).to.be.calledWith(42);\n    });\n    it('params include analysed function', () => {\n        let val = 17,\n            expr = () => val,\n            spy = sinon.spy(),\n            aexpr = new BaseActiveExpression(expr)\n              .onChange(spy);\n      \n        val = 42;\n        aexpr.checkAndNotify();\n        \n        expect(spy).to.have.been.calledOnce;\n        expect(spy.getCall(0).args[0]).to.equal(42);\n        expect(spy.getCall(0).args[1]).to.have.property('expr', expr);\n        expect(spy.getCall(0).args[1]).to.have.property('lastValue', 17);\n        expect(spy.getCall(0).args[1]).to.have.property('aexpr', aexpr);\n    });\n  });\n});\n"]}