mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-07-01 12:23:44 +08:00
Add tests for GitHub & GitLab apis for fetching the list of repos
This commit is contained in:
@ -6,6 +6,7 @@ import 'package:flutter/foundation.dart' as foundation;
|
|||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
|
|
||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
|
import 'package:meta/meta.dart';
|
||||||
import 'package:url_launcher/url_launcher.dart';
|
import 'package:url_launcher/url_launcher.dart';
|
||||||
|
|
||||||
import 'package:gitjournal/utils.dart';
|
import 'package:gitjournal/utils.dart';
|
||||||
@ -107,7 +108,7 @@ class GitHub implements GitHost {
|
|||||||
var repos = <GitHostRepo>[];
|
var repos = <GitHostRepo>[];
|
||||||
list.forEach((dynamic d) {
|
list.forEach((dynamic d) {
|
||||||
var map = Map<String, dynamic>.from(d);
|
var map = Map<String, dynamic>.from(d);
|
||||||
var repo = _repoFromJson(map);
|
var repo = repoFromJson(map);
|
||||||
repos.add(repo);
|
repos.add(repo);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -151,7 +152,7 @@ class GitHub implements GitHost {
|
|||||||
|
|
||||||
Log.d("GitHub createRepo: " + response.body);
|
Log.d("GitHub createRepo: " + response.body);
|
||||||
Map<String, dynamic> map = json.decode(response.body);
|
Map<String, dynamic> map = json.decode(response.body);
|
||||||
return _repoFromJson(map);
|
return repoFromJson(map);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -180,7 +181,7 @@ class GitHub implements GitHost {
|
|||||||
|
|
||||||
Log.d("GitHub getRepo: " + response.body);
|
Log.d("GitHub getRepo: " + response.body);
|
||||||
Map<String, dynamic> map = json.decode(response.body);
|
Map<String, dynamic> map = json.decode(response.body);
|
||||||
return _repoFromJson(map);
|
return repoFromJson(map);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -216,7 +217,8 @@ class GitHub implements GitHost {
|
|||||||
return json.decode(response.body);
|
return json.decode(response.body);
|
||||||
}
|
}
|
||||||
|
|
||||||
GitHostRepo _repoFromJson(Map<String, dynamic> parsedJson) {
|
@visibleForTesting
|
||||||
|
GitHostRepo repoFromJson(Map<String, dynamic> parsedJson) {
|
||||||
DateTime updatedAt;
|
DateTime updatedAt;
|
||||||
try {
|
try {
|
||||||
updatedAt = DateTime.parse(parsedJson['updated_at'].toString());
|
updatedAt = DateTime.parse(parsedJson['updated_at'].toString());
|
||||||
|
@ -7,6 +7,7 @@ import 'package:flutter/foundation.dart' as foundation;
|
|||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
|
|
||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
|
import 'package:meta/meta.dart';
|
||||||
import 'package:url_launcher/url_launcher.dart';
|
import 'package:url_launcher/url_launcher.dart';
|
||||||
|
|
||||||
import 'package:gitjournal/utils.dart';
|
import 'package:gitjournal/utils.dart';
|
||||||
@ -94,7 +95,7 @@ class GitLab implements GitHost {
|
|||||||
var repos = <GitHostRepo>[];
|
var repos = <GitHostRepo>[];
|
||||||
list.forEach((dynamic d) {
|
list.forEach((dynamic d) {
|
||||||
var map = Map<String, dynamic>.from(d);
|
var map = Map<String, dynamic>.from(d);
|
||||||
var repo = _repoFromJson(map);
|
var repo = repoFromJson(map);
|
||||||
repos.add(repo);
|
repos.add(repo);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -137,7 +138,7 @@ class GitLab implements GitHost {
|
|||||||
|
|
||||||
Log.d("GitLab createRepo: " + response.body);
|
Log.d("GitLab createRepo: " + response.body);
|
||||||
Map<String, dynamic> map = json.decode(response.body);
|
Map<String, dynamic> map = json.decode(response.body);
|
||||||
return _repoFromJson(map);
|
return repoFromJson(map);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -163,7 +164,7 @@ class GitLab implements GitHost {
|
|||||||
|
|
||||||
Log.d("GitLab getRepo: " + response.body);
|
Log.d("GitLab getRepo: " + response.body);
|
||||||
Map<String, dynamic> map = json.decode(response.body);
|
Map<String, dynamic> map = json.decode(response.body);
|
||||||
return _repoFromJson(map);
|
return repoFromJson(map);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -200,7 +201,8 @@ class GitLab implements GitHost {
|
|||||||
return json.decode(response.body);
|
return json.decode(response.body);
|
||||||
}
|
}
|
||||||
|
|
||||||
GitHostRepo _repoFromJson(Map<String, dynamic> parsedJson) {
|
@visibleForTesting
|
||||||
|
GitHostRepo repoFromJson(Map<String, dynamic> parsedJson) {
|
||||||
DateTime updatedAt;
|
DateTime updatedAt;
|
||||||
try {
|
try {
|
||||||
updatedAt = DateTime.parse(parsedJson['last_activity_at'].toString());
|
updatedAt = DateTime.parse(parsedJson['last_activity_at'].toString());
|
||||||
@ -209,6 +211,12 @@ class GitLab implements GitHost {
|
|||||||
}
|
}
|
||||||
var licenseMap = parsedJson['license'];
|
var licenseMap = parsedJson['license'];
|
||||||
|
|
||||||
|
List<String> tags = [];
|
||||||
|
var tagList = parsedJson['tag_list'];
|
||||||
|
if (tagList is List) {
|
||||||
|
tags = tagList.map((e) => e.toString()).toList();
|
||||||
|
}
|
||||||
|
|
||||||
return GitHostRepo(
|
return GitHostRepo(
|
||||||
fullName: parsedJson['path_with_namespace'],
|
fullName: parsedJson['path_with_namespace'],
|
||||||
cloneUrl: parsedJson['ssh_url_to_repo'],
|
cloneUrl: parsedJson['ssh_url_to_repo'],
|
||||||
@ -219,7 +227,7 @@ class GitLab implements GitHost {
|
|||||||
issues: parsedJson['open_issues_count'],
|
issues: parsedJson['open_issues_count'],
|
||||||
language: parsedJson['language'],
|
language: parsedJson['language'],
|
||||||
private: parsedJson['visibility'] == 'private',
|
private: parsedJson['visibility'] == 'private',
|
||||||
tags: parsedJson['tag_list'],
|
tags: tags,
|
||||||
license: licenseMap != null ? licenseMap['nickname'] : null,
|
license: licenseMap != null ? licenseMap['nickname'] : null,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
212
test/apis/data/github.json
Normal file
212
test/apis/data/github.json
Normal file
@ -0,0 +1,212 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"id": 229985363,
|
||||||
|
"node_id": "MDEwOlJlcG9zaXRvcnkyMjk5ODUzNjM=",
|
||||||
|
"name": "dart_git",
|
||||||
|
"full_name": "GitJournal/dart_git",
|
||||||
|
"private": false,
|
||||||
|
"owner": {
|
||||||
|
"login": "GitJournal",
|
||||||
|
"id": 46486395,
|
||||||
|
"node_id": "MDEyOk9yZ2FuaXphdGlvbjQ2NDg2Mzk1",
|
||||||
|
"avatar_url": "https://avatars0.githubusercontent.com/u/46486395?v=4",
|
||||||
|
"gravatar_id": "",
|
||||||
|
"url": "https://api.github.com/users/GitJournal",
|
||||||
|
"html_url": "https://github.com/GitJournal",
|
||||||
|
"followers_url": "https://api.github.com/users/GitJournal/followers",
|
||||||
|
"following_url": "https://api.github.com/users/GitJournal/following{/other_user}",
|
||||||
|
"gists_url": "https://api.github.com/users/GitJournal/gists{/gist_id}",
|
||||||
|
"starred_url": "https://api.github.com/users/GitJournal/starred{/owner}{/repo}",
|
||||||
|
"subscriptions_url": "https://api.github.com/users/GitJournal/subscriptions",
|
||||||
|
"organizations_url": "https://api.github.com/users/GitJournal/orgs",
|
||||||
|
"repos_url": "https://api.github.com/users/GitJournal/repos",
|
||||||
|
"events_url": "https://api.github.com/users/GitJournal/events{/privacy}",
|
||||||
|
"received_events_url": "https://api.github.com/users/GitJournal/received_events",
|
||||||
|
"type": "Organization",
|
||||||
|
"site_admin": false
|
||||||
|
},
|
||||||
|
"html_url": "https://github.com/GitJournal/dart_git",
|
||||||
|
"description": "A Git implementation in pure Dart",
|
||||||
|
"fork": false,
|
||||||
|
"url": "https://api.github.com/repos/GitJournal/dart_git",
|
||||||
|
"forks_url": "https://api.github.com/repos/GitJournal/dart_git/forks",
|
||||||
|
"keys_url": "https://api.github.com/repos/GitJournal/dart_git/keys{/key_id}",
|
||||||
|
"collaborators_url": "https://api.github.com/repos/GitJournal/dart_git/collaborators{/collaborator}",
|
||||||
|
"teams_url": "https://api.github.com/repos/GitJournal/dart_git/teams",
|
||||||
|
"hooks_url": "https://api.github.com/repos/GitJournal/dart_git/hooks",
|
||||||
|
"issue_events_url": "https://api.github.com/repos/GitJournal/dart_git/issues/events{/number}",
|
||||||
|
"events_url": "https://api.github.com/repos/GitJournal/dart_git/events",
|
||||||
|
"assignees_url": "https://api.github.com/repos/GitJournal/dart_git/assignees{/user}",
|
||||||
|
"branches_url": "https://api.github.com/repos/GitJournal/dart_git/branches{/branch}",
|
||||||
|
"tags_url": "https://api.github.com/repos/GitJournal/dart_git/tags",
|
||||||
|
"blobs_url": "https://api.github.com/repos/GitJournal/dart_git/git/blobs{/sha}",
|
||||||
|
"git_tags_url": "https://api.github.com/repos/GitJournal/dart_git/git/tags{/sha}",
|
||||||
|
"git_refs_url": "https://api.github.com/repos/GitJournal/dart_git/git/refs{/sha}",
|
||||||
|
"trees_url": "https://api.github.com/repos/GitJournal/dart_git/git/trees{/sha}",
|
||||||
|
"statuses_url": "https://api.github.com/repos/GitJournal/dart_git/statuses/{sha}",
|
||||||
|
"languages_url": "https://api.github.com/repos/GitJournal/dart_git/languages",
|
||||||
|
"stargazers_url": "https://api.github.com/repos/GitJournal/dart_git/stargazers",
|
||||||
|
"contributors_url": "https://api.github.com/repos/GitJournal/dart_git/contributors",
|
||||||
|
"subscribers_url": "https://api.github.com/repos/GitJournal/dart_git/subscribers",
|
||||||
|
"subscription_url": "https://api.github.com/repos/GitJournal/dart_git/subscription",
|
||||||
|
"commits_url": "https://api.github.com/repos/GitJournal/dart_git/commits{/sha}",
|
||||||
|
"git_commits_url": "https://api.github.com/repos/GitJournal/dart_git/git/commits{/sha}",
|
||||||
|
"comments_url": "https://api.github.com/repos/GitJournal/dart_git/comments{/number}",
|
||||||
|
"issue_comment_url": "https://api.github.com/repos/GitJournal/dart_git/issues/comments{/number}",
|
||||||
|
"contents_url": "https://api.github.com/repos/GitJournal/dart_git/contents/{+path}",
|
||||||
|
"compare_url": "https://api.github.com/repos/GitJournal/dart_git/compare/{base}...{head}",
|
||||||
|
"merges_url": "https://api.github.com/repos/GitJournal/dart_git/merges",
|
||||||
|
"archive_url": "https://api.github.com/repos/GitJournal/dart_git/{archive_format}{/ref}",
|
||||||
|
"downloads_url": "https://api.github.com/repos/GitJournal/dart_git/downloads",
|
||||||
|
"issues_url": "https://api.github.com/repos/GitJournal/dart_git/issues{/number}",
|
||||||
|
"pulls_url": "https://api.github.com/repos/GitJournal/dart_git/pulls{/number}",
|
||||||
|
"milestones_url": "https://api.github.com/repos/GitJournal/dart_git/milestones{/number}",
|
||||||
|
"notifications_url": "https://api.github.com/repos/GitJournal/dart_git/notifications{?since,all,participating}",
|
||||||
|
"labels_url": "https://api.github.com/repos/GitJournal/dart_git/labels{/name}",
|
||||||
|
"releases_url": "https://api.github.com/repos/GitJournal/dart_git/releases{/id}",
|
||||||
|
"deployments_url": "https://api.github.com/repos/GitJournal/dart_git/deployments",
|
||||||
|
"created_at": "2019-12-24T18:08:50Z",
|
||||||
|
"updated_at": "2020-08-02T10:59:13Z",
|
||||||
|
"pushed_at": "2020-08-02T10:59:11Z",
|
||||||
|
"git_url": "git://github.com/GitJournal/dart_git.git",
|
||||||
|
"ssh_url": "git@github.com:GitJournal/dart_git.git",
|
||||||
|
"clone_url": "https://github.com/GitJournal/dart_git.git",
|
||||||
|
"svn_url": "https://github.com/GitJournal/dart_git",
|
||||||
|
"homepage": null,
|
||||||
|
"size": 134,
|
||||||
|
"stargazers_count": 6,
|
||||||
|
"watchers_count": 6,
|
||||||
|
"language": "Dart",
|
||||||
|
"has_issues": true,
|
||||||
|
"has_projects": true,
|
||||||
|
"has_downloads": true,
|
||||||
|
"has_wiki": true,
|
||||||
|
"has_pages": false,
|
||||||
|
"forks_count": 1,
|
||||||
|
"mirror_url": null,
|
||||||
|
"archived": false,
|
||||||
|
"disabled": false,
|
||||||
|
"open_issues_count": 2,
|
||||||
|
"license": {
|
||||||
|
"key": "agpl-3.0",
|
||||||
|
"name": "GNU Affero General Public License v3.0",
|
||||||
|
"spdx_id": "AGPL-3.0",
|
||||||
|
"url": "https://api.github.com/licenses/agpl-3.0",
|
||||||
|
"node_id": "MDc6TGljZW5zZTE="
|
||||||
|
},
|
||||||
|
"forks": 1,
|
||||||
|
"open_issues": 2,
|
||||||
|
"watchers": 6,
|
||||||
|
"default_branch": "master",
|
||||||
|
"permissions": {
|
||||||
|
"admin": true,
|
||||||
|
"push": true,
|
||||||
|
"pull": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 165047811,
|
||||||
|
"node_id": "MDEwOlJlcG9zaXRvcnkxNjUwNDc4MTE=",
|
||||||
|
"name": "GitJournal",
|
||||||
|
"full_name": "GitJournal/GitJournal",
|
||||||
|
"private": false,
|
||||||
|
"owner": {
|
||||||
|
"login": "GitJournal",
|
||||||
|
"id": 46486395,
|
||||||
|
"node_id": "MDEyOk9yZ2FuaXphdGlvbjQ2NDg2Mzk1",
|
||||||
|
"avatar_url": "https://avatars0.githubusercontent.com/u/46486395?v=4",
|
||||||
|
"gravatar_id": "",
|
||||||
|
"url": "https://api.github.com/users/GitJournal",
|
||||||
|
"html_url": "https://github.com/GitJournal",
|
||||||
|
"followers_url": "https://api.github.com/users/GitJournal/followers",
|
||||||
|
"following_url": "https://api.github.com/users/GitJournal/following{/other_user}",
|
||||||
|
"gists_url": "https://api.github.com/users/GitJournal/gists{/gist_id}",
|
||||||
|
"starred_url": "https://api.github.com/users/GitJournal/starred{/owner}{/repo}",
|
||||||
|
"subscriptions_url": "https://api.github.com/users/GitJournal/subscriptions",
|
||||||
|
"organizations_url": "https://api.github.com/users/GitJournal/orgs",
|
||||||
|
"repos_url": "https://api.github.com/users/GitJournal/repos",
|
||||||
|
"events_url": "https://api.github.com/users/GitJournal/events{/privacy}",
|
||||||
|
"received_events_url": "https://api.github.com/users/GitJournal/received_events",
|
||||||
|
"type": "Organization",
|
||||||
|
"site_admin": false
|
||||||
|
},
|
||||||
|
"html_url": "https://github.com/GitJournal/GitJournal",
|
||||||
|
"description": "Store your Notes in any Git Repo",
|
||||||
|
"fork": false,
|
||||||
|
"url": "https://api.github.com/repos/GitJournal/GitJournal",
|
||||||
|
"forks_url": "https://api.github.com/repos/GitJournal/GitJournal/forks",
|
||||||
|
"keys_url": "https://api.github.com/repos/GitJournal/GitJournal/keys{/key_id}",
|
||||||
|
"collaborators_url": "https://api.github.com/repos/GitJournal/GitJournal/collaborators{/collaborator}",
|
||||||
|
"teams_url": "https://api.github.com/repos/GitJournal/GitJournal/teams",
|
||||||
|
"hooks_url": "https://api.github.com/repos/GitJournal/GitJournal/hooks",
|
||||||
|
"issue_events_url": "https://api.github.com/repos/GitJournal/GitJournal/issues/events{/number}",
|
||||||
|
"events_url": "https://api.github.com/repos/GitJournal/GitJournal/events",
|
||||||
|
"assignees_url": "https://api.github.com/repos/GitJournal/GitJournal/assignees{/user}",
|
||||||
|
"branches_url": "https://api.github.com/repos/GitJournal/GitJournal/branches{/branch}",
|
||||||
|
"tags_url": "https://api.github.com/repos/GitJournal/GitJournal/tags",
|
||||||
|
"blobs_url": "https://api.github.com/repos/GitJournal/GitJournal/git/blobs{/sha}",
|
||||||
|
"git_tags_url": "https://api.github.com/repos/GitJournal/GitJournal/git/tags{/sha}",
|
||||||
|
"git_refs_url": "https://api.github.com/repos/GitJournal/GitJournal/git/refs{/sha}",
|
||||||
|
"trees_url": "https://api.github.com/repos/GitJournal/GitJournal/git/trees{/sha}",
|
||||||
|
"statuses_url": "https://api.github.com/repos/GitJournal/GitJournal/statuses/{sha}",
|
||||||
|
"languages_url": "https://api.github.com/repos/GitJournal/GitJournal/languages",
|
||||||
|
"stargazers_url": "https://api.github.com/repos/GitJournal/GitJournal/stargazers",
|
||||||
|
"contributors_url": "https://api.github.com/repos/GitJournal/GitJournal/contributors",
|
||||||
|
"subscribers_url": "https://api.github.com/repos/GitJournal/GitJournal/subscribers",
|
||||||
|
"subscription_url": "https://api.github.com/repos/GitJournal/GitJournal/subscription",
|
||||||
|
"commits_url": "https://api.github.com/repos/GitJournal/GitJournal/commits{/sha}",
|
||||||
|
"git_commits_url": "https://api.github.com/repos/GitJournal/GitJournal/git/commits{/sha}",
|
||||||
|
"comments_url": "https://api.github.com/repos/GitJournal/GitJournal/comments{/number}",
|
||||||
|
"issue_comment_url": "https://api.github.com/repos/GitJournal/GitJournal/issues/comments{/number}",
|
||||||
|
"contents_url": "https://api.github.com/repos/GitJournal/GitJournal/contents/{+path}",
|
||||||
|
"compare_url": "https://api.github.com/repos/GitJournal/GitJournal/compare/{base}...{head}",
|
||||||
|
"merges_url": "https://api.github.com/repos/GitJournal/GitJournal/merges",
|
||||||
|
"archive_url": "https://api.github.com/repos/GitJournal/GitJournal/{archive_format}{/ref}",
|
||||||
|
"downloads_url": "https://api.github.com/repos/GitJournal/GitJournal/downloads",
|
||||||
|
"issues_url": "https://api.github.com/repos/GitJournal/GitJournal/issues{/number}",
|
||||||
|
"pulls_url": "https://api.github.com/repos/GitJournal/GitJournal/pulls{/number}",
|
||||||
|
"milestones_url": "https://api.github.com/repos/GitJournal/GitJournal/milestones{/number}",
|
||||||
|
"notifications_url": "https://api.github.com/repos/GitJournal/GitJournal/notifications{?since,all,participating}",
|
||||||
|
"labels_url": "https://api.github.com/repos/GitJournal/GitJournal/labels{/name}",
|
||||||
|
"releases_url": "https://api.github.com/repos/GitJournal/GitJournal/releases{/id}",
|
||||||
|
"deployments_url": "https://api.github.com/repos/GitJournal/GitJournal/deployments",
|
||||||
|
"created_at": "2019-01-10T11:27:18Z",
|
||||||
|
"updated_at": "2020-09-04T21:15:16Z",
|
||||||
|
"pushed_at": "2020-09-04T21:15:14Z",
|
||||||
|
"git_url": "git://github.com/GitJournal/GitJournal.git",
|
||||||
|
"ssh_url": "git@github.com:GitJournal/GitJournal.git",
|
||||||
|
"clone_url": "https://github.com/GitJournal/GitJournal.git",
|
||||||
|
"svn_url": "https://github.com/GitJournal/GitJournal",
|
||||||
|
"homepage": "https://gitjournal.io",
|
||||||
|
"size": 9357,
|
||||||
|
"stargazers_count": 451,
|
||||||
|
"watchers_count": 451,
|
||||||
|
"language": "Dart",
|
||||||
|
"has_issues": true,
|
||||||
|
"has_projects": true,
|
||||||
|
"has_downloads": true,
|
||||||
|
"has_wiki": true,
|
||||||
|
"has_pages": false,
|
||||||
|
"forks_count": 47,
|
||||||
|
"mirror_url": null,
|
||||||
|
"archived": false,
|
||||||
|
"disabled": false,
|
||||||
|
"open_issues_count": 124,
|
||||||
|
"license": {
|
||||||
|
"key": "agpl-3.0",
|
||||||
|
"name": "GNU Affero General Public License v3.0",
|
||||||
|
"spdx_id": "AGPL-3.0",
|
||||||
|
"url": "https://api.github.com/licenses/agpl-3.0",
|
||||||
|
"node_id": "MDc6TGljZW5zZTE="
|
||||||
|
},
|
||||||
|
"forks": 47,
|
||||||
|
"open_issues": 124,
|
||||||
|
"watchers": 451,
|
||||||
|
"default_branch": "master",
|
||||||
|
"permissions": {
|
||||||
|
"admin": true,
|
||||||
|
"push": true,
|
||||||
|
"pull": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
60
test/apis/data/gitlab.json
Normal file
60
test/apis/data/gitlab.json
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"id": 20661519,
|
||||||
|
"description": "Source for https://about.gitlab.com/\r\n\r\nThis repo/project is for the public-facing marketing website of GitLab, including improvements to the docs and the handbook.\r\n\r\nPlease file product improvement suggestions at https://gitlab.com/gitlab-org/gitlab\r\n\r\n",
|
||||||
|
"name": "www-gitlab-com",
|
||||||
|
"name_with_namespace": "Vishesh Handa / www-gitlab-com",
|
||||||
|
"path": "www-gitlab-com",
|
||||||
|
"path_with_namespace": "vhanda/www-gitlab-com",
|
||||||
|
"created_at": "2020-08-21T10:50:34.730Z",
|
||||||
|
"default_branch": "master",
|
||||||
|
"tag_list": [],
|
||||||
|
"ssh_url_to_repo": "git@gitlab.com:vhanda/www-gitlab-com.git",
|
||||||
|
"http_url_to_repo": "https://gitlab.com/vhanda/www-gitlab-com.git",
|
||||||
|
"web_url": "https://gitlab.com/vhanda/www-gitlab-com",
|
||||||
|
"readme_url": "https://gitlab.com/vhanda/www-gitlab-com/-/blob/master/README.md",
|
||||||
|
"avatar_url": "https://assets.gitlab-static.net/uploads/-/system/project/avatar/20661519/about_logo.png",
|
||||||
|
"forks_count": 0,
|
||||||
|
"star_count": 0,
|
||||||
|
"last_activity_at": "2020-08-21T10:50:34.730Z",
|
||||||
|
"namespace": {
|
||||||
|
"id": 214434,
|
||||||
|
"name": "Vishesh Handa",
|
||||||
|
"path": "vhanda",
|
||||||
|
"kind": "user",
|
||||||
|
"full_path": "vhanda",
|
||||||
|
"parent_id": null,
|
||||||
|
"avatar_url": "https://secure.gravatar.com/avatar/f0ca65b41675e6aa42d6d8951d42c7bc?s=80&d=identicon",
|
||||||
|
"web_url": "https://gitlab.com/vhanda"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 19281306,
|
||||||
|
"description": null,
|
||||||
|
"name": "journal",
|
||||||
|
"name_with_namespace": "Vishesh Handa / journal",
|
||||||
|
"path": "journal",
|
||||||
|
"path_with_namespace": "vhanda/journal",
|
||||||
|
"created_at": "2020-06-09T14:19:41.472Z",
|
||||||
|
"default_branch": "master",
|
||||||
|
"tag_list": [],
|
||||||
|
"ssh_url_to_repo": "git@gitlab.com:vhanda/journal.git",
|
||||||
|
"http_url_to_repo": "https://gitlab.com/vhanda/journal.git",
|
||||||
|
"web_url": "https://gitlab.com/vhanda/journal",
|
||||||
|
"readme_url": null,
|
||||||
|
"avatar_url": null,
|
||||||
|
"forks_count": 0,
|
||||||
|
"star_count": 0,
|
||||||
|
"last_activity_at": "2020-06-09T14:19:41.472Z",
|
||||||
|
"namespace": {
|
||||||
|
"id": 214434,
|
||||||
|
"name": "Vishesh Handa",
|
||||||
|
"path": "vhanda",
|
||||||
|
"kind": "user",
|
||||||
|
"full_path": "vhanda",
|
||||||
|
"parent_id": null,
|
||||||
|
"avatar_url": "https://secure.gravatar.com/avatar/f0ca65b41675e6aa42d6d8951d42c7bc?s=80&d=identicon",
|
||||||
|
"web_url": "https://gitlab.com/vhanda"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
25
test/apis/github_test.dart
Normal file
25
test/apis/github_test.dart
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
import 'dart:convert';
|
||||||
|
import 'dart:io';
|
||||||
|
|
||||||
|
import 'package:test/test.dart';
|
||||||
|
|
||||||
|
import 'package:gitjournal/apis/githost_factory.dart';
|
||||||
|
import 'package:gitjournal/apis/github.dart';
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
test('Parse json', () async {
|
||||||
|
var jsonString = File('test/apis/data/github.json').readAsStringSync();
|
||||||
|
|
||||||
|
var api = GitHub();
|
||||||
|
|
||||||
|
List<dynamic> list = jsonDecode(jsonString);
|
||||||
|
var repos = <GitHostRepo>[];
|
||||||
|
list.forEach((dynamic d) {
|
||||||
|
var map = Map<String, dynamic>.from(d);
|
||||||
|
var repo = api.repoFromJson(map);
|
||||||
|
repos.add(repo);
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(repos.length, 2);
|
||||||
|
});
|
||||||
|
}
|
25
test/apis/gitlab_test.dart
Normal file
25
test/apis/gitlab_test.dart
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
import 'dart:convert';
|
||||||
|
import 'dart:io';
|
||||||
|
|
||||||
|
import 'package:test/test.dart';
|
||||||
|
|
||||||
|
import 'package:gitjournal/apis/githost_factory.dart';
|
||||||
|
import 'package:gitjournal/apis/gitlab.dart';
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
test('Parse json', () async {
|
||||||
|
var jsonString = File('test/apis/data/gitlab.json').readAsStringSync();
|
||||||
|
|
||||||
|
var api = GitLab();
|
||||||
|
|
||||||
|
List<dynamic> list = jsonDecode(jsonString);
|
||||||
|
var repos = <GitHostRepo>[];
|
||||||
|
list.forEach((dynamic d) {
|
||||||
|
var map = Map<String, dynamic>.from(d);
|
||||||
|
var repo = api.repoFromJson(map);
|
||||||
|
repos.add(repo);
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(repos.length, 2);
|
||||||
|
});
|
||||||
|
}
|
Reference in New Issue
Block a user