{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-core/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","onChange","instance1","instance2"],"mappings":"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","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"]}