Skip to content

Commit 63b0588

Browse files
SquidXTVsurajkumar
andauthored
Integration tests for ApplicationRequest (#165)
* Add integration tests for application requests * chore: run spotlessApply --------- Co-authored-by: Suraj Kumar <[email protected]>
1 parent 6de68fa commit 63b0588

File tree

4 files changed

+170
-54
lines changed

4 files changed

+170
-54
lines changed

api/src/main/java/com/javadiscord/jdi/core/api/ApplicationRequest.java

Lines changed: 3 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11
package com.javadiscord.jdi.core.api;
22

3-
import java.util.List;
4-
import java.util.Map;
5-
3+
import com.javadiscord.jdi.core.api.builders.EditCurrentApplicationBuilder;
64
import com.javadiscord.jdi.core.models.application.Application;
7-
import com.javadiscord.jdi.core.models.application.ApplicationInstallParams;
8-
import com.javadiscord.jdi.internal.api.application.EditCurrentApplicationRequest;
95
import com.javadiscord.jdi.internal.api.application.GetCurrentApplicationRequest;
106

117
public class ApplicationRequest {
@@ -18,32 +14,9 @@ public ApplicationRequest(DiscordResponseParser responseParser, long guildId) {
1814
}
1915

2016
public AsyncResponse<Application> editCurrentApplication(
21-
String customInstallUrl,
22-
String description,
23-
String roleConnectionsVerificationUrl,
24-
ApplicationInstallParams installParams,
25-
Map<String, Object> integrationTypesConfig,
26-
int flags,
27-
String icon,
28-
String coverImage,
29-
String interactionsEndpointUrl,
30-
List<String> tags
17+
EditCurrentApplicationBuilder builder
3118
) {
32-
return responseParser.callAndParse(
33-
Application.class,
34-
new EditCurrentApplicationRequest(
35-
customInstallUrl,
36-
description,
37-
roleConnectionsVerificationUrl,
38-
installParams,
39-
integrationTypesConfig,
40-
flags,
41-
icon,
42-
coverImage,
43-
interactionsEndpointUrl,
44-
tags
45-
)
46-
);
19+
return responseParser.callAndParse(Application.class, builder.build());
4720
}
4821

4922
public AsyncResponse<Application> getCurrentApplication() {
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
package com.javadiscord.jdi.core.api.builders;
2+
3+
import java.util.List;
4+
import java.util.Map;
5+
import java.util.Optional;
6+
7+
import com.javadiscord.jdi.core.models.application.ApplicationInstallParams;
8+
import com.javadiscord.jdi.internal.api.application.EditCurrentApplicationRequest;
9+
10+
public class EditCurrentApplicationBuilder {
11+
12+
private Optional<String> customInstallUrl = Optional.empty();
13+
private Optional<String> description = Optional.empty();
14+
private Optional<String> roleConnectionsVerificationUrl = Optional.empty();
15+
private Optional<ApplicationInstallParams> installParams = Optional.empty();
16+
private Optional<Map<String, Object>> integrationTypesConfig = Optional.empty();
17+
private Optional<Integer> flags = Optional.empty();
18+
private Optional<String> icon = Optional.empty();
19+
private Optional<String> coverImage = Optional.empty();
20+
private Optional<String> interactionsEndpointUrl = Optional.empty();
21+
private Optional<List<String>> tags = Optional.empty();
22+
23+
public EditCurrentApplicationBuilder customInstallUrl(String customInstallUrl) {
24+
this.customInstallUrl = Optional.of(customInstallUrl);
25+
return this;
26+
}
27+
28+
public EditCurrentApplicationBuilder description(String description) {
29+
this.description = Optional.of(description);
30+
return this;
31+
}
32+
33+
public EditCurrentApplicationBuilder roleConnectionsVerificationUrl(
34+
String roleConnectionsVerificationUrl
35+
) {
36+
this.roleConnectionsVerificationUrl = Optional.of(roleConnectionsVerificationUrl);
37+
return this;
38+
}
39+
40+
public EditCurrentApplicationBuilder installParams(ApplicationInstallParams installParams) {
41+
this.installParams = Optional.of(installParams);
42+
return this;
43+
}
44+
45+
public EditCurrentApplicationBuilder integrationTypesConfig(
46+
Map<String, Object> integrationTypesConfig
47+
) {
48+
this.integrationTypesConfig = Optional.of(integrationTypesConfig);
49+
return this;
50+
}
51+
52+
public EditCurrentApplicationBuilder flags(int flags) {
53+
this.flags = Optional.of(flags);
54+
return this;
55+
}
56+
57+
public EditCurrentApplicationBuilder icon(String icon) {
58+
this.icon = Optional.of(icon);
59+
return this;
60+
}
61+
62+
public EditCurrentApplicationBuilder coverImage(String coverImage) {
63+
this.coverImage = Optional.of(coverImage);
64+
return this;
65+
}
66+
67+
public EditCurrentApplicationBuilder interactionsEndpointUrl(String interactionsEndpointUrl) {
68+
this.interactionsEndpointUrl = Optional.of(interactionsEndpointUrl);
69+
return this;
70+
}
71+
72+
public EditCurrentApplicationBuilder tags(List<String> tags) {
73+
this.tags = Optional.of(tags);
74+
return this;
75+
}
76+
77+
public EditCurrentApplicationRequest build() {
78+
return new EditCurrentApplicationRequest(
79+
customInstallUrl,
80+
description,
81+
roleConnectionsVerificationUrl,
82+
installParams,
83+
integrationTypesConfig,
84+
flags,
85+
icon,
86+
coverImage,
87+
interactionsEndpointUrl,
88+
tags
89+
);
90+
}
91+
92+
}
Lines changed: 28 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,47 @@
11
package com.javadiscord.jdi.internal.api.application;
22

3+
import java.util.HashMap;
34
import java.util.List;
45
import java.util.Map;
6+
import java.util.Optional;
57

68
import com.javadiscord.jdi.core.models.application.ApplicationInstallParams;
79
import com.javadiscord.jdi.internal.api.DiscordRequest;
810
import com.javadiscord.jdi.internal.api.DiscordRequestBuilder;
911

1012
public record EditCurrentApplicationRequest(
11-
String customInstallUrl,
12-
String description,
13-
String roleConnectionsVerificationUrl,
14-
ApplicationInstallParams installParams,
15-
Map<String, Object> integrationTypesConfig,
16-
int flags,
17-
String icon,
18-
String coverImage,
19-
String interactionsEndpointUrl,
20-
List<String> tags
13+
Optional<String> customInstallUrl,
14+
Optional<String> description,
15+
Optional<String> roleConnectionsVerificationUrl,
16+
Optional<ApplicationInstallParams> installParams,
17+
Optional<Map<String, Object>> integrationTypesConfig,
18+
Optional<Integer> flags,
19+
Optional<String> icon,
20+
Optional<String> coverImage,
21+
Optional<String> interactionsEndpointUrl,
22+
Optional<List<String>> tags
2123
) implements DiscordRequest {
2224

2325
@Override
2426
public DiscordRequestBuilder create() {
27+
Map<String, Object> body = new HashMap<>();
28+
29+
customInstallUrl.ifPresent(val -> body.put("custom_install_url", val));
30+
description.ifPresent(val -> body.put("description", val));
31+
roleConnectionsVerificationUrl
32+
.ifPresent(val -> body.put("role_connections_verification_url", val));
33+
installParams.ifPresent(val -> body.put("install_params", val));
34+
integrationTypesConfig.ifPresent(val -> body.put("integration_types_config", val));
35+
flags.ifPresent(val -> body.put("flags", val));
36+
icon.ifPresent(val -> body.put("icon", val));
37+
coverImage.ifPresent(val -> body.put("cover_image", val));
38+
interactionsEndpointUrl.ifPresent(val -> body.put("interactions_endpoint_url", val));
39+
tags.ifPresent(val -> body.put("tags", val));
40+
2541
return new DiscordRequestBuilder()
2642
.patch()
2743
.path("/applications/@me")
28-
.body(
29-
Map.of(
30-
"custom_install_url", customInstallUrl,
31-
"description", description,
32-
"role_connections_verification_url", roleConnectionsVerificationUrl,
33-
"install_params", installParams,
34-
"integration_types_config", integrationTypesConfig,
35-
"flags", flags,
36-
"icon", icon,
37-
"cover_image", coverImage,
38-
"interactions_endpoint_url", interactionsEndpointUrl,
39-
"tags", tags
40-
)
41-
);
44+
.body(body);
4245
}
46+
4347
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package com.javadiscord.jdi.core.api;
2+
3+
import com.javadiscord.jdi.core.Guild;
4+
import com.javadiscord.jdi.core.api.builders.EditCurrentApplicationBuilder;
5+
import com.javadiscord.jdi.core.models.application.Application;
6+
import helpers.LiveDiscordHelper;
7+
import org.junit.jupiter.api.Assertions;
8+
import org.junit.jupiter.api.BeforeAll;
9+
import org.junit.jupiter.api.Test;
10+
11+
import java.util.concurrent.CountDownLatch;
12+
import java.util.concurrent.TimeUnit;
13+
14+
import static org.junit.jupiter.api.Assertions.*;
15+
16+
17+
public class ApplicationRequestTest {
18+
19+
private static Guild guild;
20+
21+
@BeforeAll
22+
public static void setup() throws InterruptedException {
23+
guild = new LiveDiscordHelper().getGuild();
24+
}
25+
26+
@Test
27+
void testGetApplication() throws InterruptedException {
28+
CountDownLatch latch = new CountDownLatch(1);
29+
30+
AsyncResponse<Application> asyncResponse = guild.application().getCurrentApplication();
31+
asyncResponse.onSuccess(res -> latch.countDown());
32+
asyncResponse.onError(Assertions::fail);
33+
34+
assertTrue(latch.await(30, TimeUnit.SECONDS));
35+
}
36+
37+
@Test
38+
void testEditCurrentApplication() throws InterruptedException {
39+
CountDownLatch latch = new CountDownLatch(1);
40+
41+
AsyncResponse<Application> asyncResponse = guild.application().
42+
editCurrentApplication(new EditCurrentApplicationBuilder());
43+
asyncResponse.onSuccess(res -> latch.countDown());
44+
asyncResponse.onError(Assertions::fail);
45+
assertTrue(latch.await(30, TimeUnit.SECONDS));
46+
}
47+
}

0 commit comments

Comments
 (0)