Skip to content

Commit 67a7316

Browse files
committed
Improve tests for Code Search API
1 parent 92703ca commit 67a7316

File tree

3 files changed

+33
-34
lines changed

3 files changed

+33
-34
lines changed

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

+1
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ case class Repository(value: JValue) extends AbstractJson(value) {
7171

7272
def description = opt("description")
7373
def open_issues_count = get("open_issues_count").toLong
74+
def `private` = boolean("private")
7475

7576
lazy val permissions = Permissions(value \ "permissions")
7677
lazy val owner = User(value \ "owner")

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

+9-3
Original file line numberDiff line numberDiff line change
@@ -82,16 +82,22 @@ case class SearchCodeInput (
8282
order: SortDirection = SortDirection.desc
8383
) extends SearchInput
8484

85-
case class SearchCodeItems (value: JValue) extends AbstractJson(value){
85+
case class SearchCodeItem(value: JValue) extends AbstractJson(value) {
8686
def name: String = get("name")
87+
def path: String = get("path")
88+
def sha: String = get("sha")
89+
def url: String = get("url")
90+
def git_url: String = get("git_url")
91+
def html_url: String = get("html_url")
92+
def score: Double = get("score").toDouble
8793
lazy val repository = Repository(value \ "repository")
8894
}
8995

9096
case class SearchCodeResult(value: JValue) extends AbstractJson(value) {
9197
def total_count: Long = get("total_count").toLong
9298
def incomplete_results: Boolean = boolean("incomplete_results")
9399
lazy val items = (value \ "items") match {
94-
case JArray(arr) => arr.map(SearchCodeItems(_))
100+
case JArray(arr) => arr.map(SearchCodeItem(_))
95101
case _ => Nil
96102
}
97103
}
@@ -121,7 +127,7 @@ case class SearchUserResult(value: JValue) extends AbstractJson(value) {
121127
def total_count: Long = get("total_count").toLong
122128
def incomplete_results: Boolean = boolean("incomplete_results")
123129
lazy val items = (value \ "items") match {
124-
case JArray(arr) => arr.map(new User(_))
130+
case JArray(arr) => arr.map(User(_))
125131
case _ => Nil
126132
}
127133
}

src/test/scala/SearchOpSpec.scala

+23-31
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import codecheck.github.models.SearchIssueSort
1212
import codecheck.github.models.SearchUserSort
1313
import codecheck.github.models.SearchRepositoryResult
1414
import codecheck.github.models.SearchCodeResult
15-
import codecheck.github.models.SearchCodeItems
1615
import codecheck.github.exceptions.GitHubAPIException
1716

1817
class SearchOpSpec extends FunSpec
@@ -21,9 +20,8 @@ class SearchOpSpec extends FunSpec
2120

2221
describe("searchRepositories") {
2322
it("with valid SearchInput should succeed") {
24-
var q = "tetris language:assembly"
25-
val q1 = q.trim.replaceAll(" ","+");
26-
val input = SearchRepositoryInput(q1,sort=Some(SearchRepositorySort.stars),order=SortDirection.desc)
23+
val q = "tetris language:assembly".trim.replaceAll(" ","+")
24+
val input = SearchRepositoryInput(q,sort=Some(SearchRepositorySort.stars),order=SortDirection.desc)
2725
val res = Await.result(api.searchRepositories(input), TIMEOUT)
2826
assert(res.total_count >= 1)
2927
assert(res.items(0).id >= 1 )
@@ -35,9 +33,8 @@ class SearchOpSpec extends FunSpec
3533
assert(res.items(0).stargazers_count > res.items(1).stargazers_count)
3634
}
3735
it("with valid changed query(q) SearchInput should succeed") {
38-
var q = "jquery in:name,description"
39-
val q1 = q.trim.replaceAll(" ","+");
40-
val input = SearchRepositoryInput(q1,sort=Some(SearchRepositorySort.stars),order=SortDirection.desc)
36+
val q = "jquery in:name,description".trim.replaceAll(" ","+")
37+
val input = SearchRepositoryInput(q,sort=Some(SearchRepositorySort.stars),order=SortDirection.desc)
4138
val res = Await.result(api.searchRepositories(input), TIMEOUT)
4239
assert(res.total_count >= 1)
4340
assert(res.items(0).id >= 1 )
@@ -49,36 +46,31 @@ class SearchOpSpec extends FunSpec
4946
}
5047
describe("searchCode") {
5148
it("with valid SearchInput q,no SortOrder should succeed") {
52-
var q = "addClass in:file language:js repo:jquery/jquery"
53-
val q1 = q.trim.replaceAll(" ","+");
54-
val input = SearchCodeInput(q1,sort=None,order=SortDirection.desc)
49+
val q = "addClass in:file language:js repo:jquery/jquery".trim.replaceAll(" ","+")
50+
val input = SearchCodeInput(q,sort=None,order=SortDirection.desc)
5551
val res = Await.result(api.searchCode(input), TIMEOUT)
5652
assert(res.total_count >= 1)
5753
assert(res.items(0).repository.id >= 1 )
54+
assert(res.items(0).sha.length >= 40)
55+
assert(res.items(0).score >= 0d)
5856
assert(res.items(0).repository.full_name == "jquery/jquery")
5957
}
60-
//Following test results in error:
61-
// "message" : "Validation Failed",
62-
// "errors" : [ {
63-
// "message" : "Must include at least one user, organization, or repository"
6458
it("with valid SearchInput it should succeed") {
65-
var q = "function size:10000 language:python"
66-
val q1 = q.trim.replaceAll(" ","+");
67-
val input = SearchCodeInput(q1,sort=Some(SearchCodeSort.indexed),order=SortDirection.desc)
68-
try {
69-
val res = Await.result(api.searchCode(input), TIMEOUT)
70-
} catch {
71-
case e: GitHubAPIException =>
72-
assert(e.error.errors.length == 1)
73-
assert(e.error.message == "Validation Failed")
74-
}
59+
val q = "function size:10000 language:python".trim.replaceAll(" ","+")
60+
val input = SearchCodeInput(q,sort=Some(SearchCodeSort.indexed),order=SortDirection.asc)
61+
val res = Await.result(api.searchCode(input), TIMEOUT)
62+
assert(res.total_count >= 1)
63+
assert(res.items(0).repository.id >= 1 )
64+
assert(res.items(0).path.endsWith(".py"))
65+
assert(res.items(0).sha.length >= 40)
66+
assert(res.items(0).score >= 0d)
67+
assert(res.items(0).repository.`private` == false)
7568
}
7669
}
7770
describe("searchIssues") {
7871
it("with valid SearchInput should succeed") {
79-
var q = "windows label:bug language:python state:open"
80-
val q1 = q.trim.replaceAll(" ","+");
81-
val input = SearchIssueInput(q1,sort=Some(SearchIssueSort.created),order=SortDirection.desc)
72+
val q = "windows label:bug language:python state:open".trim.replaceAll(" ","+")
73+
val input = SearchIssueInput(q,sort=Some(SearchIssueSort.created),order=SortDirection.desc)
8274
val res = Await.result(api.searchIssues(input), TIMEOUT)
8375
assert(res.total_count >= 1)
8476
assert(res.items(0).labels(0).name == "bug" )
@@ -88,10 +80,10 @@ class SearchOpSpec extends FunSpec
8880
}
8981
describe("searchUser") {
9082
it("with valid SearchInput should succeed") {
91-
var q = "tom repos:>42 followers:>1000"
92-
q = q.trim.replaceAll(" ","+")
93-
val q1 = q.replaceAll(">","%3E")
94-
val input = SearchUserInput(q1,sort=None,order=SortDirection.desc)
83+
val q = "tom repos:>42 followers:>1000"
84+
.trim.replaceAll(" ","+")
85+
.replaceAll(">","%3E")
86+
val input = SearchUserInput(q,sort=None,order=SortDirection.desc)
9587
val res = Await.result(api.searchUser(input), TIMEOUT)
9688
assert(res.total_count >= 0)
9789
assert(res.items(0).login.length >= 0)

0 commit comments

Comments
 (0)