github: Clean GithubAPI deserialization
[nit.git] / lib / github / tests / test_api.nit
index a2ea73d..0b0fcb8 100644 (file)
@@ -57,17 +57,24 @@ class MockGithubAPI
                map["/user"] = "user_Morriar"
                map["/users/Morriar"] = "user_Morriar"
                map["/repos/nitlang/nit"] = "repo_nit"
+               map["/repos/nitlang/nit/labels?page=1&per_page=3"] = "repo_labels_nit"
                map["/repos/nitlang/nit/labels/ok_will_merge"] = "repo_labels_ok_will_merge"
+               map["/repos/nitlang/nit/milestones?page=1&per_page=3"] = "repo_milestones_nit"
                map["/repos/nitlang/nit/milestones/4"] = "repo_milestones_4"
-               map["/repos/nitlang/nit/branches"] = "repo_branches_nit"
+               map["/repos/nitlang/nit/branches?page=1&per_page=2"] = "repo_branches_nit"
                map["/repos/nitlang/nit/branches/master"] = "repo_branches_master"
+               map["/repos/nitlang/nit/issues?page=1&per_page=3"] = "repo_issues_nit"
                map["/repos/nitlang/nit/issues/1000"] = "repo_issues_1000"
+               map["/repos/nitlang/nit/issues/1000/comments?page=1&per_page=3"] = "repo_issues_comments_nit"
                map["/repos/nitlang/nit/issues/comments/6020149"] = "repo_issues_comments_6020149"
+               map["/repos/nitlang/nit/issues/1000/events?page=1&per_page=3"] = "repo_issues_events_nit"
                map["/repos/nitlang/nit/issues/events/199674194"] = "repo_issues_events_199674194"
+               map["/repos/nitlang/nit/pulls?page=1&per_page=3"] = "repo_pulls_nit"
                map["/repos/nitlang/nit/pulls/1000"] = "repo_pulls_1000"
                map["/repos/nitlang/nit/commits/64ce1f"] = "repo_commits_64ce1f"
                map["/repos/nitlang/nit/comments/8982707"] = "repo_comments_8982707"
                map["/repos/nitlang/nit/pulls/comments/21010363"] = "repo_pulls_comment_21010363"
+               map["/search/issues?q=foo repo:nitlang/nit&page=1&per_page=3"] = "repo_search_issues_nit"
                # errors
                map["/users/not_found/not_found"] = "errors_404"
                return map
@@ -212,39 +219,66 @@ class TestGithubAPI
                assert repo.default_branch == "master"
        end
 
-       private var repo: Repo is lazy do return api.get_repo("nitlang/nit").as(not null)
-
        fun test_get_branches is test do
-               var branches = api.get_repo_branches(repo)
+               var branches = api.get_repo_branches("nitlang/nit", 1, 2)
                assert branches.length == 2
                assert branches.first.name == "master"
                assert branches.last.name == "next"
        end
 
-       # TODO issues
-       # TODO repo_last_issue
-       # TODO labels
-       # TODO milestones
-       # TODO pulls
+       fun test_get_issues is test do
+               var issues = api.get_repo_issues("nitlang/nit", 1, 3)
+               assert issues.length == 3
+               assert issues.first.title == "nitrpg: Move `nitrpg` to its own repository"
+               assert issues.last.title == "Mock Github API tests"
+       end
+
+       fun test_search_issues is test do
+               var results = api.search_repo_issues("nitlang/nit", "foo", 1, 3)
+               assert results isa SearchResults
+               assert results.items.length == 3
+               assert results.items.first.as(Issue).title == "Introduction of contracts in Nit"
+               assert results.items.last.as(Issue).title == "Appel de méthodes abstraites non redéfinies"
+       end
+
+       fun test_get_labels is test do
+               var labels = api.get_repo_labels("nitlang/nit", 1, 3)
+               assert labels.length == 3
+               assert labels.first.name == "API"
+               assert labels.last.name == "NEP"
+       end
+
+       fun test_get_milestones is test do
+               var milestones = api.get_repo_milestones("nitlang/nit", 1, 3)
+               assert milestones.length == 3
+               assert milestones.first.title == "v1.0prealpha"
+               assert milestones.last.title == "nitdoc - Abstraction levels"
+       end
+
+       fun test_get_pulls is test do
+               var pulls = api.get_repo_pulls("nitlang/nit", 1, 3)
+               assert pulls.length == 3
+               assert pulls.first.title == "nitrpg: Move `nitrpg` to its own repository"
+               assert pulls.last.title == "Mock Github API tests"
+       end
+
        # TODO contrib_stats
 
        fun test_get_branch is test do
