{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-core/src/client/reactive/test/active-expression-proxies/set-expression.spec.js"],"names":["reset","chai","expect","sinon","sinonChai","use","describe","it","spy","obj","a","b","ae","onChange","setExpression","to","be","calledOnce","not","called","obj1","obj2","checkImmediately"],"mappings":"AAAA;;;;;;;;;;;AACSA,W,4BAAAA,K;;AAEFC,U;AAAQC,Y,sBAAAA,M;;AACRC,W;;AACAC,e;;;;;;;;;;;AAJEJ,gD;;;;;;;;;;;;;AAEME,iD;;;;;;;;;;;;;AAARD,+C;;;;;;;;;;;;;AACAE,gD;;;;;;;;;;;;;AACAC,oD;;;;;;;;AACPH,WAAKI,GAAL,CAASD,SAAT;;AAEAE,eAAS,+CAAT,EAA0D,MAAM;AAC9DC,WAAG,4BAAH,EAAiC,MAAM;AACrC,cAAIC,MAAML,MAAMK,GAAN,EAAV;AAAA,cACIC,sBAAM,EAAEC,GAAG,CAAL,EAAQC,GAAG,CAAX,EAAN,CADJ;AAEA,cAAIC,KAAK,OAAM,MAAMH,IAAIC,CAAhB,EAAmBG,QAAnB,CAA4BL,GAA5B,CAAT;;AAEAI,aAAGE,aAAH,CAAiB,MAAML,IAAIE,CAA3B;AACAT,iBAAOM,GAAP,EAAYO,EAAZ,CAAeC,EAAf,CAAkBC,UAAlB;AACD,SAPD;;AASAV,WAAG,gCAAH,EAAqC,MAAM;AACzC,cAAIC,MAAML,MAAMK,GAAN,EAAV;AAAA,cACIC,sBAAM,EAAEC,GAAG,CAAL,EAAQC,GAAG,CAAX,EAAN,CADJ;AAEA,cAAIC,KAAK,OAAM,MAAMH,IAAIC,CAAhB,EAAmBG,QAAnB,CAA4BL,GAA5B,CAAT;;AAEAI,aAAGE,aAAH,CAAiB,MAAML,IAAIE,CAA3B;AACAT,iBAAOM,GAAP,EAAYU,GAAZ,CAAgBH,EAAhB,CAAmBC,EAAnB,CAAsBG,MAAtB;;AAEAV,cAAIE,CAAJ,GAAQ,CAAR;AACAT,iBAAOM,GAAP,EAAYO,EAAZ,CAAeC,EAAf,CAAkBC,UAAlB;AACD,SAVD;;AAYAV,WAAG,wBAAH,EAA6B,MAAM;AACjC,cAAIC,MAAML,MAAMK,GAAN,EAAV;AAAA,cACIY,uBAAO,EAAEV,GAAG,CAAL,EAAP,CADJ;AAAA,cAEIW,uBAAO,EAAEX,GAAG,CAAL,EAAP,CAFJ;;AAIA,cAAIE,KAAK,OAAM,MAAMQ,KAAKV,CAAjB,EAAoBG,QAApB,CAA6BL,GAA7B,CAAT;;AAEAI,aAAGE,aAAH,CAAiB,MAAMO,KAAKX,CAA5B;AACAR,iBAAOM,GAAP,EAAYU,GAAZ,CAAgBH,EAAhB,CAAmBC,EAAnB,CAAsBG,MAAtB;;AAEAE,eAAKX,CAAL,GAAS,CAAT;AACAR,iBAAOM,GAAP,EAAYO,EAAZ,CAAeC,EAAf,CAAkBC,UAAlB;AACD,SAZD;;AAcA;AACA;AACAV,WAAG,yBAAH,EAA8B,MAAM;AAClC,cAAIC,MAAML,MAAMK,GAAN,EAAV;AAAA,cACIC,sBAAM,EAAEC,GAAG,CAAL,EAAQC,GAAG,CAAX,EAAN,CADJ;AAEA,cAAIC,KAAK,OAAM,MAAMH,IAAIC,CAAhB,EAAmBG,QAAnB,CAA4BL,GAA5B,CAAT;;AAEAI,aAAGE,aAAH,CAAiB,MAAML,IAAIE,CAA3B,kBAA8B,EAAEW,kBAAkB,KAApB,EAA9B;AACApB,iBAAOM,GAAP,EAAYU,GAAZ,CAAgBH,EAAhB,CAAmBC,EAAnB,CAAsBG,MAAtB;;AAEAV,cAAIE,CAAJ,GAAQ,CAAR;AACA;AACAT,iBAAOM,GAAP,EAAYO,EAAZ,CAAeC,EAAf,CAAkBC,UAAlB;AACD,SAXD;AAaD,OAnDD","file":"set-expression.spec.js","sourcesContent":["\"use proxies for aexprs\";\nimport { reset } from 'active-expression-proxies';\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('.setExpression (Rewriting Active Expressions)', () => {\n  it(\"calls callback immediately\", () => {\n    let spy = sinon.spy(),\n        obj = { a: 1, b: 2 };\n    let ae = aexpr(() => obj.a).onChange(spy);\n\n    ae.setExpression(() => obj.b);\n    expect(spy).to.be.calledOnce;\n  });\n\n  it(\"monitores the new dependencies\", () => {\n    let spy = sinon.spy(),\n        obj = { a: 1, b: 1 };\n    let ae = aexpr(() => obj.a).onChange(spy);\n\n    ae.setExpression(() => obj.b);\n    expect(spy).not.to.be.called;\n\n    obj.b = 2\n    expect(spy).to.be.calledOnce;\n  });\n\n  it(\"monitores a new object\", () => {\n    let spy = sinon.spy(),\n        obj1 = { a: 1 },\n        obj2 = { a: 1 };\n\n    let ae = aexpr(() => obj1.a).onChange(spy);\n\n    ae.setExpression(() => obj2.a);\n    expect(spy).not.to.be.called;\n\n    obj2.a = 2\n    expect(spy).to.be.calledOnce;\n  });\n\n  // #TODO: checkImmediately: false feels weird\n  // #TODO: either get rid of it entirely or find out, whether we want lastValue to be the last value of the old expression or the current value of the new expression\n  it(\"checkImmediately: false\", () => {\n    let spy = sinon.spy(),\n        obj = { a: 1, b: 2 };\n    let ae = aexpr(() => obj.a).onChange(spy);\n\n    ae.setExpression(() => obj.b, { checkImmediately: false });\n    expect(spy).not.to.be.called;\n\n    obj.b = 3\n    // #UNCERTAIN: what is lastValue here?\n    expect(spy).to.be.calledOnce;\n  });\n\n});\n"]}