{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-active-expression-proxies/src/client/reactive/test/active-expression/trigger.spec.js"],"names":["chai","expect","sinon","sinonChai","use","obj","a","spy","axp","onBecomeTrue","onBecomeFalse","expectedAxp","actualAxp","dataflow"],"mappings":"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","file":"trigger.spec.js","sourcesContent":["\"enable aexpr\";\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\ndescribe('Trigger for Active Expressions', () => {\n  it(\"chainable\", () => {\n    let obj = {a: 2},\n        spy = sinon.spy();\n\n    aexpr(() => obj.a > 5)\n      .onBecomeFalse(spy)\n      .onBecomeTrue(spy)\n      .onBecomeFalse(spy)\n      .onBecomeTrue(spy);\n\n    expect(spy).to.be.calledTwice;\n  });\n\n  it(\"flank up\", () => {\n    let obj = {a: 2},\n        spy = sinon.spy();\n\n    let axp = aexpr(() => obj.a > 5);\n    axp.onBecomeTrue(spy);\n    expect(spy).not.to.be.called;\n\n    obj.a = 10;\n    expect(spy).to.be.calledOnce;\n\n    obj.a = 0;\n    expect(spy).to.be.calledOnce;\n\n    obj.a = 10;\n    expect(spy).to.be.calledTwice;\n  });\n\n  it(\"immediately triggers onBecomeTrue\", () => {\n    let obj = {a: 7},\n        spy = sinon.spy();\n\n    let axp = aexpr(() => obj.a > 5);\n    axp.onBecomeTrue(spy);\n    expect(spy).to.be.calledOnce;\n\n    obj.a = 0;\n    expect(spy).to.be.calledOnce;\n\n    obj.a = 10;\n    expect(spy).to.be.calledTwice;\n  });\n\n  it(\"flank down\", () => {\n    let obj = {a: 2},\n        spy = sinon.spy();\n\n    let axp = aexpr(() => obj.a > 0);\n    axp.onBecomeFalse(spy);\n    expect(spy).not.to.be.called;\n\n    obj.a = -2;\n    expect(spy).to.be.calledOnce;\n\n    obj.a = 2;\n    expect(spy).to.be.calledOnce;\n\n    obj.a = -2;\n    expect(spy).to.be.calledTwice;\n  });\n\n  it(\"immediately triggers onBecomeFalse\", () => {\n    let obj = {a: -2},\n        spy = sinon.spy();\n\n    let axp = aexpr(() => obj.a > 0);\n    axp.onBecomeFalse(spy);\n    expect(spy).to.be.calledOnce;\n\n    obj.a = 2;\n    expect(spy).to.be.calledOnce;\n\n    obj.a = -2;\n    expect(spy).to.be.calledTwice;\n  });\n\n  describe('dataflow', () => {\n    it(\"aexprs define dataflow\", () => {\n      expect(aexpr(() => {})).to.respondTo('dataflow');\n    });\n\n    it(\"dataflow is chainable\", () => {\n      let expectedAxp = aexpr(() => {});\n      let actualAxp = expectedAxp.dataflow(() => {});\n      expect(actualAxp).to.equal(expectedAxp);\n    });\n\n    it(\"dataflow invokes callback immediately\", () => {\n    let obj = {a: -2},\n        spy = sinon.spy();\n\n      let axp = aexpr(() => obj.a)\n        .dataflow(spy);\n\n      expect(spy).to.be.calledOnce;\n      expect(spy).to.be.calledWithMatch(-2);\n      \n      obj.a = 42;\n      expect(spy).to.be.calledTwice;\n      expect(spy).to.be.calledWithMatch(42);\n    });\n  });\n});\n"]}