diff --git a/tests/datas/reviewstats_1.csv b/tests/datas/reviewstats_1.csv new file mode 100644 index 0000000..152ef73 --- /dev/null +++ b/tests/datas/reviewstats_1.csv @@ -0,0 +1,16 @@ +20110930-12h00 1 +20111007-12h00 2 +20111014-12h00 4 +20111021-12h00 5 +20111028-12h00 10 +20111104-12h00 6 +20111111-12h00 1 +20111118-12h00 2 +20111125-12h00 4 +20111202-12h00 5 +20111209-12h00 1 +20111216-12h00 2 +20111223-12h00 4 +20111230-12h00 1 +20120106-12h00 2 +20120113-12h00 1 diff --git a/tests/datas/reviewstats_2.csv b/tests/datas/reviewstats_2.csv new file mode 100644 index 0000000..5747357 --- /dev/null +++ b/tests/datas/reviewstats_2.csv @@ -0,0 +1,16 @@ +20110930-12h00 1 +20111007-12h00 2 +20111014-12h00 4 +20111021-12h00 5 +20111028-12h00 10 +20111104-12h00 6 +20111111-12h00 1 +20111118-12h00 2 +20111125-12h00 4 +20111202-12h00 5 3 +20111209-12h00 1 7 +20111216-12h00 2 17 +20111223-12h00 4 5 +20111230-12h00 1 9 +20120106-12h00 2 5 +20120113-12h00 1 3 diff --git a/tests/test_review_stats.py b/tests/test_review_stats.py new file mode 100644 index 0000000..c277bab --- /dev/null +++ b/tests/test_review_stats.py @@ -0,0 +1,86 @@ +from datetime import datetime, timedelta +import re +import shutil + +from review.stats import Board, UserBoard, DurationBoard, ReviewData, ReviewStats + + +def setup_function(): + shutil.copyfile("tests/datas/reviewstats_1.csv", "tests/reviews/reviewstats_1.csv") + shutil.copyfile("tests/datas/reviewstats_2.csv", "tests/reviews/reviewstats_2.csv") + + +def load_reviewstats(filepath): + final_datas = [] + try: + with open(filepath) as file_handle: + lines = file_handle.read().splitlines() + for line in lines: + if line.strip() != "": + datas = re.split(r"\s+", line) + if len(datas) == 2: + final_datas.append( + ReviewData( + datetime.strptime(datas[0], "%Y%m%d-%Hh%M"), + int(datas[1]), + None, + ) + ) + else: + final_datas.append( + ReviewData( + datetime.strptime(datas[0], "%Y%m%d-%Hh%M"), + int(datas[1]), + int(datas[2]), + ) + ) + except FileNotFoundError: + # no file, no stats + pass + + return final_datas + + +def test_board(): + board = Board() + assert board.datas == {} + assert board["test"] == 0 + assert board.position("test") is None + assert board.min == 0 + assert board.max == 0 + assert board.avg == 0 + assert board.sum == 0 + + +def test_userboard(): + review = ReviewStats("tests/reviews/reviewstats_1.csv") + review.load() + board = review.users_board + assert board["test"] == 0 + assert board[1] == 5 + assert board.min == 1 + assert board.max == 10 + assert board.sum == 51 + assert board.avg == 3.1875 + + +def test_durationboard(): + review = ReviewStats("tests/reviews/reviewstats_1.csv") + review.load() + board = review.durations_board + assert board["test"] == 0 + assert board.min == 0 + assert board.max == 0 + assert board.sum == 0 + assert board.avg == 0 + + +def test_durationboard(): + review = ReviewStats("tests/reviews/reviewstats_2.csv") + review.load() + board = review.durations_board + assert board["test"] == 0 + assert board.min == 3 + assert board.max == 17 + assert board.sum == 49 + assert board.avg == 7.0