diff --git a/lib/src/github_trending_base.dart b/lib/src/github_trending_base.dart index b650345..fc74e03 100644 --- a/lib/src/github_trending_base.dart +++ b/lib/src/github_trending_base.dart @@ -47,7 +47,9 @@ Future> getTrendingRepositories() async { ?.parent ?.innerHtml ?.replaceFirst(RegExp(r'^[\s\S]*svg>'), '') + ?.replaceAll(',', '') ?.trim(); + var starCount = starCountStr == null ? null : int.tryParse(starCountStr); var forkCountStr = item @@ -55,6 +57,7 @@ Future> getTrendingRepositories() async { ?.parent ?.innerHtml ?.replaceFirst(RegExp(r'^[\s\S]*svg>'), '') + ?.replaceAll(',', '') ?.trim(); var forkCount = forkCountStr == null ? null : int.tryParse(forkCountStr); diff --git a/test/github_trending_test.dart b/test/github_trending_test.dart index a05e46b..2a7fa7f 100644 --- a/test/github_trending_test.dart +++ b/test/github_trending_test.dart @@ -20,10 +20,22 @@ void main() { }); }); + test('star and fork count', () { + // make sure at least one item has star or fork + // to ensure no parse error + var itemHasStar = items.where((item) => item.starCount != null); + expect(itemHasStar, isNotEmpty); + + var itemHasFork = items.where((item) => item.forkCount != null); + expect(itemHasFork, isNotEmpty); + }); + test('primary language', () { items.forEach((item) { if (item.primaryLanguage != null) { expect(item.primaryLanguage.name, isNotNull); + + // CSS color format expect( RegExp(r'(#\w{6})').hasMatch(item.primaryLanguage.color), isTrue); }