def test_get_commits(self):
     project = Project(name='test_name', 
                     owner=constant.TEST_UID, 
                     repositories={'Github': [324982851]}, 
                     updated=datetime(2020, 1, 1, 
                         1, 11, 11, 0, 
                         tzinfo=timezone.utc)
                     ).to_dict()
     
     commits = self.model._ProjectCommitModel__get_commits(project)
     expect = Commits(name='test_name', 
                     member=['gougon'], 
                     commit_list=[
                         Commit(
                             author='gougon', 
                             message='Create README.md', 
                             lines=2, 
                             time='2020/12/28'
                         ), 
                         Commit(
                             author='gougon', 
                             message='Update README.md', 
                             lines=1, 
                             time='2021/01/03'
                         )
                     ])
     assert commits.name == expect.name
     assert commits.member == expect.member
     assert commits.commit_list == expect.commit_list
 def test_eq(self):
     commit_wa = Commit(author='author2', 
                     message='message', 
                     lines='100', 
                     time='2020/01/01')
     commit_wm = Commit(author='author', 
                     message='message2', 
                     lines='100', 
                     time='2020/01/01')
     commit_wl = Commit(author='author', 
                     message='message', 
                     lines='101', 
                     time='2020/01/01')
     commit_wt = Commit(author='author', 
                     message='message', 
                     lines='100', 
                     time='2020/01/02')
     commit = Commit(author='author', 
                     message='message', 
                     lines='100', 
                     time='2020/01/01')
     assert self.commit == commit
     assert self.commit != commit_wa
     assert self.commit != commit_wl
     assert self.commit != commit_wm
     assert self.commit != commit_wt
 def test_transform_commit(self):
     src_commit = {
         'author': {
             'name': None,
             'email': None
         },
         'commit': {
             'author': {
                 'name': 'name',
                 'email': '*****@*****.**',
                 'date': '2020/01/01, 01:11:11'
             },
             'message': 'message',
             'html_url': 'https://a/b',
             'url': 'https://b/a'
         },
         'stats': {
             'additions': 1,
             'deletions': 30,
             'total': 31
         }
     }
     dest_commit = self.model._ProjectCommitModel__transform_commit(src_commit)
     expect = Commit(author='name',
                     message='message',
                     lines=31,
                     time='2020/01/01')
     assert dest_commit.author == expect.author
     assert dest_commit.message == expect.message
     assert dest_commit.lines == expect.lines
     assert dest_commit.time == expect.time
    def test_build_commits(self):
        pro_name = 'pname'
        commit1 = Commit(author='name1',
                         message='message1',
                         lines=31,
                         time='2020/01/01')
        commit2 = Commit(author='name2',
                         message='message2',
                         lines=32,
                         time='2020/01/02')
        cmt_list = [commit1, commit2]
        dest_cmts = self.model._ProjectCommitModel__build_commits(pro_name, cmt_list)
        expect = Commits(pro_name, ['name1', 'name2'], cmt_list)

        assert dest_cmts.name == expect.name
        assert set(dest_cmts.member) == set(expect.member)
        assert dest_cmts.commit_list == expect.commit_list
    def test_sort_commits_by_time_asc(self):
        commit1 = Commit(author='name1',
                         message='message1',
                         lines=31,
                         time='2020/01/01')
        commit2 = Commit(author='name2',
                         message='message2',
                         lines=32,
                         time='2020/01/02')
        commit3 = Commit(author='name3',
                         message='message3',
                         lines=34,
                         time='2020/01/03')

        commits = Commits('pname', ['name2', 'name3', 'name1'], [commit2, commit3, commit1])
        self.model._ProjectCommitModel__sort_commits_by_time(commits, 'asc')
        expect = Commits('pname', ['name1', 'name2', 'name3'], [commit1, commit2, commit3])
        assert commits.commit_list == expect.commit_list
    def test_sort_commits_by_time_error(self):
        commit1 = Commit(author='name1',
                         message='message1',
                         lines=31,
                         time='2020/01/01')
        commit2 = Commit(author='name2',
                         message='message2',
                         lines=32,
                         time='2020/01/02')
        commit3 = Commit(author='name3',
                         message='message3',
                         lines=34,
                         time='2020/01/03')

        commits = Commits('pname', ['name2', 'name3', 'name1'], [commit2, commit3, commit1])
        with pytest.raises(SystemExit) as cm:
            self.model._ProjectCommitModel__sort_commits_by_time(commits, 'whatever')
        assert cm.match('sort type only have "desc" & "asc"')
 def test_from_dict(self):
     source = {
         'author' : 'author', 
         'message' : 'message', 
         'lines' : '100', 
         'time' : '2020/01/01'
     }
     commit = Commit.from_dict(source)
     assert commit.author == 'author'
     assert commit.message == 'message'
     assert commit.lines == '100'
     assert commit.time == '2020/01/01'
 def setup_class(self):
     self.commit = Commit(author='author', 
                     message='message', 
                     lines='100', 
                     time='2020/01/01')
class TestCommit():
    @classmethod
    def setup_class(self):
        self.commit = Commit(author='author', 
                        message='message', 
                        lines='100', 
                        time='2020/01/01')

    def test_constructor(self):
        assert self.commit.author == 'author'
        assert self.commit.message == 'message'
        assert self.commit.lines == '100'
        assert self.commit.time == '2020/01/01'

    def test_from_dict(self):
        source = {
            'author' : 'author', 
            'message' : 'message', 
            'lines' : '100', 
            'time' : '2020/01/01'
        }
        commit = Commit.from_dict(source)
        assert commit.author == 'author'
        assert commit.message == 'message'
        assert commit.lines == '100'
        assert commit.time == '2020/01/01'

    def test_to_dict(self):
        dest = self.commit.to_dict()
        expect = {
            'author' : 'author', 
            'message' : 'message', 
            'lines' : '100', 
            'time' : '2020/01/01'
        }
        assert dest == expect

    def test_eq(self):
        commit_wa = Commit(author='author2', 
                        message='message', 
                        lines='100', 
                        time='2020/01/01')
        commit_wm = Commit(author='author', 
                        message='message2', 
                        lines='100', 
                        time='2020/01/01')
        commit_wl = Commit(author='author', 
                        message='message', 
                        lines='101', 
                        time='2020/01/01')
        commit_wt = Commit(author='author', 
                        message='message', 
                        lines='100', 
                        time='2020/01/02')
        commit = Commit(author='author', 
                        message='message', 
                        lines='100', 
                        time='2020/01/01')
        assert self.commit == commit
        assert self.commit != commit_wa
        assert self.commit != commit_wl
        assert self.commit != commit_wm
        assert self.commit != commit_wt