{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-active-expression-proxies/src/client/reactive/test/active-expression-proxies/active-expression-proxies.spec.js"],"names":["reset","chai","expect","sinon","sinonChai","use","describe","it","book","pages","genre","spy","ae","onChange","to","have","been","calledOnce","calledWith","not","called","another_spy","another_ae","wordsPerPage","calledTwice","magazine","title","spy1","spy2","spy3","books","maxPages","bookid","length","xit","push","pop","last","be","booksPages","reduce","sumOfPages","bookPages","map","find","item","average","sum","Set","add","size","delete","clear","values","Array","from","first","ae2","readers","Map","set","true","property","createRectangle","width","height","area","aspectRatio","i","targetAspectRatio","rect","desciptor","value","Object","defineProperty","equal"],"mappings":"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","file":"active-expression-proxies.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);\ndescribe(\"Proxy-based Implementation\", () => {\n  it(\"active expressions for simple object properties should detect changes\", () => {\n    const book = { pages: 230, genre: \"funny\" };\n    const spy = sinon.spy();\n    const ae = aexpr(() => book.pages);\n    ae.onChange(spy);\n    book.pages = 320;\n    expect(spy).to.have.been.calledOnce;\n    expect(spy).to.have.been.calledWith(320);\n  });\n  it(\"active expressions should not detect changes after a reset\", () => {\n    const book = { pages: 230, genre: \"funny\" };\n    const spy = sinon.spy();\n    const ae = aexpr(() => book.pages);\n    ae.onChange(spy);\n    book.pages = 320;    \n    reset();\n    book.pages = 400;\n    \n    expect(spy).to.have.been.calledOnce;\n    expect(spy).to.have.been.calledWith(320);\n  });\n\n  it(\"active expressions should not trigger if property assigment does not change the value of the observed expression\", () => {\n    const book = { pages: 230, genre: \"funny\" };\n    const spy = sinon.spy();\n    const ae = aexpr(() => book.pages);\n    ae.onChange(spy);\n\n    book.pages = 230;\n\n    expect(spy).to.not.have.been.called;\n  });\n  it(\"multiple active expressions depending on the same objects should detect changes\", () => {\n    const book = { pages: 230, genre: \"funny\" };\n    const spy = sinon.spy();\n    const another_spy = sinon.spy();\n    const ae = aexpr(() => book.pages);\n    const another_ae = aexpr(() => book.genre);\n    ae.onChange(spy);\n    another_ae.onChange(another_spy);\n\n    book.pages = 320;\n    book.genre = \"sad\";\n\n    expect(spy).to.have.been.calledOnce;\n    expect(spy).to.have.been.calledWith(320);\n    expect(another_spy).to.have.been.calledOnce;\n    expect(another_spy).to.have.been.calledWith(\"sad\");\n  });\n  it(\"active expressions involving simple arithmetic operations should detect changes \", () => {\n    const book = { pages: 230, genre: \"funny\", wordsPerPage: 500 };\n    const spy = sinon.spy();\n    const ae = aexpr(() => book.pages * book.wordsPerPage);\n    ae.onChange(spy);\n\n    book.pages = 320;\n    book.wordsPerPage = 400;\n\n    expect(spy).to.have.been.calledTwice;\n    expect(spy).to.have.been.calledWith(160000);\n    expect(spy).to.have.been.calledWith(128000);\n  });\n  it(\"active expressions involving several objects should detect changes \", () => {\n    const book = { pages: 230, genre: \"funny\" };\n    const magazine = { pages: 60, genre: \"cars\" };\n    const spy = sinon.spy();\n    const ae = aexpr(() => book.pages + magazine.pages);\n    ae.onChange(spy);\n\n    book.pages = 320;\n    magazine.pages = 70;\n\n    expect(spy).to.have.been.calledTwice;\n    expect(spy).to.have.been.calledWith(380);\n    expect(spy).to.have.been.calledWith(390);\n  });\n\n  it(\"active expressions involving an if statement should detect changes \", () => {\n    const book = { pages: 230, title: \"Good Book\", genre: \"funny\" };\n    const spy = sinon.spy();\n    const ae = aexpr(() => {\n      if (book.genre === \"funny\") {\n        return book.pages;\n      }\n      return book.title;\n    });\n    ae.onChange(spy);\n\n    book.genre = \"sad\";\n\n    expect(spy).to.have.been.calledOnce;\n    expect(spy).to.have.been.calledWith(\"Good Book\");\n  });\n\n  it(\"active expressions involving ternary statements should detect changes \", () => {\n    const book = { pages: 230, title: \"Good Book\", genre: \"funny\" };\n    const spy = sinon.spy();\n    const ae = aexpr(() => {\n      return book.genre === \"funny\" ? book.pages : book.title;\n    });\n    ae.onChange(spy);\n\n    book.genre = \"sad\";\n\n    expect(spy).to.have.been.calledOnce;\n    expect(spy).to.have.been.calledWith(\"Good Book\");\n\n    spy.reset();\n\n    book.title = \"Bad Book\";\n\n    expect(spy).to.have.been.calledOnce;\n    expect(spy).to.have.been.calledWith(\"Bad Book\");\n  });\n\n\n  it(\"all active expressions listening on a property should be checked\", () => {\n    const book = { pages: 230, title: \"Good Book\", genre: \"funny\" };\n    const spy1 = sinon.spy();\n    const spy2 = sinon.spy();\n    const spy3 = sinon.spy();\n\n    aexpr(() => book.genre).onChange(spy1);\n    aexpr(() => book.genre).onChange(spy2);\n    aexpr(() => book.genre).onChange(spy3);\n\n    book.genre = \"sad\";\n\n    expect(spy1).to.have.been.calledOnce;\n    expect(spy2).to.have.been.calledOnce;\n    expect(spy3).to.have.been.calledOnce;\n  });\n\n  describe(\"Loops and Active Expression\", () => {\n    it(\"active expressions involving for loops should detect changes \", () => {\n      const books = [\n        { pages: 230, title: \"Good Book\", genre: \"funny\" },\n        { pages: 231, title: \"Bad Book\", genre: \"sad\" },\n        { pages: 232, title: \"Odd Book\", genre: \"weird\" }\n      ];\n      const spy = sinon.spy();\n      const ae = aexpr(() => {\n        let maxPages = 0;\n        for (let bookid = 0; bookid < books.length; bookid++) {\n          if (books[bookid].pages > maxPages) {\n            maxPages = books[bookid].pages;\n          }\n        }\n        return maxPages;\n      });\n      ae.onChange(spy);\n\n      books[0].pages = 300;\n\n      expect(spy).to.have.been.calledOnce;\n      expect(spy).to.have.been.calledWith(300);\n\n      spy.reset();\n\n      books[0].pages = 100;\n\n      expect(spy).to.have.been.calledOnce;\n      expect(spy).to.have.been.calledWith(232);\n    });\n\n    it(\"active expressions involving for-of loops should detect changes \", () => {\n      const books = [\n        { pages: 230, title: \"Good Book\", genre: \"funny\" },\n        { pages: 231, title: \"Bad Book\", genre: \"sad\" },\n        { pages: 232, title: \"Odd Book\", genre: \"weird\" }\n      ];\n      const spy = sinon.spy();\n      const ae = aexpr(() => {\n        let maxPages = 0;\n        for (let book of books) {\n          if (book.pages > maxPages) {\n            maxPages = book.pages;\n          }\n        }\n        return maxPages;\n      });\n      ae.onChange(spy);\n\n      books[0].pages = 300;\n\n      expect(spy).to.have.been.calledOnce;\n      expect(spy).to.have.been.calledWith(300);\n\n      spy.reset();\n\n      books[0].pages = 100;\n\n      expect(spy).to.have.been.calledOnce;\n      expect(spy).to.have.been.calledWith(232);\n    });\n  });\n\n  describe(\"Arrays and Active Expression\", () => {\n\n    xit(\"active expressions listening to changes for array containers should trigger\", () => {\n      const books = [\"HP\", \"GOT\"];\n      const spy = sinon.spy();\n      const ae = aexpr(() => books);\n      ae.onChange(spy);\n\n      books.push(\"LOTR\");\n      books.pop();\n\n      expect(spy).to.have.been.calledTwice;\n      expect(spy).to.have.been.calledWith(\"LOTR\");\n      expect(spy).to.have.been.calledWith(\"GOT\");\n    });\n\n    it(\"active expressions involving arrays last property should detect changes\", () => {\n      const books = [\"HP\", \"GOT\"];\n      const spy = sinon.spy();\n      const ae = aexpr(() => books.last);\n      ae.onChange(spy);\n\n      books.push(\"LOTR\");\n      books.pop();\n\n      expect(spy).to.have.been.calledTwice;\n      expect(spy).to.have.been.calledWith(\"LOTR\");\n      expect(spy).to.have.been.calledWith(\"GOT\");\n    });\n\n    it(\"active expressions involving unchanged array values should not trigger\", () => {\n      let books = [\"myBook\", \"yourBook\"];\n      const spy = sinon.spy();\n      const ae = aexpr(() => books);\n      ae.onChange(spy);\n\n      books = [\"myBook\", \"yourBook\"];\n\n      expect(spy).not.to.be.called;\n    });\n\n    it(\"active expressions involving reduce operations should detect changes \", () => {\n      const booksPages = [100, 200, 300];\n      const spy = sinon.spy();\n      const ae = aexpr(() => {\n        return booksPages.reduce(\n          (sumOfPages, bookPages) => sumOfPages + bookPages,\n          0\n        );\n      });\n      ae.onChange(spy);\n\n      booksPages.push(100);\n\n      expect(spy).to.have.been.calledOnce;\n      expect(spy).to.have.been.calledWith(700);\n\n      spy.reset();\n    });\n\n    it(\"active expressions involving map operations should detect changes \", () => {\n      const booksPages = [100, 200, 300];\n      const spy = sinon.spy();\n      const ae = aexpr(() => {\n        return booksPages.map(pages => pages).find(item => item > 300);\n      });\n      ae.onChange(spy);\n\n      booksPages.push(900);\n\n      expect(spy).to.have.been.calledOnce;\n      expect(spy).to.have.been.calledWith(900);\n\n      spy.reset();\n    });\n\n    it(\"active expressions involving average operations should detect changes \", () => {\n      const booksPages = [100, 200, 300];\n      const spy = sinon.spy();\n      const ae = aexpr(() => booksPages.average());\n      ae.onChange(spy);\n\n      booksPages.push(100);\n\n      expect(spy).to.have.been.calledOnce;\n      expect(spy).to.have.been.calledWith(175);\n\n      spy.reset();\n    });\n\n    it(\"active expressions involving sum operations should detect changes \", () => {\n      const booksPages = [100, 200, 300];\n      const spy = sinon.spy();\n      const ae = aexpr(() => booksPages.sum());\n      ae.onChange(spy);\n\n      booksPages.push(100);\n\n      expect(spy).to.have.been.calledOnce;\n      expect(spy).to.have.been.calledWith(700);\n\n      spy.reset();\n    });\n  });\n\n  describe(\"Sets and Active Expression\", () => {\n\n    xit(\"active expressions listening to changes for set containers should trigger\", () => {\n      const books = new Set([\"HP\", \"LOTR\"]);\n      const spy = sinon.spy();\n      const ae = aexpr(() => books);\n      ae.onChange(spy);\n\n      books.add(\"GOT\");\n\n      expect(spy).to.have.been.calledOnce;\n      expect(spy).to.have.been.calledWith(books);\n    });\n\n    it(\"active expressions involving Set.add should detect changes in the size of the set\", () => {\n      const books = new Set([\"HP\", \"LOTR\"]);\n      const spy = sinon.spy();\n      const ae = aexpr(() => books.size);\n      ae.onChange(spy);\n\n      books.add(\"GOT\");\n\n      expect(spy).to.have.been.calledOnce;\n      expect(spy).to.have.been.calledWith(3);\n      spy.reset();\n    });\n\n    it(\"active expressions involving Set.delete should detect changes in the size of the set\", () => {\n      const books = new Set([\"HP\", \"LOTR\"]);\n      const spy = sinon.spy();\n      const ae = aexpr(() => books.size);\n      ae.onChange(spy);\n\n      books.delete(\"LOTR\");\n\n      expect(spy).to.have.been.calledOnce;\n      expect(spy).to.have.been.calledWith(1);\n      spy.reset();\n    });\n\n    it(\"active expressions involving Set.clear should detect changes in the size of the set\", () => {\n      const books = new Set([\"HP\", \"LOTR\"]);\n      const spy = sinon.spy();\n      const ae = aexpr(() => books.size);\n      ae.onChange(spy);\n\n      books.clear();\n\n      expect(spy).to.have.been.calledOnce;\n      spy.reset();\n    });\n\n    it(\"active expressions involving Set.add should detect changes in the values() of the set\", () => {\n      const books = new Set([\"HP\", \"LOTR\"]);\n      const spy = sinon.spy();\n      const ae = aexpr(() => books.values());\n      ae.onChange(spy);\n\n      books.add(\"GOT\");\n\n      expect(spy).to.have.been.calledOnce;\n      spy.reset();\n    });\n\n    it(\"active expressions involving Set.delete should detect changes in the values() of the set\", () => {\n      const books = new Set([\"HP\", \"LOTR\"]);\n      const spy = sinon.spy();\n      const ae = aexpr(() => books.values());\n      ae.onChange(spy);\n\n      books.delete(\"LOTR\");\n\n      expect(spy).to.have.been.calledOnce;\n      spy.reset();\n    });\n\n    it(\"active expressions involving Set.clear should detect changes in the values() of the set\", () => {\n      const books = new Set([\"HP\", \"LOTR\"]);\n      const spy = sinon.spy();\n      const ae = aexpr(() => books.values());\n      ae.onChange(spy);\n\n      books.clear();\n\n      expect(spy).to.have.been.calledOnce;\n      spy.reset();\n    });\n\n    it(\"active expressions involving Set.add should not detect changes in unchanged internals of the set\", () => {\n      const books = new Set([\"HP\", \"LOTR\"]);\n      const spy = sinon.spy();\n      const ae = aexpr(() => Array.from(books).first);\n      const ae2 = aexpr(() => Array.from(books).last);\n      ae.onChange(spy);\n      ae2.onChange(spy);\n\n      books.add(\"HP\");\n\n      expect(spy).to.not.have.been.called;\n      spy.reset();\n    });\n\n    it(\"active expressions involving Array.from on Sets should detect changes\", () => {\n      const books = new Set([\"HP\", \"LOTR\"]);\n      const spy = sinon.spy();\n      const ae = aexpr(() => Array.from(books).length);\n      ae.onChange(spy);\n\n      books.add(\"GOT\");\n\n      expect(spy).to.have.been.calledOnce;\n      spy.reset();\n    });\n  });\n\n  describe(\"Maps and Active Expression\", () => {\n\n    xit(\"active expressions listening to changes for map containers should trigger\", () => {\n      const readers = new Map([\n        [\"first\", \"Nico\"],\n        [\"second\", \"Jonas\"]\n      ]);\n\n      const spy = sinon.spy();\n      const ae = aexpr(() => readers);\n      ae.onChange(spy);\n\n      readers.set(\"third\", \"Stefan\");\n\n      expect(spy).to.have.been.calledOnce;\n      expect(spy).to.have.been.calledWith(readers);\n    });\n\n    it(\"active expressions involving Map.set should detect changes in the size of the Map\", () => {\n      const readers = new Map([\n        [\"first\", \"Nico\"],\n        [\"second\", \"Jonas\"]\n      ]);\n      const spy = sinon.spy();\n      const ae = aexpr(() => readers.size);\n      ae.onChange(spy);\n      readers.set(\"first\", \"Stefan\");\n      readers.set(\"third\", \"Jens\");\n\n      expect(spy).to.have.been.calledOnce;\n      expect(spy).to.have.been.calledWith(3);\n\n      spy.reset();\n    });\n\n    it(\"active expressions involving Map.clear should detect changes in the size of the Map\", () => {\n      const readers = new Map([\n        [\"first\", \"Nico\"],\n        [\"second\", \"Jonas\"]\n      ]);\n      const spy = sinon.spy();\n      const ae = aexpr(() => readers.size);\n      ae.onChange(spy);\n\n      readers.clear();\n\n      expect(spy).to.have.been.calledOnce;\n      spy.reset();\n    });\n\n    it(\"active expressions involving Map.delete should detect changes in the size of the Map\", () => {\n      const readers = new Map([\n        [\"first\", \"Nico\"],\n        [\"second\", \"Jonas\"]\n      ]);\n      const spy = sinon.spy();\n      const ae = aexpr(() => readers.size);\n      ae.onChange(spy);\n      readers.delete(\"first\");\n\n      expect(spy).to.have.been.calledOnce;\n      expect(spy).to.have.been.calledWith(1);\n\n      spy.reset();\n    });\n\n    it(\"active expressions involving Map.set should detect changes in the values() of the Map\", () => {\n      const readers = new Map([\n        [\"first\", \"Nico\"],\n        [\"second\", \"Jonas\"]\n      ]);\n      const spy = sinon.spy();\n      const ae = aexpr(() => readers.values());\n      ae.onChange(spy);\n\n      readers.set(\"third\", \"Jens\");\n\n      expect(spy).to.have.been.calledOnce;\n      spy.reset();\n    });\n\n    it(\"active expressions involving Map.clear should detect changes in the values() of the Map\", () => {\n      const readers = new Map([\n        [\"first\", \"Nico\"],\n        [\"second\", \"Jonas\"]\n      ]);\n      const spy = sinon.spy();\n      const ae = aexpr(() => readers.values());\n      ae.onChange(spy);\n\n      readers.clear();\n\n      expect(spy).to.have.been.calledOnce;\n      spy.reset();\n    });\n\n    it(\"active expressions involving Map.delete should detect changes in the values() of the Map\", () => {\n      const readers = new Map([\n        [\"first\", \"Nico\"],\n        [\"second\", \"Jonas\"]\n      ]);\n      const spy = sinon.spy();\n      const ae = aexpr(() => readers.values());\n      ae.onChange(spy);\n      readers.delete(\"first\");\n\n      expect(spy).to.have.been.calledOnce;\n\n      spy.reset();\n    });\n\n    it(\"active expressions involving Map.set should not detect changes in unchanged internals of the Map\", () => {\n      const readers = new Map([\n        [\"first\", \"Nico\"],\n        [\"second\", \"Jonas\"]\n      ]);\n      const spy = sinon.spy();\n      const ae = aexpr(() => Array.from(readers).first);\n      const ae2 = aexpr(() => Array.from(readers).last);\n      ae.onChange(spy);\n      ae2.onChange(spy);\n      readers.set(\"first\", \"Nico\");\n\n      expect(spy).to.not.have.been.called;\n\n      spy.reset();\n    });\n\n    it(\"active expressions involving Array.from on Maps should detect changes\", () => {\n      const readers = new Map([\n        [\"first\", \"Nico\"],\n        [\"second\", \"Jonas\"]\n      ]);\n      const spy = sinon.spy();\n      const ae = aexpr(() => Array.from(readers).length);\n      ae.onChange(spy);\n\n      readers.set(\"third\", \"Stefan\");\n\n      expect(spy).to.have.been.calledOnce;\n      expect(spy).to.have.been.calledWith(3);\n\n      spy.reset();\n    });\n  });\n\n  it(\"active expression should detect usage of delete of object properties\", () => {\n    let book = {\n      pages: 42,\n      genre: \"funny\"\n    };\n\n    expect(delete book.pages).to.be.true;\n\n    expect(book).to.not.have.property(\"pages\");\n    expect(book).to.have.property(\"genre\");\n\n    expect(delete book[\"genre\"]).to.be.true;\n\n    expect(book).to.not.have.property(\"pages\");\n    expect(book).to.not.have.property(\"genre\");\n  });\n\n  it(\"active expression should detect changes for deleted object properties\", () => {\n    let book = {\n      pages: 42,\n      genre: \"funny\"\n    };\n\n    const spy = sinon.spy();\n    const ae = aexpr(() => book.pages);\n    ae.onChange(spy);\n\n    delete book[\"pages\"];\n\n    expect(spy).to.have.been.calledOnce;\n\n    spy.reset();\n  });\n\n\n  describe(\"Reset method\", () => {\n    it(\"should be able to reset between loop iterations\", () => {\n      function createRectangle(width = 10, height = 20) {\n        return {\n          width,\n          height,\n          area() {\n            return this.width * this.height;\n          },\n          aspectRatio() {\n            return this.width / this.height;\n          }\n        }\n      }\n\n      for (let i = 0; i < 5; i++) {\n        const targetAspectRatio = 2;\n        const rect = createRectangle(20, 10);\n\n        const ae = aexpr(() => rect.aspectRatio());\n        ae.onChange(() => (rect.height = rect.width / targetAspectRatio));\n\n        rect.width = 100;\n        reset();\n      }\n    });\n  });\n});\n\ndescribe(\"Descriptor in Objects.define property\", () => {\n  it(\"should be unwrapped when is a Proxy\", () => {\n    const book = {};\n    const desciptor = { value: 42 };\n    Object.defineProperty(book, \"pages\", desciptor);\n\n    expect(book.pages).to.equal(42);\n  });\n\n  it(\"should not be wrapped when Object\", () => {\n    const book = {};\n    Object.defineProperty(book, \"pages\", { value: 42 });\n\n    expect(book.pages).to.equal(42);\n  });\n});\n"]}