Skip to content

Commit 8baab40

Browse files
committed
Fixed handling of user and subscripition queries
1 parent 948f4b8 commit 8baab40

File tree

4 files changed

+59
-2
lines changed

4 files changed

+59
-2
lines changed

src/com/rallydev/rest/request/GetRequest.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@ public class GetRequest extends Request {
1919

2020
/**
2121
* Create a new get request for the specified object.
22+
*
2223
* @param ref the ref of the WSAPI object to be retrieved. May be absolute or relative, e.g. "/defect/12345"
24+
* May also be "/user" or "/subscription" to get the current instances
2325
*/
2426
public GetRequest(String ref) {
2527
this.ref = ref;
@@ -54,7 +56,20 @@ public void setFetch(Fetch fetch) {
5456
public String toUrl() {
5557
List<NameValuePair> params = new ArrayList<NameValuePair>(getParams());
5658
params.add(new BasicNameValuePair("fetch", fetch.toString()));
57-
return String.format("%s.js?%s", Ref.getRelativeRef(ref),
59+
return String.format("%s.js?%s", getEndpoint(),
5860
URLEncodedUtils.format(params, "utf-8"));
5961
}
62+
63+
protected String getEndpoint() {
64+
String endpoint = ref.toLowerCase();
65+
if (Ref.isRef(endpoint)) {
66+
endpoint = Ref.getRelativeRef(endpoint);
67+
} else if (endpoint.contains("user")) {
68+
endpoint = "/user";
69+
} else if (endpoint.contains("subscription")) {
70+
endpoint = "/subscription";
71+
}
72+
73+
return endpoint;
74+
}
6075
}

src/com/rallydev/rest/request/QueryRequest.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,15 @@ public String toUrl() {
275275
params.add(new BasicNameValuePair("query", getQueryFilter().toString()));
276276
}
277277

278-
return "/" + type.toLowerCase().replaceAll(" ", "") + ".js?" +
278+
return getTypeEndpoint() + "?" +
279279
URLEncodedUtils.format(params, "utf-8");
280280
}
281+
282+
protected String getTypeEndpoint() {
283+
String typeEndpoint = type.toLowerCase().replaceAll(" ", "");
284+
if(typeEndpoint.equals("subscription") || typeEndpoint.equals("user")) {
285+
typeEndpoint += "s";
286+
}
287+
return "/" + typeEndpoint + ".js";
288+
}
281289
}

test/com/rallydev/rest/request/GetRequestTest.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,22 @@ public void shouldReturnCorrectUrlWithFetchParams() {
2424
req.setFetch(new Fetch("Name", "Description"));
2525
Assert.assertEquals(req.toUrl(), "/defect/1234.js?fetch=Name%2CDescription");
2626
}
27+
28+
@Test
29+
public void shouldReturnCorrectUrlForUser() {
30+
Assert.assertEquals(new GetRequest("User").toUrl(), "/user.js?fetch=true");
31+
Assert.assertEquals(new GetRequest("user").toUrl(), "/user.js?fetch=true");
32+
Assert.assertEquals(new GetRequest("/user").toUrl(), "/user.js?fetch=true");
33+
Assert.assertEquals(new GetRequest("/user.js").toUrl(), "/user.js?fetch=true");
34+
Assert.assertEquals(new GetRequest("/user/12345.js").toUrl(), "/user/12345.js?fetch=true");
35+
}
36+
37+
@Test
38+
public void shouldReturnCorrectUrlForSubscription() {
39+
Assert.assertEquals(new GetRequest("Subscription").toUrl(), "/subscription.js?fetch=true");
40+
Assert.assertEquals(new GetRequest("subscription").toUrl(), "/subscription.js?fetch=true");
41+
Assert.assertEquals(new GetRequest("/subscription").toUrl(), "/subscription.js?fetch=true");
42+
Assert.assertEquals(new GetRequest("/subscription.js").toUrl(), "/subscription.js?fetch=true");
43+
Assert.assertEquals(new GetRequest("/subscription/12345.js").toUrl(), "/subscription/12345.js?fetch=true");
44+
}
2745
}

test/com/rallydev/rest/request/QueryRequestTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,4 +127,20 @@ public void shouldCloneCorrectly() {
127127
Assert.assertEquals(q.toUrl(), q2.toUrl());
128128

129129
}
130+
131+
@Test
132+
public void shouldCreateCorrectUrlForSubscription() {
133+
134+
QueryRequest q = new QueryRequest("Subscription");
135+
136+
Assert.assertEquals(q.toUrl(), "/subscriptions.js?start=1&pagesize=200&fetch=true&order=ObjectID");
137+
}
138+
139+
@Test
140+
public void shouldCreateCorrectUrlForUser() {
141+
142+
QueryRequest q = new QueryRequest("User");
143+
144+
Assert.assertEquals(q.toUrl(), "/users.js?start=1&pagesize=200&fetch=true&order=ObjectID");
145+
}
130146
}

0 commit comments

Comments
 (0)