-               var branch = api.get_branch(repo, "master")
+               var branch = api.get_branch("nitlang/nit", "master")
                assert branch isa Branch
                assert branch.name == "master"
        end
 
-       # TODO branch commits
-
        fun test_get_commit is test do
-               var commit = api.get_commit(repo, "64ce1f")
+               var commit = api.get_commit("nitlang/nit", "64ce1f")
                assert commit isa Commit
                assert commit.sha == "64ce1f587209024f5de46d06c70526a569ff537f"
                # TODO other fields
        end
 
        fun test_get_issue is test do
-               var issue = api.get_issue(repo, 1000)
+               var issue = api.get_issue("nitlang/nit", 1000)
                assert issue isa Issue
                assert issue.number == 1000
                assert issue.title == "Raise nitc from the dead"
@@ -257,12 +291,23 @@ class TestGithubAPI
                assert issue.is_pull_request
        end
 
-       # TODO issue comments
-       # TODO issue events
+       fun test_get_issue_comments is test do
+               var comments = api.get_issue_comments("nitlang/nit", 1000, 1, 3)
+               assert comments.length == 3
+               assert comments.first.user.login == "R4PaSs"
+               assert comments.last.user.login == "xymus"
+       end
+
+       fun test_get_issue_events is test do
+               var events = api.get_issue_events("nitlang/nit", 1000, 1, 3)
+               assert events.length == 3
+               assert events.first.actor.login == "privat"
+               assert events.last.actor.login == "xymus"
+       end
 
        fun test_get_pull is test do
-               var pull = api.get_pull(repo, 1000)
-               assert pull isa Issue
+               var pull = api.get_pull("nitlang/nit", 1000)
+               assert pull isa PullRequest
                assert pull.number == 1000
                assert pull.title == "Raise nitc from the dead"
                assert pull.user.as(User).login == "privat"
@@ -274,20 +319,20 @@ class TestGithubAPI
        end
 
        fun test_get_label is test do
-               var labl = api.get_label(repo, "ok_will_merge")
+               var labl = api.get_label("nitlang/nit", "ok_will_merge")
                assert labl isa Label
                assert labl.name == "ok_will_merge"
        end
 
        fun test_get_milestone is test do
-               var milestone = api.get_milestone(repo, 4)
+               var milestone = api.get_milestone("nitlang/nit", 4)
                assert milestone isa Milestone
                assert milestone.title == "v1.0prealpha"
                # TODO other fields
        end
 
        fun test_get_issue_event is test do
-               var event = api.get_issue_event(repo, 199674194)
+               var event = api.get_issue_event("nitlang/nit", 199674194)
                assert event isa IssueEvent
                assert event.actor.login == "privat"
                assert event.event == "labeled"
@@ -295,7 +340,7 @@ class TestGithubAPI
        end
 
        fun test_get_issue_comment is test do
-               var comment = api.get_issue_comment(repo, 6020149)
+               var comment = api.get_issue_comment("nitlang/nit", 6020149)
                assert comment isa IssueComment
                assert comment.user.login == "privat"
                assert comment.created_at.to_s == "2012-05-30T20:16:54Z"
@@ -303,7 +348,7 @@ class TestGithubAPI
        end
 
        fun test_get_comment is test do
-               var comment = api.get_commit_comment(repo, 8982707)
+               var comment = api.get_commit_comment("nitlang/nit", 8982707)
                assert comment isa CommitComment
                assert comment.user.login == "Morriar"
                assert comment.body == "For testing purposes...\n"
@@ -311,7 +356,7 @@ class TestGithubAPI
        end
 
        fun test_get_review_comments is test do
-               var comment = api.get_review_comment(repo, 21010363)
+               var comment = api.get_review_comment("nitlang/nit", 21010363)
                assert comment isa ReviewComment
                assert comment.path == "src/modelize/modelize_property.nit"
                assert comment.original_position == 26