def test_should_parse_duration_for_two_users_one_project(self):
        result = get_report_entries_from_json(
            self.read_api_data('report_two_users_one_project.json'))

        self.assertEqual(result, [
            ReportEntry(PROJECT1, USER1, TIME_5SEC_INT),
            ReportEntry(PROJECT1, USER2, TIME_5SEC_INT)
        ])
示例#2
0
 def test_should_sort_by_user_id(self):
     self._run_test_for(
         ActivityTableTestData(
             input=[
                 ReportEntry(PROJECT1, USER2, TIME_10SEC_INT),
                 ReportEntry(PROJECT1, USER1, TIME_10SEC_INT),
             ],
             output=[
                 [EMPTY, USER1_NAME, USER2_NAME],
                 [PROJECT1_NAME, TIME_10SEC_STR, TIME_10SEC_STR],
             ]))
示例#3
0
 def test_should_build_2_rows_for_2_projects(self):
     self._run_test_for(
         ActivityTableTestData(input=[
             ReportEntry(PROJECT1, USER1, TIME_10SEC_INT),
             ReportEntry(PROJECT2, USER1, TIME_10SEC_INT),
         ],
                               output=[
                                   [EMPTY, USER1_NAME],
                                   [PROJECT1_NAME, TIME_10SEC_STR],
                                   [PROJECT2_NAME, TIME_10SEC_STR],
                               ]))
    def test_should_parse_duration_for_three_users_three_projects(self):
        result = get_report_entries_from_json(
            self.read_api_data('report_three_users_three_projects.json'))

        self.assertEqual(result, [
            ReportEntry(PROJECT1, USER1, TIME_5SEC_INT),
            ReportEntry(PROJECT1, USER2, TIME_5SEC_INT),
            ReportEntry(PROJECT2, USER1, TIME_10SEC_INT),
            ReportEntry(PROJECT3, USER2, TIME_3SEC_INT),
            ReportEntry(PROJECT3, USER3, TIME_7SEC_INT),
        ])
示例#5
0
 def test_should_fill_with_duration_0_when_user_doesnt_have_duration_in_project(
         self):
     self._run_test_for(
         ActivityTableTestData(
             input=[
                 ReportEntry(PROJECT1, USER1, TIME_10SEC_INT),
                 ReportEntry(PROJECT2, USER1, TIME_10SEC_INT),
                 ReportEntry(PROJECT1, USER2, TIME_10SEC_INT),
             ],
             output=[
                 [EMPTY, USER1_NAME, USER2_NAME],
                 [PROJECT1_NAME, TIME_10SEC_STR, TIME_10SEC_STR],
                 [PROJECT2_NAME, TIME_10SEC_STR, TIME_NO_DURATION_STR],
             ]))
示例#6
0
 def test_should_fill_all_cells_when_all_users_participated_in_all_projects(
         self):
     self._run_test_for(
         ActivityTableTestData(
             input=[
                 ReportEntry(PROJECT1, USER1, TIME_10SEC_INT),
                 ReportEntry(PROJECT2, USER1, TIME_10SEC_INT),
                 ReportEntry(PROJECT1, USER2, TIME_10SEC_INT),
                 ReportEntry(PROJECT2, USER2, TIME_10SEC_INT),
             ],
             output=[
                 [EMPTY, USER1_NAME, USER2_NAME],
                 [PROJECT1_NAME, TIME_10SEC_STR, TIME_10SEC_STR],
                 [PROJECT2_NAME, TIME_10SEC_STR, TIME_10SEC_STR],
             ]))
示例#7
0
 def test_should_translate_duration_to_human_friendly_string(self):
     PROJECT4_NAME = "PROJECT4"
     PROJECT4 = ProjectKey(434421, PROJECT4_NAME)
     self._run_test_for(
         ActivityTableTestData(input=[
             ReportEntry(PROJECT1, USER1, TIME_10SEC_INT),
             ReportEntry(PROJECT2, USER1, TIME_66SEC_INT),
             ReportEntry(PROJECT3, USER1, TIME_HOUR_INT),
             ReportEntry(PROJECT4, USER1, TIME_12HOUR_INT),
         ],
                               output=[
                                   [EMPTY, USER1_NAME],
                                   [PROJECT1_NAME, TIME_10SEC_STR],
                                   [PROJECT2_NAME, TIME_66SEC_STR],
                                   [PROJECT3_NAME, TIME_HOUR_STR],
                                   [PROJECT4_NAME, TIME_12HOUR_STR],
                               ]))
示例#8
0
def get_report_entries_from_json(report_json):
    result = []
    for project in _get_projects(json.loads(report_json)):
        project_key = ProjectKey(project['id'], project['name'])

        for user in _get_project_users(project):
            user_key = UserKey(user['id'], user['name'])
            result.append(ReportEntry(project_key, user_key, user['duration']))

    return result
示例#9
0
 def test_should_build_2_dim_table_for_single_entry(self):
     self._run_test_for(
         ActivityTableTestData(
             input=[ReportEntry(PROJECT1, USER1, TIME_10SEC_INT)],
             output=[[EMPTY, USER1_NAME], [PROJECT1_NAME, TIME_10SEC_STR]]))