diff options
Diffstat (limited to 'spec/javascripts/graphs/stat_graph_contributors_util_spec.js')
-rw-r--r-- | spec/javascripts/graphs/stat_graph_contributors_util_spec.js | 212 |
1 files changed, 212 insertions, 0 deletions
diff --git a/spec/javascripts/graphs/stat_graph_contributors_util_spec.js b/spec/javascripts/graphs/stat_graph_contributors_util_spec.js new file mode 100644 index 00000000000..5b992447473 --- /dev/null +++ b/spec/javascripts/graphs/stat_graph_contributors_util_spec.js @@ -0,0 +1,212 @@ +//= require graphs/stat_graph_contributors_util + +describe("ContributorsStatGraphUtil", function () { + + describe("#parse_log", function () { + it("returns a correctly parsed log", function () { + var fake_log = [ + {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}] + + 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: + [ + { + 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} + } + ] + } + 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() + }) + + }) + + // TODO: fix or remove + //describe("#store_commits", function () { + //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_commits(fake_total, fake_by_author) + //expect(ContributorsStatGraphUtil.add.argsForCall).toEqual([["fake_total", "commits", 1], ["fake_by_author", "commits", 1]]) + //}) + //}) + + 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) + }) + }) + + // 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]]) + //}) + //}) + + // 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]]) + //}) + //}) + + 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 () { + var fake_author = { author_name: "Author", author_email: 'fake@email.com' } + 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") + }) + }) + + 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 = { + 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} + } + ] + } + 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} + ] + 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 () { + var fake_log_entry = { author_name: "Karlo Soriano", author_email: "karlo@email.com", + "2013-05-09": {date: "2013-05-09", additions: 471, deletions: 0, commits: 1} + } + var correct_parsed_log = {author_name:"Karlo Soriano",author_email:"karlo@email.com",dates:{"2013-05-09":1},deletions:0,additions:471,commits:1} + 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) + }) + }) + + +}) |