{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-active-expression-proxies/test/github-test.js"],"names":["expect","Github","that","setupGithub","_token","issues","_issues","Promise","resolve","describe","before","it","done","issue","issueByTitle","title","to","equals","issueByNumber","lastStoryNumber","create","body","number","patch","issuePatch","labels","map","l","id","name","find","ea","Error","result","parseMarkdownStories","project","comment","state","rest","item","length","undefined","be","a","have","items","stories","comments","deep","labelToTag","tagToLabel","stringifyMarkdownStories","syncMarkdownStories","not","e","equal","contain","oldCreate","of"],"mappings":"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","file":"github-test.js","sourcesContent":["// #Clipboard #Test\n\nimport {expect} from 'src/external/chai.js';\nimport Github from 'src/client/github.js'\n\nvar that;\n\nfunction setupGithub() {\n  that = new Github()    \n  that._token = \"xxx_this_is_not_a_token\"\n  that.issues = function() {\n    if (!this._issues) {\n      this._issues = [{\n      \"url\": \"https:\\/\\/api.github.com\\/repos\\/LivelyKernel\\/lively4-core\\/issues\\/108\",\n      \"repository_url\": \"https:\\/\\/api.github.com\\/repos\\/LivelyKernel\\/lively4-core\",\n      \"labels_url\": \"https:\\/\\/api.github.com\\/repos\\/LivelyKernel\\/lively4-core\\/issues\\/108\\/labels{\\/name}\",\n      \"comments_url\": \"https:\\/\\/api.github.com\\/repos\\/LivelyKernel\\/lively4-core\\/issues\\/108\\/comments\",\n      \"events_url\": \"https:\\/\\/api.github.com\\/repos\\/LivelyKernel\\/lively4-core\\/issues\\/108\\/events\",\n      \"html_url\": \"https:\\/\\/github.com\\/LivelyKernel\\/lively4-core\\/issues\\/108\",\n      \"id\": 240440332,\n      \"number\": 108,\n      \"title\": \"found a bug\",\n      \"user\": {\n        \"login\": \"JensLincke\",\n        \"id\": 1466247, /* ... */\n        \"type\": \"User\",\n        \"site_admin\": false\n      },\n      \"labels\": [\n         {\"id\":365044053,\"name\":\"comp: lively sync\",\"color\":\"bfd4f2\",\"default\":false},\n         {\"id\":412921943,\"name\":\"effort1: easy (hour)\",\"color\":\"c2e0c6\",\"default\":false},\n         {\"id\":412921768,\"name\":\"P0: critical\",\"color\":\"b60205\",\"default\":false},\n         {\"id\":266209579,\"name\":\"type: bug\",\"color\":\"e6e6e6\",\"default\":false}\n      ],\n      \"state\": \"open\",\n      \"locked\": false,\n      \"assignee\": null,\n      \"assignees\": [\n      ],\n      \"milestone\": null,\n      \"comments\": 0,\n      \"created_at\": \"2017-07-04T14:42:36Z\",\n      \"updated_at\": \"2017-07-04T14:42:36Z\",\n      \"closed_at\": null,\n      \"body\": \"just kidding\"\n    }];\n        \n    }\n   return Promise.resolve(this._issues) \n  }\n}\n\n\ndescribe('Github', () => {\n  before(\"setup\", () => { setupGithub() });\n\n  describe('issueByTitle', () => {\n    it('finds the issue', async (done) => {\n      var issue = await that.issueByTitle(\"found a bug\")\n      expect(issue.title).to.equals(\"found a bug\")\n      done()\n    });\n  })\n  \n  describe('issueByNumber', () => {\n    it('finds the issue', async (done) => {\n      var issue = await that.issueByNumber(108)\n      expect(issue.title).to.equals(\"found a bug\")\n      done()\n    });\n  })\n})\n  \ndescribe('Github Stories', () => {\n  before(\"setup\", () => { \n    setupGithub() \n    var lastStoryNumber =1;\n    that.create = function(title, body) {\n      return Promise.resolve({\n        number: lastStoryNumber++,\n        title, \n        body,\n      })\n    }\n    \n    that.patch = function(number, issuePatch) {\n      var labels = issuePatch.labels && issuePatch.labels.map(l => ({ id: 0, name: l})) \n      var issue = this._issues.find(ea => ea.number == number)\n      // lively.notify(\"patch issue \" + number)\n      if (!issue) throw new Error(\"issue not there (\" + number + \")\")\n      issue.labels = labels\n      return Promise.resolve({\n        number: lastStoryNumber,\n        title: issuePatch.title, \n        body: issuePatch.body,\n        labels: labels\n      })\n    }\n  });\n  \n  describe('parseMarkdownStories', () => {\n    \n    it('parses a project', () => {\n      var result = that.parseMarkdownStories(\"## A Project\")\n      expect(result[0].project).to.equals(\"A Project\")\n    });\n    it('parses a commect', () => {\n      var result = that.parseMarkdownStories(\"this is a comment\")\n      expect(result[0].comment).to.equals(\"this is a comment\")\n    });\n    it('parses a story', () => {\n      var result = that.parseMarkdownStories(\"- a story\")\n      expect(result[0].title).to.equals(\"a story\")\n    });\n    it('parses a story with number', () => {\n      var result = that.parseMarkdownStories(\"- a story #123\")\n      expect(result[0].number).to.equals(123)\n    });\n    it('parses a story with state open', () => {\n      var result = that.parseMarkdownStories(\"- a story #open\")\n      expect(result[0].state).to.equals(\"open\")\n    });\n    it('parses a story with state closed', () => {\n      var result = that.parseMarkdownStories(\"- a story #closed\")\n      expect(result[0].state).to.equals(\"closed\")\n    });\n\n    it('parses a story with rest', () => {\n      var result = that.parseMarkdownStories(\"- a story 3P #Foo bla #123\")\n      expect(result[0].title).to.equals(\"a story\")\n      expect(result[0].rest).to.equals(\"3P bla\")\n    });\n    \n    it('parses a story with rest and whitespace', () => {\n      var result = that.parseMarkdownStories(\"- a story     3P #Foo bla #123\")\n      expect(result[0].title).to.equals(\"a story\")\n      expect(result[0].rest).to.equals(\"3P bla\")\n    });\n\n    it('parses an item', () => {\n      var result = that.parseMarkdownStories(\"  - an item\")\n      expect(result[0].item).to.equals(\"- an item\")\n    });\n    it('parses a story with project', () => {\n      var result = that.parseMarkdownStories(\"## a project\\n- a story\")\n      expect(result[1].project).to.equals(\"a project\")\n    });\n\n    it('parses a story with no project', () => {\n      var result = that.parseMarkdownStories(\"## a project\\n<!--NoProject-->\\n- a story\")\n      expect(result).length(3)\n      expect(result[2].project).to.equals(undefined)\n    });\n\n    it('parses a story with labels', () => {\n      var result = that.parseMarkdownStories(\"- a story #bug\")\n      expect(result[0].labels).to.be.a(\"array\")\n      expect(result[0].labels).to.have.length(1)\n      expect(result[0].labels[0]).to.equals(\"type: bug\")\n    });\n    it('parses a story with comp labels', () => {\n      var result = that.parseMarkdownStories(\"- a story #LivelySync\")\n      expect(result[0].labels[0]).to.equals(\"comp: lively sync\")\n    });\n\n    it('parses a story with effort labels', () => {\n      var result = that.parseMarkdownStories(\"- a story #easy\")\n      expect(result[0].labels[0]).to.equals(\"effort1: easy (hour)\")\n    });\n\n    it('parses a story with unknow labels', () => {\n      var result = that.parseMarkdownStories(\"- a story #FooBarBaz\")\n      expect(result[0].labels[0]).to.equals(\"comp: foo bar baz\")\n    });\n\n    it('parses a story with items', () => {\n      var result = that.parseMarkdownStories(\"- a story\\n - an item\")\n      expect(result[0].items[0].item).to.equals(\"- an item\")\n      expect(result).to.length(2)\n    });\n\n    it('parses a story with items recursively', () => {\n      var result = that.parseMarkdownStories(\"- a story\\n - an item\", true)\n      expect(result[0].items[0].item).to.equals(\"- an item\")\n      expect(result, \"items are only in story\").to.length(1)\n    });\n    \n    it('parses a project with story with items recursively', () => {\n      var result = that.parseMarkdownStories(\"## a project\\n- a story\\n - an item\", true)\n      expect(result, \"stories are only in project\").to.length(1)\n      expect(result[0].stories[0].items[0].item).to.equals(\"- an item\")\n    });\n\n    it('parses a project with comments and story with items recursively', () => {\n      var result = that.parseMarkdownStories(\"## a project\\na comment\\n\\n- a story\\n - an item\", true)\n      expect(result, \"stories are only in project\").to.length(1)\n      expect(result[0].stories[0].items[0].item).to.equals(\"- an item\")\n      expect(result[0].comments[0].comment).to.equals(\"a comment\")\n      expect(result[0].comments[1].comment).to.equals(\"\")\n    });\n\n    \n    it(\"removes duplicate entries on parsing\", () => {\n      var result = that.parseMarkdownStories(\"- a story #easy #LivelyUi #LivelyUi #easy #open #115\")\n      expect(result[0].title).to.equals(\"a story\")\n      expect(result[0].labels).length(2)\n      expect(result[0].labels, \"label\").to.deep.equals([\"effort1: easy (hour)\", \"comp: lively ui\"])\n      expect(result[0].rest, \"rest\").to.equals(\"\")\n    })\n    \n  })\n  \n  describe('fix label', () => {\n    it('bug', () => {\n      expect(that.labelToTag(\"type: bug\")).to.equals(\"#bug\")\n    })\n    it('comp: lively sync', () => {\n      expect(that.labelToTag(\"comp: lively sync\")).to.equals(\"#LivelySync\")\n    })\n    it('effort1: easy (hour)', () => {\n      expect(that.labelToTag(\"effort1: easy (hour)\")).to.equals(\"#easy\")\n      expect(that.labelToTag(\"effort2: medium (day)\")).to.equals(\"#medium\")\n      expect(that.labelToTag(\"effort3: hard (week)\")).to.equals(\"#hard\")\n\n    })\n    it('P0: critical', () => {\n      expect(that.labelToTag(\"P0: critical\")).to.equals(\"#critical\")\n    })\n  })\n  \n  describe('tagToLabel', () => {\n    it('bug', () => {\n      expect(that.tagToLabel(\"#bug\")).to.equals(\"type: bug\")\n    })\n    it('comp', () => {\n      expect(that.tagToLabel(\"#LivelySync\")).to.equals(\"comp: lively sync\")\n      expect(that.tagToLabel(\"#LivelyUi\")).to.equals(\"comp: lively ui\")\n    })\n    it('effort1: easy (hour)', () => {\n      expect(that.tagToLabel(\"#easy\")).to.equals(\"effort1: easy (hour)\")\n    })\n    it('P0: critical', () => {\n      expect(that.tagToLabel(\"#critical\")).to.equals(\"P0: critical\")\n    })\n\n    it('Priority', () => {\n      expect(that.tagToLabel(\"#urgent\")).to.equals(\"P1: urgent\")\n      expect(that.tagToLabel(\"#required\")).to.equals(\"P2: required\")\n      expect(that.tagToLabel(\"#important\")).to.equals(\"P3: important\")\n      expect(that.tagToLabel(\"#NiceToHave\")).to.equals(\"P4: nice to have\")\n    })\n  })\n\n  describe('stringifyMarkdownStories', () => {\n    it('prints a project', () => {\n      var result = that.stringifyMarkdownStories([{project: \"A Project\"}])\n      expect(result).to.equals(\"## A Project\")\n    });\n    \n    it('prints a story', () => {\n      var result = that.stringifyMarkdownStories([{title: \"a story\"}])\n      expect(result).to.equals(\"- a story\")\n    });\n    it('prints a story with number', () => {\n      var result = that.stringifyMarkdownStories([\n        {title: \"a story\", number: 123}])\n      expect(result).to.equals(\"- a story #123\")\n    });\n\n    it('prints a story with rest', () => {\n      var result = that.stringifyMarkdownStories([\n        {title: \"a story\", rest: \"3P\"}])\n      expect(result).to.equals(\"- a story 3P\")\n    });\n\n    it('prints a story with state', () => {\n      var result = that.stringifyMarkdownStories([\n        {title: \"a story\", state: \"open\"}])\n      expect(result).to.equals(\"- a story #open\")\n    });\n\n    it('prints a story with state closed', () => {\n      var result = that.stringifyMarkdownStories([\n        {title: \"a story\", state: \"closed\"}])\n      expect(result).to.equals(\"- a story #closed\")\n    });\n\n    it('prints a story with labels', () => {\n      var result = that.stringifyMarkdownStories([\n        {title: \"a story\", state: \"closed\", labels: [\"type: bug\"]}])\n      expect(result).to.equals(\"- a story #bug #closed\")\n    });\n\n\n    it('prints a story without project in label', () => {\n      var result = that.stringifyMarkdownStories([\n        {title: \"a story\", project: \"A Project\", labels: [\"comp: a project\", \"type: bug\"]}])\n      expect(result).to.equals(\"- a story #bug\")\n    });\n\n    it('prints a story without project in label BaseSystem Bug', () => {\n      var stories = that.parseMarkdownStories(\"## Base System\\n- Load lively from external web pages #feature #BaseSystem #open #41\")\n      var result = that.stringifyMarkdownStories(stories)\n      expect(result).to.equals(\"## Base System\\n- Load lively from external web pages #feature #open #41\")\n    });\n\n    it('prints a story recursively', () => {\n      var result = that.stringifyMarkdownStories([\n        {title: \"a story\", project: \"A Project\", items: [{item: \"- an item\"}]}], true)\n      expect(result).to.equals(\"- a story\\n  - an item\")\n    });\n\n    it('prints a project recursively', () => {\n      var result = that.stringifyMarkdownStories([\n        {project: \"A Project\", stories: [\n            {title: \"a story\", project: \"A Project\", items: [{item: \"- an item\"}]}\n          ]\n        }], true)\n      expect(result).to.equals(\"## A Project\\n- a story\\n  - an item\")\n    });\n\n    it('prints a project with comments recursively', () => {\n      var result = that.stringifyMarkdownStories([\n        { \n          project: \"A Project\", \n          stories: [{title: \"a story\", project: \"A Project\", items: [{item: \"- an item\"}]}],\n          comments: [{comment: \"a comment\"}, {comment: \"\"}]\n        }], true)\n      expect(result).to.equals(\"## A Project\\na comment\\n\\n- a story\\n  - an item\")\n    });\n\n\n    it('prints an item', () => {\n      var result = that.stringifyMarkdownStories([{item: \"- an item\"}])\n      expect(result).to.equals(\"  - an item\")\n    });\n\n\n  })\n  \n  describe('syncMarkdownStories', () => {\n\n    it('create new issue', async (done) => {\n      try {\n        var stories = [{title: \"a new story\"}];\n        await that.syncMarkdownStories(stories)\n        expect(stories[0].number).not.to.be.undefined\n      } catch(e) {\n        return done(e)\n      }\n      done()\n    });\n    \n    it(\"don't create new issue if number is there\", async (done) => {\n      try {\n        var stories = [{title: \"a new story\", number: 301}];\n        await that.syncMarkdownStories(stories)\n        expect(stories[0].number).to.equal(301)\n      } catch(e) {\n        return done(e)\n      }\n      done()\n    });\n\n    it(\"update labels from github\", async (done) => {\n      try {\n        var stories = [{title: \"found a bug\", number: 108}];\n        await that.syncMarkdownStories(stories)\n        expect(stories[0].labels).to.contain(\"comp: lively sync\")\n      } catch(e) {\n        return done(e)\n      }\n      done()\n    });\n\n    it(\"dont throw away local labels\", async (done) => {\n      try {\n        var stories = [{title: \"found a bug\", labels: [\"comp: foo bar\"], number: 108}];\n        await that.syncMarkdownStories(stories)\n        expect(stories[0].labels).to.contain(\"comp: foo bar\")\n      } catch(e) {\n        return done(e)\n      }\n      done()\n    });\n\n\n    it(\"don't create new issue if exact title is there\", async (done) => {\n      try {\n        var oldCreate = that.create\n        that.create = function() { done(new Error(\"create should not be called\"))}\n        var stories = [{title: \"found a bug\"}];\n        await that.syncMarkdownStories(stories)\n        expect(stories.length).to.equal(1)\n        expect(stories[0].number).to.equal(108)\n      } catch(e) {\n        that.create\n        return done(e)\n      } finally {\n        that.create = oldCreate\n      }\n      done()\n    });\n\n\n    it(\"add issues that were in github, but not in stories\", async (done) => {\n      try {\n        var stories = [{title: \"a new story\", number: 301}];\n        await that.syncMarkdownStories(stories)\n        expect(stories.length, \"size of stories\").to.equal(2)\n        expect(stories[1].number).to.equal(108)\n      } catch(e) {\n        return done(e)\n      }\n      done()\n    });\n\n    it(\"add issues that were in github, but not in stories\", async (done) => {\n      try {\n        var stories = [{title: \"a new story\", number: 301}];\n        await that.syncMarkdownStories(stories)\n        expect(stories.length, \"size of stories\").to.equal(2)\n        expect(stories[1].number).to.equal(108)\n      } catch(e) {\n        return done(e)\n      }\n      done()\n    });\n\n    it(\"updates project as label\", async (done) => {\n      try {\n        var stories = [{project: \"a project\", labels: [], title: \"found a bug\", number: 108}];\n        expect(that._issues[0].labels.length).to.equal(4)\n        await that.syncMarkdownStories(stories)\n        expect(that._issues[0].labels.length, \"normal sync\").to.equal(5)\n        \n        await that.syncMarkdownStories(stories)\n        expect(that._issues[0].labels.length, \"wrong issues: \" + \n          that._issues[0].labels.map(ea => ea.name)).to.equal(5)\n        \n        expect(stories[0].labels).to.be.of.length(5)\n      } catch(e) {\n        return done(e)\n      }\n      done()\n    });\n\n\n\n    \n  })\n  \n  \n  \n  \n});"]}