Skip to content

Commit 4b91b99

Browse files
sukeshniashawley
authored andcommitted
Tests for searchCode,searchIssues,searchUser
1 parent 37b5cb1 commit 4b91b99

File tree

3 files changed

+63
-4
lines changed

3 files changed

+63
-4
lines changed

src/main/scala/codecheck/github/models/Repository.scala

+3-1
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,11 @@ case class Repository(value: JValue) extends AbstractJson(value) {
6666
def name = get("name")
6767
def full_name = get("full_name")
6868
def url = get("url")
69+
def language = get("language")
70+
def stargazers_count = get("stargazers_count").toLong
6971

7072
def description = opt("description")
71-
def open_issues_count = get("open_issues_count").toInt
73+
def open_issues_count = get("open_issues_count").toLong
7274

7375
lazy val permissions = Permissions(value \ "permissions")
7476
lazy val owner = User(value \ "owner")

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))

src/test/scala/SearchOpSpec.scala

+59-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,60 @@ 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+
} catch {
68+
case e: GitHubAPIException =>
69+
assert(e.error.errors.length == 1)
70+
assert(e.error.message == "Validation Failed")
71+
}
72+
}
73+
}
74+
describe("searchIssues") {
75+
it("with valid SearchInput should succeed") {
76+
var q = "windows label:bug language:python state:open"
77+
val q1 = q.trim.replaceAll(" ","+");
78+
val input = SearchInput(q1,sort=Some(SearchSort.created),order=SortDirection.desc)
79+
val res = Await.result(api.searchIssues(input), TIMEOUT)
80+
assert(res.total_count >= 1)
81+
assert(res.items(0).labels(0).name == "bug" )
82+
assert(res.items(0).state == "open")
83+
assert(((res.items(0).created_at).compareTo(res.items(1).created_at)) > 0)
84+
}
85+
}
86+
describe("searchUser") {
87+
it("with valid SearchInput should succeed") {
88+
var q = "tom repos:>42 followers:>1000"
89+
q = q.trim.replaceAll(" ","+")
90+
val q1 = q.replaceAll(">","%3E")
91+
println("QUERY: searchUser" + q1)
92+
val input = SearchInput(q1,sort=None,order=SortDirection.desc)
93+
Await.result(api.searchUser(input), TIMEOUT).map { res =>
94+
assert(res.total_count >= 1)
95+
assert(res.items(0).login.length >= 1)
96+
assert(res.items(0).id >= 1)
4097
}
4198
}
4299
}

0 commit comments

Comments
 (0)