Skip to content

Commit fe4e40d

Browse files
committed
Merge branch '1.4.0a' into development
2 parents 1f3f30b + a8ea5e5 commit fe4e40d

File tree

7 files changed

+189
-1
lines changed

7 files changed

+189
-1
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.spotify.exceptions;
2+
3+
public class SpotifyUrlParserException extends Exception {
4+
5+
public SpotifyUrlParserException(String reason) {
6+
super(reason);
7+
}
8+
9+
}

src/main/java/com/spotify/requests/SpotifyRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
@Target(ElementType.TYPE)
1010
public @interface SpotifyRequest {
1111

12-
String value() default "";
12+
String value();
1313

1414
String end() default "";
1515

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
package com.spotify.requests;
2+
3+
import com.spotify.exceptions.SpotifyUrlParserException;
4+
import com.spotify.requests.testclasses.TestFieldRequestClass1;
5+
import com.spotify.requests.testclasses.TestRequestClass1;
6+
import com.spotify.requests.testclasses.TestSubRequestClass1;
7+
import com.spotify.requests.testclasses.TestSubRequestClass2;
8+
import org.junit.jupiter.api.Test;
9+
10+
import static org.junit.jupiter.api.Assertions.*;
11+
12+
public class SpotifyAnnotationTest {
13+
14+
15+
/**
16+
* Tests classes that don't have @SpotifyRequest annotation
17+
*/
18+
@Test
19+
public void spotifyRequestAnnotationTest1() {
20+
TestRequestClass1 trc = new TestRequestClass1();
21+
trc.setField1("value1");
22+
String url = trc.buildRequestUrl();
23+
24+
assertNull(url);
25+
}
26+
27+
28+
/**
29+
* Tests class fields with @SpotifySubRequest
30+
* Ensures that field that are not annotated do not add to url
31+
*/
32+
@Test
33+
public void spotifySubRequestAnnotationTest1() {
34+
TestSubRequestClass1 trc = new TestSubRequestClass1();
35+
36+
trc.setField1("subrequest1");
37+
trc.setField2("subrequest2");
38+
trc.setField3("failsubrequest");
39+
40+
String url = trc.buildRequestUrl();
41+
42+
assertEquals("url/subrequest1/subrequest2", url);
43+
44+
}
45+
46+
/**
47+
* Tests class fields with @SpotifySubRequest
48+
* Should fail to create url since a field annotated with subRequest should not be none
49+
*/
50+
@Test
51+
public void spotifySubRequestAnnotationTest2() {
52+
TestSubRequestClass1 trc = new TestSubRequestClass1();
53+
54+
trc.setField1("subrequest1");
55+
trc.setField2(null);
56+
57+
String url = trc.buildRequestUrl();
58+
59+
assertNull(url);
60+
}
61+
62+
63+
/**
64+
* Tests class fields with @SpotifySubRequest
65+
* Should fail to create url since subRequest fields must be type String
66+
*/
67+
@Test
68+
public void spotifySubRequestAnnotationTest3() {
69+
TestSubRequestClass2 trc = new TestSubRequestClass2();
70+
71+
trc.setIntField(6);
72+
73+
SpotifyUrlParserException thrown = assertThrows(SpotifyUrlParserException.class, trc::buildRequestUrl);
74+
75+
assertNotNull(thrown);
76+
}
77+
78+
79+
/**
80+
* Tests class fields with @SpotifyRequestField
81+
* Ensures that default values of field are ignored
82+
* and non labelled fields
83+
*/
84+
@Test
85+
public void spotifyFieldRequestAnnotationTest1() {
86+
TestFieldRequestClass1 trc = new TestFieldRequestClass1();
87+
88+
trc.setField1("value1");
89+
trc.setField2("value2");
90+
trc.setField3(null);
91+
92+
93+
String url = trc.buildRequestUrl();
94+
95+
assertEquals("url?field1=value1&FIELD2=value2", url);
96+
97+
}
98+
99+
100+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.spotify.requests.testclasses;
2+
3+
import com.spotify.requests.AbstractRequest;
4+
import com.spotify.requests.SpotifyRequest;
5+
import com.spotify.requests.SpotifyRequestField;
6+
import lombok.Setter;
7+
8+
@SpotifyRequest("url")
9+
@Setter
10+
public class TestFieldRequestClass1 extends AbstractRequest {
11+
12+
@SpotifyRequestField
13+
private String field1;
14+
15+
@SpotifyRequestField("FIELD2")
16+
private String field2;
17+
18+
@SpotifyRequestField
19+
private String field3;
20+
21+
@SpotifyRequestField
22+
private int field4;
23+
24+
@SpotifyRequestField
25+
private String field5;
26+
27+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.spotify.requests.testclasses;
2+
3+
import com.spotify.requests.AbstractRequest;
4+
import com.spotify.requests.SpotifyRequestField;
5+
import lombok.Setter;
6+
7+
@Setter
8+
public class TestRequestClass1 extends AbstractRequest {
9+
10+
11+
@SpotifyRequestField
12+
private String field1;
13+
14+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.spotify.requests.testclasses;
2+
3+
import com.spotify.requests.AbstractRequest;
4+
import com.spotify.requests.SpotifyRequest;
5+
import com.spotify.requests.SpotifySubRequest;
6+
import lombok.Setter;
7+
8+
@SpotifyRequest("url")
9+
@Setter
10+
public class TestSubRequestClass1 extends AbstractRequest {
11+
12+
@SpotifySubRequest
13+
private String field1;
14+
15+
@SpotifySubRequest
16+
private String field2;
17+
18+
private String field3;
19+
20+
21+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.spotify.requests.testclasses;
2+
3+
import com.spotify.requests.AbstractRequest;
4+
import com.spotify.requests.SpotifyRequest;
5+
import com.spotify.requests.SpotifySubRequest;
6+
import lombok.Setter;
7+
8+
@SpotifyRequest("url")
9+
@Setter
10+
public class TestSubRequestClass2 extends AbstractRequest {
11+
12+
13+
@SpotifySubRequest
14+
private int intField;
15+
16+
17+
}

0 commit comments

Comments
 (0)