Skip to content

Commit e0e570f

Browse files
committed
Tests for searchCode,searchIssues,searchUser
1 parent a56e4f6 commit e0e570f

File tree

4 files changed

+67
-5
lines changed

4 files changed

+67
-5
lines changed

Diff for: src/main/scala/codecheck/github/models/Issue.scala

+2-1
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ case class Issue(value: JValue) extends AbstractJson(value) {
104104
lazy val assignee = objectOpt("assignee")(v => User(v))
105105
lazy val milestone = objectOpt("milestone")(v => Milestone(v))
106106

107+
val state = get("state")
107108
lazy val user = new User(value \ "user")
108109
lazy val labels = (value \ "labels") match {
109110
case JArray(arr) => arr.map(new Label(_))
@@ -115,4 +116,4 @@ case class Issue(value: JValue) extends AbstractJson(value) {
115116
def created_at = date("created_at")
116117
def updated_at = date("updated_at")
117118
def closed_at = dateOpt("closed_at")
118-
}
119+
}

Diff for: src/main/scala/codecheck/github/models/Repository.scala

+3-1
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ case class Repository(value: JValue) extends AbstractJson(value) {
5353
def name = get("name")
5454
def full_name = get("full_name")
5555
def url = get("url")
56+
def language = get("language")
57+
def stargazers_count = get("stargazers_count")
5658

5759
def description = opt("description")
5860
def open_issues_count = get("open_issues_count").toInt
@@ -65,4 +67,4 @@ case class Permissions(value: JValue) extends AbstractJson(value) {
6567
def admin = boolean("admin")
6668
def push = boolean("push")
6769
def pull = boolean("pull")
68-
}
70+
}

Diff for: src/main/scala/codecheck/github/operations/SearchOp.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ trait SearchOp {
4545
}
4646

4747
def searchUser(input: SearchInput): Future[Option[SearchUserResult]] = {
48-
val path = s"/search/user?q=${input.q}&sort=${input.sort}&order=${input.order}"
48+
val path = s"/search/users?q=${input.q}&sort=${input.sort}&order=${input.order}"
4949
exec("GET", path ).map { res =>
5050
res.statusCode match {
5151
case 200 => Some(SearchUserResult(res.body))

Diff for: src/test/scala/SearchOpSpec.scala

+61-2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ import codecheck.github.models.SortDirection
55
import codecheck.github.models.SearchInput
66
import codecheck.github.models.SearchSort
77
import codecheck.github.models.SearchRepositoryResult
8+
import codecheck.github.models.SearchCodeResult
9+
import codecheck.github.models.searchCodeItems
10+
import codecheck.github.exceptions.GitHubAPIException
811

912
class SearchOpSpec extends FunSpec
1013
with Constants
@@ -22,7 +25,8 @@ class SearchOpSpec extends FunSpec
2225
assert(res.items(0).full_name.length >= 1)
2326
assert(res.items(0).description.isDefined)
2427
assert(res.items(0).open_issues_count >= 0)
25-
println("RESULT" + res)
28+
assert(res.items(0).language == "Assembly")
29+
assert(res.items(0).stargazers_count > res.items(1).stargazers_count)
2630
}
2731
}
2832
it("with valid changed query(q) SearchInput should succeed") {
@@ -36,7 +40,62 @@ class SearchOpSpec extends FunSpec
3640
assert(res.items(0).full_name.length >= 1)
3741
assert(res.items(0).description.isDefined)
3842
assert(res.items(0).open_issues_count >= 0)
39-
println("RESULT" + res)
43+
}
44+
}
45+
}
46+
describe("searchCode") {
47+
it("with valid SearchInput q,no SortOrder should succeed") {
48+
var q = "addClass in:file language:js repo:jquery/jquery"
49+
val q1 = q.trim.replaceAll(" ","+");
50+
val input = SearchInput(q1,sort=None,order=SortDirection.desc)
51+
Await.result(api.searchCode(input), TIMEOUT).map { res =>
52+
assert(res.total_count >= 1)
53+
assert(res.items(0).Repo.id >= 1 )
54+
assert(res.items(0).Repo.full_name == "jquery/jquery")
55+
}
56+
}
57+
//Following test results in error:
58+
// "message" : "Validation Failed",
59+
// "errors" : [ {
60+
// "message" : "Must include at least one user, organization, or repository"
61+
it("with valid SearchInput it should succeed") {
62+
var q = "function size:10000 language:python"
63+
val q1 = q.trim.replaceAll(" ","+");
64+
val input = SearchInput(q1,sort=Some(SearchSort.indexed),order=SortDirection.desc)
65+
try {
66+
val res = Await.result(api.searchCode(input), TIMEOUT)
67+
fail
68+
} catch {
69+
case e: GitHubAPIException =>
70+
assert(e.error.errors.length == 1)
71+
assert(e.error.message == "Validation Failed")
72+
}
73+
}
74+
}
75+
describe("searchIssues") {
76+
it("with valid SearchInput should succeed") {
77+
var q = "windows label:bug language:python state:open"
78+
val q1 = q.trim.replaceAll(" ","+");
79+
val input = SearchInput(q1,sort=Some(SearchSort.created),order=SortDirection.asc)
80+
Await.result(api.searchIssues(input), TIMEOUT).map { res =>
81+
assert(res.total_count >= 1)
82+
assert(res.items(0).labels(0).name == "bug" )
83+
assert(res.items(0).state == "open")
84+
assert(((res.items(0).created_at).compareTo(res.items(1).created_at)) > 0)
85+
}
86+
}
87+
}
88+
describe("searchUser") {
89+
it("with valid SearchInput should succeed") {
90+
var q = "tom repos:>42 followers:>1000"
91+
q = q.trim.replaceAll(" ","+")
92+
val q1 = q.replaceAll(">","%3E")
93+
println("QUERY: searchUser" + q1)
94+
val input = SearchInput(q1,sort=None,order=SortDirection.desc)
95+
Await.result(api.searchUser(input), TIMEOUT).map { res =>
96+
assert(res.total_count >= 1)
97+
assert(res.items(0).login.length >= 1)
98+
assert(res.items(0).id >= 1)
4099
}
41100
}
42101
}

0 commit comments

Comments
 (0)