{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-bp2019/src/client/reactive/test/active-groups/track.spec.js"],"names":["chai","expect","sinon","sinonChai","select","trackInitializeAndDestroy","getValueClass","use","AValueClass","timeout","ValueHolder","constructor","val","initialize","destroy","neverTracked","beforeTracking","v","afterTracking","spy","threshold","min","initialValue","data","acc","instance","instance1","instance2"],"mappings":"AAAA;;;;;;;;;;;;;;;;;AAEOA,U;AAAOC,Y,sBAAAA,M;;AACPC,W;;AACAC,e;;AAGAC,Y;AAAUC,+B,gBAAAA,yB;;AACRC,mB,mBAAAA,a;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAHT,yFAAKC,GAAL,wFAASJ,SAAT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,YAAMK,cAAc,+GAApB;;;;;;;;;;;;;;;;;AAEA,oFAAS,mBAAT,EAA8B,YAAW;;AAEvC,0EAAG,sCAAH,EAA2C,YAAW;AAAA;AAAA;;AACpD,eAAKC,OAAL,CAAa,KAAb;;AAEA,gBAAMC,WAAN,CAAkB;AAChBC,wBAAYC,GAAZ,EAAiB;AAAA;AAAA;AAAE,mBAAKC,UAAL,8EAAgBD,GAAhB;AAAuB;AAC1CC,uBAAWD,GAAX,EAAgB;AAAA;;AACd,mHAAWA,GAAX;AACD;AACDE,sBAAU,CAAE;AALI;;AAQlB,cAAIC,eAAe,iGAAIL,WAAJ,EAAgB,EAAhB,CAAnB;AACA,cAAIM,mCAAiB,sLAAON,WAAP,EAAjB,aAA4CO;AAAA;AAAK,qHAAS,CAAT;AAAL,WAA5C,EAAJ;AACA,2GAAIP,WAAJ,EAAgB,EAAhB;;AAEA,yPAA0BA,WAA1B;;AAEA,cAAIQ,kCAAgB,sLAAOR,WAAP,EAAhB,aAA2CO;AAAA;AAAK,qHAAS,CAAT;AAAL,WAA3C,EAAJ;;AAEA,cAAIE,8EAAM,sFAAMA,GAAN,EAAN,CAAJ;;AAEA,cAAIC,YAAY,EAAEC,KAAK,CAAP,EAAhB;AAAA,cACIC,eAAe,CADnB;AAEA,oPAAOd,WAAP,eAA2Be;AAAA;AAAQ,mOAAaH,SAAb;AAAR,WAA3B,eACU,CAACI,GAAD,EAAMC,QAAN;AAAA;AAAmB,yMAAMA,QAAN;AAAnB,WADV,iGACmDH,YADnD,+FAEYH,GAFZ;AAGA,uOAAOA,GAAP;;AAEA,cAAIO,YAAY,+FAAIlB,WAAJ,EAAgB,EAAhB,CAAhB;AACA,4NAAOW,GAAP;AACA,mOAAOA,GAAP,iDACE,mNAAeO,SAAf,WADF;;AAIA,cAAIC,YAAY,+FAAInB,WAAJ,EAAgB,CAAhB,CAAhB;AACA,4NAAOW,GAAP;AACA,mOAAOA,GAAP,iDACE,mNAAeO,SAAf,kHAAiCC,SAAjC,WADF;;AAIA,iIAAgB,EAAhB;AACA,wNAAOR,GAAP,kCAA8B,CAA9B;AACA,8OAAOA,GAAP,yBAAyB,CAAzB,oHAAsCG,YAAtC;AACD,SA3CD;AA4CD,OA9CD","file":"track.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\nimport select, { trackInitializeAndDestroy } from 'active-group';\nimport { getValueClass } from './class-factory.js';\nconst AValueClass = getValueClass();\n\ndescribe('instance tracking', function() {\n\n  it('track initialize and destroy utility', function() {\n    this.timeout(10000);\n\n    class ValueHolder {\n      constructor(val) { this.initialize(val); }\n      initialize(val) {\n        this.val = val\n      }\n      destroy() {}\n    }\n    \n    let neverTracked = new ValueHolder(10);\n    let beforeTracking = select(ValueHolder).filter(v => v.val >= 5);\n    new ValueHolder(10);\n    \n    trackInitializeAndDestroy(ValueHolder);\n    \n    let afterTracking = select(ValueHolder).filter(v => v.val >= 5);\n    \n    let spy = sinon.spy();\n\n    var threshold = { min: 0 },\n        initialValue = 3;\n    select(AValueClass).filter(data => data.value > threshold.min)\n      .reduce((acc, instance) => acc + instance.value, initialValue)\n      .onChange(spy);\n    expect(spy).to.not.have.been.called;\n\n    var instance1 = new AValueClass(42);\n    expect(spy).to.have.been.calledOnce;\n    expect(spy).to.have.been.calledWithMatch(\n      initialValue + instance1.value\n    );\n\n    var instance2 = new AValueClass(5);\n    expect(spy).to.have.been.calledTwice;\n    expect(spy).to.have.been.calledWithMatch(\n      initialValue + instance1.value + instance2.value\n    );\n\n    threshold.min = 50;\n    expect(spy).to.have.callCount(4);\n    expect(spy.lastCall.args[0]).to.equal(initialValue);\n  });\n});\n"]}