BigW Consortium Gitlab

stat_graph_contributors_util_spec.js 9.21 KB
Newer Older
1 2
//= require stat_graph_contributors_util

3 4 5 6 7
describe("ContributorsStatGraphUtil", function () {

  describe("#parse_log", function () {
    it("returns a correctly parsed log", function () {
      var fake_log = [
8 9 10 11
            {author_email: "karlo@email.com", author_name: "Karlo Soriano", date: "2013-05-09", additions: 471},
            {author_email: "dzaporozhets@email.com", author_name: "Dmitriy Zaporozhets", date: "2013-05-08", additions: 6, deletions: 1},
            {author_email: "dzaporozhets@email.com", author_name: "Dmitriy Zaporozhets", date: "2013-05-08", additions: 19, deletions: 3},
            {author_email: "dzaporozhets@email.com", author_name: "Dmitriy Zaporozhets", date: "2013-05-08", additions: 29, deletions: 3}]
12 13 14 15 16 17 18 19
      
      var correct_parsed_log = {
        total: [
        {date: "2013-05-09", additions: 471, deletions: 0, commits: 1},
        {date: "2013-05-08", additions: 54, deletions: 7, commits: 3}],
        by_author:
        [
        { 
20
          author_name: "Karlo Soriano", author_email: "karlo@email.com",
21 22 23
          "2013-05-09": {date: "2013-05-09", additions: 471, deletions: 0, commits: 1}
        },
        {
24
          author_name: "Dmitriy Zaporozhets",author_email: "dzaporozhets@email.com",
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
          "2013-05-08": {date: "2013-05-08", additions: 54, deletions: 7, commits: 3}
        }
        ]
      }
      expect(ContributorsStatGraphUtil.parse_log(fake_log)).toEqual(correct_parsed_log)
    })
  })

  describe("#store_data", function () {

    var fake_entry = {author: "Karlo Soriano", date: "2013-05-09", additions: 471}
    var fake_total = {}
    var fake_by_author = {}

    it("calls #store_commits", function () {
      spyOn(ContributorsStatGraphUtil, 'store_commits')
      ContributorsStatGraphUtil.store_data(fake_entry, fake_total, fake_by_author)
      expect(ContributorsStatGraphUtil.store_commits).toHaveBeenCalled()
    })

    it("calls #store_additions", function () {
      spyOn(ContributorsStatGraphUtil, 'store_additions')
      ContributorsStatGraphUtil.store_data(fake_entry, fake_total, fake_by_author)
      expect(ContributorsStatGraphUtil.store_additions).toHaveBeenCalled()
    })

    it("calls #store_deletions", function () {
      spyOn(ContributorsStatGraphUtil, 'store_deletions')
      ContributorsStatGraphUtil.store_data(fake_entry, fake_total, fake_by_author)
      expect(ContributorsStatGraphUtil.store_deletions).toHaveBeenCalled()
    })

  })

59 60 61 62
  // TODO: fix or remove
  //describe("#store_commits", function () {
    //var fake_total = "fake_total"
    //var fake_by_author = "fake_by_author"
63

64 65 66 67 68 69
    //it("calls #add twice with arguments fake_total and fake_by_author respectively", function () {
      //spyOn(ContributorsStatGraphUtil, 'add')
      //ContributorsStatGraphUtil.store_commits(fake_total, fake_by_author)
      //expect(ContributorsStatGraphUtil.add.argsForCall).toEqual([["fake_total", "commits", 1], ["fake_by_author", "commits", 1]])
    //})
  //})
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84

  describe("#add", function () {
    it("adds 1 to current test_field in collection", function () {
      var fake_collection = {test_field: 10}
      ContributorsStatGraphUtil.add(fake_collection, "test_field", 1)
      expect(fake_collection.test_field).toEqual(11)
    })

    it("inits and adds 1 if test_field in collection is not defined", function () {
      var fake_collection = {}
      ContributorsStatGraphUtil.add(fake_collection, "test_field", 1)
      expect(fake_collection.test_field).toEqual(1)
    })
  })

85 86 87 88 89 90 91 92 93 94 95
  // TODO: fix or remove
  //describe("#store_additions", function () {
    //var fake_entry = {additions: 10}
    //var fake_total= "fake_total"
    //var fake_by_author = "fake_by_author"
    //it("calls #add twice with arguments fake_total and fake_by_author respectively", function () {
      //spyOn(ContributorsStatGraphUtil, 'add')
      //ContributorsStatGraphUtil.store_additions(fake_entry, fake_total, fake_by_author)
      //expect(ContributorsStatGraphUtil.add.argsForCall).toEqual([["fake_total", "additions", 10], ["fake_by_author", "additions", 10]])
    //})
  //})
96

97 98 99 100 101 102 103 104 105 106 107
  // TODO: fix or remove
  //describe("#store_deletions", function () {
    //var fake_entry = {deletions: 10}
    //var fake_total= "fake_total"
    //var fake_by_author = "fake_by_author"
    //it("calls #add twice with arguments fake_total and fake_by_author respectively", function () {
      //spyOn(ContributorsStatGraphUtil, 'add')
      //ContributorsStatGraphUtil.store_deletions(fake_entry, fake_total, fake_by_author)
      //expect(ContributorsStatGraphUtil.add.argsForCall).toEqual([["fake_total", "deletions", 10], ["fake_by_author", "deletions", 10]])
    //})
  //})
108 109 110 111 112 113 114 115 116 117 118 119

  describe("#add_date", function () {
    it("adds a date field to the collection", function () {
      var fake_date = "2013-10-02"
      var fake_collection = {}
      ContributorsStatGraphUtil.add_date(fake_date, fake_collection)
      expect(fake_collection[fake_date].date).toEqual("2013-10-02")
    })
  })

  describe("#add_author", function () {
    it("adds an author field to the collection", function () {
120
      var fake_author = { author_name: "Author", author_email: 'fake@email.com' }
Douwe Maan committed
121 122 123 124 125
      var fake_author_collection = {}
      var fake_email_collection = {}
      ContributorsStatGraphUtil.add_author(fake_author, fake_author_collection, fake_email_collection)
      expect(fake_author_collection[fake_author.author_name].author_name).toEqual("Author")
      expect(fake_email_collection[fake_author.author_email].author_name).toEqual("Author")
126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162
    })
  })

  describe("#get_total_data", function () {
    it("returns the collection sorted via specified field", function () {
      var fake_parsed_log = {
      total: [{date: "2013-05-09", additions: 471, deletions: 0, commits: 1},
      {date: "2013-05-08", additions: 54, deletions: 7, commits: 3}],
      by_author:[
      { 
        author: "Karlo Soriano", 
        "2013-05-09": {date: "2013-05-09", additions: 471, deletions: 0, commits: 1}
      },
      {
        author: "Dmitriy Zaporozhets",
        "2013-05-08": {date: "2013-05-08", additions: 54, deletions: 7, commits: 3}
      }
      ]};
      var correct_total_data = [{date: "2013-05-08", commits: 3},
      {date: "2013-05-09", commits: 1}];
      expect(ContributorsStatGraphUtil.get_total_data(fake_parsed_log, "commits")).toEqual(correct_total_data)
    })
  })

  describe("#pick_field", function () {
    it("returns the collection with only the specified field and date", function () {
      var fake_parsed_log_total = [{date: "2013-05-09", additions: 471, deletions: 0, commits: 1},
      {date: "2013-05-08", additions: 54, deletions: 7, commits: 3}];
      ContributorsStatGraphUtil.pick_field(fake_parsed_log_total, "commits")
      var correct_pick_field_data = [{date: "2013-05-09", commits: 1},{date: "2013-05-08", commits: 3}];
      expect(ContributorsStatGraphUtil.pick_field(fake_parsed_log_total, "commits")).toEqual(correct_pick_field_data)
    })
  })

  describe("#get_author_data", function () {
    it("returns the log by author sorted by specified field", function () {
      var fake_parsed_log = {
163 164 165 166 167 168 169 170 171 172 173 174 175 176
        total: [
          {date: "2013-05-09", additions: 471, deletions: 0, commits: 1}, 
          {date: "2013-05-08", additions: 54, deletions: 7, commits: 3}
        ],
        by_author: [
          { 
            author_name: "Karlo Soriano", author_email: "karlo@email.com",
            "2013-05-09": {date: "2013-05-09", additions: 471, deletions: 0, commits: 1}
          },
          {
            author_name: "Dmitriy Zaporozhets", author_email: "dzaporozhets@email.com",
            "2013-05-08": {date: "2013-05-08", additions: 54, deletions: 7, commits: 3}
          }
        ]
177
      }
178 179 180 181
      var correct_author_data = [
        {author_name:"Dmitriy Zaporozhets",author_email:"dzaporozhets@email.com",dates:{"2013-05-08":3},deletions:7,additions:54,"commits":3},
        {author_name:"Karlo Soriano",author_email:"karlo@email.com",dates:{"2013-05-09":1},deletions:0,additions:471,commits:1}
      ]
182 183 184 185 186 187
      expect(ContributorsStatGraphUtil.get_author_data(fake_parsed_log, "commits")).toEqual(correct_author_data)
    })
  })

  describe("#parse_log_entry", function () {
    it("adds the corresponding info from the log entry to the author", function () {
188
      var fake_log_entry =    { author_name: "Karlo Soriano", author_email: "karlo@email.com",
189 190
        "2013-05-09": {date: "2013-05-09", additions: 471, deletions: 0, commits: 1}
      }
191
      var correct_parsed_log = {author_name:"Karlo Soriano",author_email:"karlo@email.com",dates:{"2013-05-09":1},deletions:0,additions:471,commits:1}
192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211
      expect(ContributorsStatGraphUtil.parse_log_entry(fake_log_entry, 'commits', null)).toEqual(correct_parsed_log)
    })
  })

  describe("#in_range", function () {
    var date = "2013-05-09"
    it("returns true if date_range is null", function () {
      expect(ContributorsStatGraphUtil.in_range(date, null)).toEqual(true)
    })
    it("returns true if date is in range", function () {
      var date_range = [new Date("2013-01-01"), new Date("2013-12-12")]
      expect(ContributorsStatGraphUtil.in_range(date, date_range)).toEqual(true)
    })
    it("returns false if date is not in range", function () {
      var date_range = [new Date("1999-12-01"), new Date("2000-12-01")]
      expect(ContributorsStatGraphUtil.in_range(date, date_range)).toEqual(false)
    })
  })


212
})