def test_generate_with_multiple_years_with_different_number_of_stars(self): combined_info = CombinedInfo.from_repo_and_account_infos( RepoInfo.from_roots([]), AccountInfo.from_collected_data({ "username": "******", "total_stars": 105, "years": { 2020: {"year": 2020, "stars": 50, "days": { day: 2 for day in range(1, 26) }}, 2019: {"year": 2019, "stars": 5, "days": { 1: 2, 2: 1, 3: 0, }}, 2018: {"year": 2018, "stars": 50, "days": { day: 2 for day in range(1, 26) }}, 2017: {"year": 2017, "stars": 0, "days": {}}, 2016: {"year": 2016, "stars": 1, "days": { 1: 1, }}, }, }), ) self.assertEqual(EventSummary().generate(combined_info), ( "\n\n" "| Total | 2020 | 2019 | 2018 | 2016 |\n" "| --- | --- | --- | --- | --- |\n" "| 105 :star: | 50 :star: :star: | 5 :star: | 50 :star: :star: " "| 1 :star: |\n" "\n" ))
def test_generate_with_one_year_with_some_stars(self): combined_info = CombinedInfo.from_repo_and_account_infos( RepoInfo.from_roots([]), AccountInfo.from_collected_data({ "username": "******", "total_stars": 3, "years": { 2020: { "year": 2020, "stars": 3, "days": { 1: 2, 2: 1, 3: 0, } }, }, }), ) self.assertEqual( SubmissionsSummary().generate(combined_info), ("\n\n" "| | 2020 |\n" "| ---: | :---: |\n" "| | Code & [Challenges][ch-20] |\n" "| | 3 :star: / 0 :x: / 0 :grey_exclamation: |\n" "| 1 | Code :star: :star: [Challenge][ch-20-01] |\n" "| 2 | Code :star: [Challenge][ch-20-02] |\n" "| 3 | Code [Challenge][ch-20-03] |\n" "| 4 | Code [Challenge][ch-20-04] |\n" "| 5 | Code [Challenge][ch-20-05] |\n" "| 6 | Code [Challenge][ch-20-06] |\n" "| 7 | Code [Challenge][ch-20-07] |\n" "| 8 | Code [Challenge][ch-20-08] |\n" "| 9 | Code [Challenge][ch-20-09] |\n" "| 10 | Code [Challenge][ch-20-10] |\n" "| 11 | Code [Challenge][ch-20-11] |\n" "| 12 | Code [Challenge][ch-20-12] |\n" "| 13 | Code [Challenge][ch-20-13] |\n" "| 14 | Code [Challenge][ch-20-14] |\n" "| 15 | Code [Challenge][ch-20-15] |\n" "| 16 | Code [Challenge][ch-20-16] |\n" "| 17 | Code [Challenge][ch-20-17] |\n" "| 18 | Code [Challenge][ch-20-18] |\n" "| 19 | Code [Challenge][ch-20-19] |\n" "| 20 | Code [Challenge][ch-20-20] |\n" "| 21 | Code [Challenge][ch-20-21] |\n" "| 22 | Code [Challenge][ch-20-22] |\n" "| 23 | Code [Challenge][ch-20-23] |\n" "| 24 | Code [Challenge][ch-20-24] |\n" "| 25 | Code [Challenge][ch-20-25] |\n" + self.get_years_links([2020]) + "\n"))
def update_combined_info(self, repo_info=None, account_info=None): """ Update the combined info, presumably after updating either pieces of data. """ if repo_info is not None: self.repo_info = repo_info if account_info is not None: self.account_info = account_info self.combined_info = CombinedInfo.from_repo_and_account_infos( repo_info=self.repo_info, account_info=self.account_info, )
def test_generate_with_no_info(self): combined_info = CombinedInfo.from_repo_and_account_infos( RepoInfo.from_roots([]), AccountInfo.from_collected_data({ "username": "******", "total_stars": 0, "years": {}, }), ) self.assertEqual(EventSummary().generate(combined_info), ( "\n\n" "| Total |\n" "| --- |\n" "| 0 :star: |\n" "\n" ))
def test_generate_with_one_year_with_no_stars(self): combined_info = CombinedInfo.from_repo_and_account_infos( RepoInfo.from_roots([]), AccountInfo.from_collected_data({ "username": "******", "total_stars": 0, "years": { 2020: { "year": 2020, "stars": 0, "days": {} }, }, }), ) self.assertEqual(SubmissionsSummary().generate(combined_info), ("\n\n" "| |\n" "| ---: |\n" "| |\n" "| |\n" "| 1 |\n" "| 2 |\n" "| 3 |\n" "| 4 |\n" "| 5 |\n" "| 6 |\n" "| 7 |\n" "| 8 |\n" "| 9 |\n" "| 10 |\n" "| 11 |\n" "| 12 |\n" "| 13 |\n" "| 14 |\n" "| 15 |\n" "| 16 |\n" "| 17 |\n" "| 18 |\n" "| 19 |\n" "| 20 |\n" "| 21 |\n" "| 22 |\n" "| 23 |\n" "| 24 |\n" "| 25 |\n" "\n" "\n" "\n"))
def test_generate_with_one_year_with_all_stars(self): combined_info = CombinedInfo.from_repo_and_account_infos( RepoInfo.from_roots([]), AccountInfo.from_collected_data({ "username": "******", "total_stars": 50, "years": { 2020: {"year": 2020, "stars": 50, "days": { day: 2 for day in range(1, 26) }}, }, }), ) self.assertEqual(EventSummary().generate(combined_info), ( "\n\n" "| Total | 2020 |\n" "| --- | --- |\n" "| 50 :star: | 50 :star: :star: |\n" "\n" ))
def get_link_definitions(self, combined_info: CombinedInfo): years = sorted( (year for year, year_info in combined_info.year_infos.items() if year_info.has_code or year_info.stars), reverse=True) return "\n\n".join( "\n".join([ f"[{self.get_challenge_year_link_name(year)}]: " f"{year_info.get_year_url()}", f"[{self.get_code_year_link_name(year)}]: " f"{year_info.relative_path}", ] + sum(([ f"[{self.get_challenge_day_link_name(year, day)}]: " f"{day_info.get_day_url()}", f"[{self.get_code_day_link_name(year, day)}]: " f"{day_info.relative_path}", ] for day, day_info in ((day, year_info.get_day(day)) for day in range(1, 26))), [])) for year, year_info in ((year, combined_info.get_year(year)) for year in years))