Skip to content

Commit 7814d56

Browse files
committed
Add overloaded getJervisYamlFiles
Now accepts a single string with contains a repository with owner. e.g. `samrocketman/jervis`.
1 parent 4f34957 commit 7814d56

File tree

2 files changed

+51
-1
lines changed

2 files changed

+51
-1
lines changed

src/main/groovy/net/gleske/jervis/remotes/GitHubGraphQL.groovy

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ package net.gleske.jervis.remotes
1717

1818
import groovy.json.JsonBuilder
1919
import net.gleske.jervis.remotes.interfaces.TokenCredential
20+
import net.gleske.jervis.exceptions.JervisException
2021
import static net.gleske.jervis.tools.AutoRelease.getScriptFromTemplate
2122

2223
/**
@@ -163,7 +164,6 @@ class GitHubGraphQL implements SimpleRestServiceSupport {
163164
}
164165

165166
public def sendGQL(String graphql, String variables = '', String http_method = 'POST', Map http_headers = [:]) {
166-
println graphql
167167
apiFetch('', http_headers, http_method, getGqlData(graphql, variables))
168168
}
169169

@@ -222,4 +222,14 @@ Map response = github.getJervisYamlFiles('samrocketman', 'jervis')</tt></pre>
222222
]
223223
sendGQL(getScriptFromTemplate(graphql_expr_template, binding))?.get('data') ?: [:]
224224
}
225+
public Map getJervisYamlFiles(String repositoryWithOwner,
226+
List gitRefs = ['refs/heads/master'],
227+
List yamlFiles = ['.jervis.yml', '.travis.yml']) {
228+
if(!repositoryWithOwner.contains('/') || (repositoryWithOwner.tokenize('/').size() > 2)) {
229+
throw new JervisException("ERROR: getJervisYamlFiles recieved a malformated repositoryWithOwner ${repositoryWithOwner}.")
230+
}
231+
repositoryWithOwner.tokenize('/').with {
232+
getJervisYamlFiles(it[0], it[1], gitRefs, yamlFiles)
233+
}
234+
}
225235
}

src/test/groovy/net/gleske/jervis/remotes/GitHubGraphQLTest.groovy

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
package net.gleske.jervis.remotes
1717
//the GitHubGraphQLTest() class automatically sees the GitHub() class because they're in the same package
18+
import net.gleske.jervis.exceptions.JervisException
1819
import org.junit.After
1920
import org.junit.Before
2021
import org.junit.Test
@@ -138,4 +139,43 @@ class GitHubGraphQLTest extends GroovyTestCase {
138139
assert response instanceof Map
139140
assert response == [:]
140141
}
142+
@Test public void test_GitHubGraphQL_getJervisYamlFiles_repositoryWithOwner_defaults() {
143+
Map shouldRespond = ['gitRef0':['jervisYaml0':null, 'jervisYaml1':['text':'mock response data'], 'rootFolder':['file':[['name':'.travis.yml', 'type':'blob'], ['name':'README.md', 'type':'blob']]]]]
144+
Map response = mygh.getJervisYamlFiles('samrocketman/jervis')
145+
assert shouldRespond.keySet() == response.keySet()
146+
assert shouldRespond['gitRef0'].keySet() == response['gitRef0'].keySet()
147+
assert shouldRespond['gitRef0']['jervisYaml0'] == response['gitRef0']['jervisYaml0']
148+
assert shouldRespond['gitRef0']['jervisYaml1'] == response['gitRef0']['jervisYaml1']
149+
assert shouldRespond['gitRef0']['rootFolder']['file']*.name == response['gitRef0']['rootFolder']['file']*.name
150+
assert shouldRespond['gitRef0']['rootFolder']['file']*.type == response['gitRef0']['rootFolder']['file']*.type
151+
}
152+
@Test public void test_GitHubGraphQL_getJervisYamlFiles_repositoryWithOwner_two_branches_defaults() {
153+
Map shouldRespond = ['gitRef0':['jervisYaml0':null, 'jervisYaml1':['text':'mock data 1'], 'rootFolder':['file':[['name':'.travis.yml', 'type':'blob'], ['name':'README.md', 'type':'blob']]]], 'gitRef1':['jervisYaml0':null, 'jervisYaml1':['text':'mock data 2'], 'rootFolder':['file':[['name':'.travis.yml', 'type':'blob'], ['name':'CHANGELOG.md', 'type':'blob'], ['name':'README.md', 'type':'blob']]]]]
154+
Map response = mygh.getJervisYamlFiles('samrocketman/jervis', ['refs/heads/master', 'refs/heads/jervis_simple'])
155+
assert shouldRespond['gitRef0'].keySet() == response['gitRef0'].keySet()
156+
assert shouldRespond['gitRef0']['jervisYaml0'] == response['gitRef0']['jervisYaml0']
157+
assert shouldRespond['gitRef0']['jervisYaml1'] == response['gitRef0']['jervisYaml1']
158+
assert shouldRespond['gitRef0']['rootFolder']['file']*.name == response['gitRef0']['rootFolder']['file']*.name
159+
assert shouldRespond['gitRef0']['rootFolder']['file']*.type == response['gitRef0']['rootFolder']['file']*.type
160+
assert shouldRespond['gitRef1'].keySet() == response['gitRef1'].keySet()
161+
assert shouldRespond['gitRef1']['jervisYaml0'] == response['gitRef1']['jervisYaml0']
162+
assert shouldRespond['gitRef1']['jervisYaml1'] == response['gitRef1']['jervisYaml1']
163+
assert shouldRespond['gitRef1']['rootFolder']['file']*.name == response['gitRef1']['rootFolder']['file']*.name
164+
assert shouldRespond['gitRef1']['rootFolder']['file']*.type == response['gitRef1']['rootFolder']['file']*.type
165+
}
166+
@Test public void test_GitHubGraphQL_getJervisYamlFiles_repositoryWithOwner_invalid_apiErr() {
167+
Map response = mygh.getJervisYamlFiles('invalid/invalid')
168+
assert response instanceof Map
169+
assert response == [:]
170+
}
171+
@Test public void test_GitHubGraphQL_getJervisYamlFiles_repositoryWithOwner_invalid() {
172+
shouldFail(JervisException) {
173+
mygh.getJervisYamlFiles('invalid')
174+
}
175+
}
176+
@Test public void test_GitHubGraphQL_getJervisYamlFiles_repositoryWithOwner_invalid_tooMany() {
177+
shouldFail(JervisException) {
178+
mygh.getJervisYamlFiles('invalid/invalid/invalid')
179+
}
180+
}
141181
}

0 commit comments

Comments
 (0)