Skip to content

Commit

Permalink
Test parsing failure in entitlement pagination
Browse files Browse the repository at this point in the history
  • Loading branch information
MinnDevelopment committed Apr 7, 2024
1 parent 10e50d5 commit cbf7849
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 1 deletion.
22 changes: 22 additions & 0 deletions src/test/java/net/dv8tion/jda/test/IntegrationTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,14 @@

package net.dv8tion.jda.test;

import net.dv8tion.jda.api.requests.Request;
import net.dv8tion.jda.api.requests.Response;
import net.dv8tion.jda.api.utils.data.DataArray;
import net.dv8tion.jda.api.utils.data.DataObject;
import net.dv8tion.jda.internal.JDAImpl;
import net.dv8tion.jda.internal.entities.EntityBuilder;
import net.dv8tion.jda.internal.requests.Requester;
import net.dv8tion.jda.internal.requests.RestActionImpl;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.TestInfo;
Expand All @@ -27,6 +32,7 @@
import javax.annotation.Nonnull;
import java.util.Random;
import java.util.concurrent.ScheduledExecutorService;
import java.util.function.Consumer;

import static org.mockito.Mockito.*;
import static org.mockito.MockitoAnnotations.openMocks;
Expand All @@ -51,6 +57,7 @@ protected final void setup()
expectedRequestCount = 0;
closeable = openMocks(this);
when(jda.getRequester()).thenReturn(requester);
when(jda.getEntityBuilder()).thenReturn(new EntityBuilder(jda));
}

@AfterEach
Expand All @@ -75,4 +82,19 @@ protected RestActionAssertions assertThatNextRequest()
return RestActionAssertions.assertThatNextAction(requester)
.withNormalizedBody(this::normalizeRequestBody);
}

protected <T> void whenSuccess(RestActionImpl<T> action, DataArray array, Consumer<T> assertion)
{
Response response = mock();
Request<T> request = mock();

when(response.isOk()).thenReturn(true);
when(response.getArray()).thenReturn(array);

doNothing().when(request).onSuccess(assertArg(assertion));

action.handleResponse(response, request);

verify(request, times(1)).onSuccess(any());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@

import net.dv8tion.jda.api.entities.SelfUser;
import net.dv8tion.jda.api.entities.User;
import net.dv8tion.jda.api.utils.data.DataArray;
import net.dv8tion.jda.api.utils.data.DataObject;
import net.dv8tion.jda.internal.requests.restaction.pagination.EntitlementPaginationActionImpl;
import net.dv8tion.jda.test.Constants;
import net.dv8tion.jda.test.IntegrationTest;
Expand All @@ -30,6 +32,7 @@
import java.util.Set;

import static net.dv8tion.jda.api.requests.Method.GET;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.when;

public class EntitlementPaginationTest extends IntegrationTest
Expand All @@ -51,13 +54,29 @@ void setupSelfUser()
}

@Test
void testDefaultPagination()
void testParsingFailure()
{
assertThatNextRequest()
.hasMethod(GET)
.hasCompiledRoute(String.format(routeTemplate, Constants.BUTLER_USER_ID, "?limit=100"));

action.queue();

DataArray responseBody = DataArray.empty()
.add(DataObject.empty()); // Invalid entitlement object

whenSuccess(action, responseBody, response ->
assertThat(response).isEmpty() // Is logged and skipped
);
}

@Test
void testDefaultPagination()
{
assertThatNextRequest()
.hasQueryParams("limit", "100");

action.queue();
}

@Test
Expand Down

0 comments on commit cbf7849

Please sign in to comment.