From 56c2433e168c42f8e06520ff346bfda2ef65e9ab Mon Sep 17 00:00:00 2001 From: MA Date: Sun, 9 Feb 2025 19:40:33 +0530 Subject: [PATCH 1/7] wip --- .../com/meilisearch/sdk/model/TasksQuery.java | 4 +- .../meilisearch/integration/TasksTest.java | 42 +++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/meilisearch/sdk/model/TasksQuery.java b/src/main/java/com/meilisearch/sdk/model/TasksQuery.java index dd1cb606..a15c3027 100644 --- a/src/main/java/com/meilisearch/sdk/model/TasksQuery.java +++ b/src/main/java/com/meilisearch/sdk/model/TasksQuery.java @@ -23,6 +23,7 @@ public class TasksQuery { private String[] types; private String[] indexUids; private int[] canceledBy; + private boolean reverse; private Date beforeEnqueuedAt; private Date afterEnqueuedAt; private Date beforeStartedAt; @@ -47,7 +48,8 @@ public String toQuery() { .addParameter("beforeStartedAt", this.getBeforeStartedAt()) .addParameter("afterStartedAt", this.getAfterStartedAt()) .addParameter("beforeFinishedAt", this.getBeforeFinishedAt()) - .addParameter("afterFinishedAt", this.getAfterFinishedAt()); + .addParameter("afterFinishedAt", this.getAfterFinishedAt()) + .addParameter("reverse", String.valueOf(this.isReverse())); return urlb.getURL(); } } diff --git a/src/test/java/com/meilisearch/integration/TasksTest.java b/src/test/java/com/meilisearch/integration/TasksTest.java index 785923c3..006e9638 100644 --- a/src/test/java/com/meilisearch/integration/TasksTest.java +++ b/src/test/java/com/meilisearch/integration/TasksTest.java @@ -9,6 +9,7 @@ import static org.hamcrest.Matchers.not; import static org.hamcrest.Matchers.notNullValue; import static org.hamcrest.Matchers.nullValue; +import static org.junit.jupiter.api.Assertions.assertIterableEquals; import static org.junit.jupiter.api.Assertions.assertThrows; import com.meilisearch.integration.classes.AbstractIT; @@ -16,7 +17,11 @@ import com.meilisearch.sdk.Index; import com.meilisearch.sdk.model.*; import com.meilisearch.sdk.utils.Movie; +import java.util.Arrays; +import java.util.Collections; import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Tag; @@ -202,6 +207,43 @@ public void testClientGetTasksAllQueryParameters() throws Exception { assertThat(result.getNext(), is(notNullValue())); assertThat(result.getResults().length, is(notNullValue())); } + /** Test Get Tasks in reverse order */ + @Test + public void testGetTasksInReverse() { + String indexUid = "tasksOnReverseAt"; + + TestData testData = this.getTestData(MOVIES_INDEX, Movie.class); + + TaskInfo taskA = client.index(indexUid).addDocuments(testData.getRaw()); + TaskInfo taskB = client.index(indexUid).addDocuments(testData.getRaw()); + + client.waitForTask(taskA.getTaskUid()); + client.waitForTask(taskB.getTaskUid()); + + List originalTaskOrder = + Arrays.stream( + client.getTasks( + new TasksQuery() + .setIndexUids(new String[] {indexUid})) + .getResults()) + .map(Task::getUid) + .collect(Collectors.toList()); + List reversedTaskOrder = + Arrays.stream( + client.getTasks( + new TasksQuery() + .setIndexUids(new String[] {indexUid}) + .setReverse(true)) + .getResults()) + .map(Task::getUid) + .collect(Collectors.toList()); + assertIterableEquals( + originalTaskOrder, + reversedTaskOrder.stream() + .sorted(Collections.reverseOrder()) + .collect(Collectors.toList()), + "The lists are not reversed versions of each other"); + } /** Test Cancel Task */ @Test From 7e0e2d1f74e195db48cf91ce9921030960d12b4a Mon Sep 17 00:00:00 2001 From: MA Date: Sun, 9 Feb 2025 21:35:51 +0530 Subject: [PATCH 2/7] implementation complete --- .../com/meilisearch/sdk/http/URLBuilder.java | 3 +- .../meilisearch/integration/TasksTest.java | 35 ++++++++----------- 2 files changed, 16 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/meilisearch/sdk/http/URLBuilder.java b/src/main/java/com/meilisearch/sdk/http/URLBuilder.java index d7ffc325..d336dd01 100644 --- a/src/main/java/com/meilisearch/sdk/http/URLBuilder.java +++ b/src/main/java/com/meilisearch/sdk/http/URLBuilder.java @@ -67,7 +67,8 @@ public URLBuilder addParameter(String parameter, int[] value) { public URLBuilder addParameter(String parameter, Date value) { if (value != null) { - SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); + // Changed to utilise RFC 3339 format + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX"); addSeparator(); params.append(parameter); params.append("="); diff --git a/src/test/java/com/meilisearch/integration/TasksTest.java b/src/test/java/com/meilisearch/integration/TasksTest.java index 006e9638..94c89f7c 100644 --- a/src/test/java/com/meilisearch/integration/TasksTest.java +++ b/src/test/java/com/meilisearch/integration/TasksTest.java @@ -17,10 +17,8 @@ import com.meilisearch.sdk.Index; import com.meilisearch.sdk.model.*; import com.meilisearch.sdk.utils.Movie; -import java.util.Arrays; -import java.util.Collections; -import java.util.Date; -import java.util.List; +import java.time.Instant; +import java.util.*; import java.util.stream.Collectors; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeEach; @@ -37,6 +35,7 @@ public void initialize() { this.setUp(); this.setUpJacksonClient(); if (testData == null) testData = this.getTestData(MOVIES_INDEX, Movie.class); + TimeZone.setDefault(TimeZone.getTimeZone("UTC")); } @AfterAll @@ -210,8 +209,8 @@ public void testClientGetTasksAllQueryParameters() throws Exception { /** Test Get Tasks in reverse order */ @Test public void testGetTasksInReverse() { - String indexUid = "tasksOnReverseAt"; - + String indexUid = "tasksOnReverseOrder"; + Date date = Date.from(Instant.now()); TestData testData = this.getTestData(MOVIES_INDEX, Movie.class); TaskInfo taskA = client.index(indexUid).addDocuments(testData.getRaw()); @@ -220,23 +219,17 @@ public void testGetTasksInReverse() { client.waitForTask(taskA.getTaskUid()); client.waitForTask(taskB.getTaskUid()); + Task[] defaultTaskList = + client.getTasks(new TasksQuery().setAfterEnqueuedAt(date)).getResults(); + Task[] reversedTaskList = + client.getTasks(new TasksQuery().setAfterEnqueuedAt(date).setReverse(true)) + .getResults(); + List originalTaskOrder = - Arrays.stream( - client.getTasks( - new TasksQuery() - .setIndexUids(new String[] {indexUid})) - .getResults()) - .map(Task::getUid) - .collect(Collectors.toList()); + Arrays.stream(defaultTaskList).map(Task::getUid).collect(Collectors.toList()); List reversedTaskOrder = - Arrays.stream( - client.getTasks( - new TasksQuery() - .setIndexUids(new String[] {indexUid}) - .setReverse(true)) - .getResults()) - .map(Task::getUid) - .collect(Collectors.toList()); + Arrays.stream(reversedTaskList).map(Task::getUid).collect(Collectors.toList()); + assertIterableEquals( originalTaskOrder, reversedTaskOrder.stream() From bb0c3f3f059d40255a0aa4b9e55ea8d36fd724d4 Mon Sep 17 00:00:00 2001 From: MA Date: Sun, 9 Feb 2025 21:38:55 +0530 Subject: [PATCH 3/7] refactor --- src/test/java/com/meilisearch/integration/TasksTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/test/java/com/meilisearch/integration/TasksTest.java b/src/test/java/com/meilisearch/integration/TasksTest.java index 94c89f7c..dab60b13 100644 --- a/src/test/java/com/meilisearch/integration/TasksTest.java +++ b/src/test/java/com/meilisearch/integration/TasksTest.java @@ -206,11 +206,11 @@ public void testClientGetTasksAllQueryParameters() throws Exception { assertThat(result.getNext(), is(notNullValue())); assertThat(result.getResults().length, is(notNullValue())); } - /** Test Get Tasks in reverse order */ + /** Test to check if task list is reversed when enabled */ @Test public void testGetTasksInReverse() { String indexUid = "tasksOnReverseOrder"; - Date date = Date.from(Instant.now()); + Date currentTime = Date.from(Instant.now()); TestData testData = this.getTestData(MOVIES_INDEX, Movie.class); TaskInfo taskA = client.index(indexUid).addDocuments(testData.getRaw()); @@ -220,9 +220,9 @@ public void testGetTasksInReverse() { client.waitForTask(taskB.getTaskUid()); Task[] defaultTaskList = - client.getTasks(new TasksQuery().setAfterEnqueuedAt(date)).getResults(); + client.getTasks(new TasksQuery().setAfterEnqueuedAt(currentTime)).getResults(); Task[] reversedTaskList = - client.getTasks(new TasksQuery().setAfterEnqueuedAt(date).setReverse(true)) + client.getTasks(new TasksQuery().setAfterEnqueuedAt(currentTime).setReverse(true)) .getResults(); List originalTaskOrder = From 9d87521eadc6b23998bafdf4af25fcf9da112030 Mon Sep 17 00:00:00 2001 From: MA Date: Sat, 22 Feb 2025 11:13:41 +0530 Subject: [PATCH 4/7] reverted date type for test, resolved param issue --- .../java/com/meilisearch/sdk/http/URLBuilder.java | 13 +++++++++++-- .../java/com/meilisearch/sdk/model/TasksQuery.java | 4 ++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/meilisearch/sdk/http/URLBuilder.java b/src/main/java/com/meilisearch/sdk/http/URLBuilder.java index d336dd01..e356030a 100644 --- a/src/main/java/com/meilisearch/sdk/http/URLBuilder.java +++ b/src/main/java/com/meilisearch/sdk/http/URLBuilder.java @@ -67,8 +67,7 @@ public URLBuilder addParameter(String parameter, int[] value) { public URLBuilder addParameter(String parameter, Date value) { if (value != null) { - // Changed to utilise RFC 3339 format - SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX"); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); addSeparator(); params.append(parameter); params.append("="); @@ -77,6 +76,16 @@ public URLBuilder addParameter(String parameter, Date value) { return this; } + public URLBuilder addParameter(String parameter, Boolean value) { + if (value != null) { + addSeparator(); + params.append(parameter); + params.append("="); + params.append(value); + } + return this; + } + public URLBuilder addQuery(String query) { this.params.append(query); return this; diff --git a/src/main/java/com/meilisearch/sdk/model/TasksQuery.java b/src/main/java/com/meilisearch/sdk/model/TasksQuery.java index a15c3027..7391bd1a 100644 --- a/src/main/java/com/meilisearch/sdk/model/TasksQuery.java +++ b/src/main/java/com/meilisearch/sdk/model/TasksQuery.java @@ -23,7 +23,7 @@ public class TasksQuery { private String[] types; private String[] indexUids; private int[] canceledBy; - private boolean reverse; + private Boolean reverse; private Date beforeEnqueuedAt; private Date afterEnqueuedAt; private Date beforeStartedAt; @@ -49,7 +49,7 @@ public String toQuery() { .addParameter("afterStartedAt", this.getAfterStartedAt()) .addParameter("beforeFinishedAt", this.getBeforeFinishedAt()) .addParameter("afterFinishedAt", this.getAfterFinishedAt()) - .addParameter("reverse", String.valueOf(this.isReverse())); + .addParameter("reverse", this.getReverse()); return urlb.getURL(); } } From 0b72a1cad9e04a7ef1ae30253a7eb0bb8f473fd0 Mon Sep 17 00:00:00 2001 From: MA Date: Sat, 22 Feb 2025 14:36:15 +0530 Subject: [PATCH 5/7] added date format, fixed junit --- .../com/meilisearch/sdk/http/URLBuilder.java | 3 ++- .../com/meilisearch/integration/TasksTest.java | 6 +++--- .../com/meilisearch/sdk/http/URLBuilderTest.java | 16 ++++++++++++---- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/meilisearch/sdk/http/URLBuilder.java b/src/main/java/com/meilisearch/sdk/http/URLBuilder.java index e356030a..c0c5f0a5 100644 --- a/src/main/java/com/meilisearch/sdk/http/URLBuilder.java +++ b/src/main/java/com/meilisearch/sdk/http/URLBuilder.java @@ -67,7 +67,8 @@ public URLBuilder addParameter(String parameter, int[] value) { public URLBuilder addParameter(String parameter, Date value) { if (value != null) { - SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); + // Changed to utilise RFC 3339 format + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX"); addSeparator(); params.append(parameter); params.append("="); diff --git a/src/test/java/com/meilisearch/integration/TasksTest.java b/src/test/java/com/meilisearch/integration/TasksTest.java index dab60b13..a0e9da4a 100644 --- a/src/test/java/com/meilisearch/integration/TasksTest.java +++ b/src/test/java/com/meilisearch/integration/TasksTest.java @@ -9,8 +9,7 @@ import static org.hamcrest.Matchers.not; import static org.hamcrest.Matchers.notNullValue; import static org.hamcrest.Matchers.nullValue; -import static org.junit.jupiter.api.Assertions.assertIterableEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.*; import com.meilisearch.integration.classes.AbstractIT; import com.meilisearch.integration.classes.TestData; @@ -229,7 +228,8 @@ public void testGetTasksInReverse() { Arrays.stream(defaultTaskList).map(Task::getUid).collect(Collectors.toList()); List reversedTaskOrder = Arrays.stream(reversedTaskList).map(Task::getUid).collect(Collectors.toList()); - + assertFalse(originalTaskOrder.isEmpty()); + assertFalse(reversedTaskOrder.isEmpty()); assertIterableEquals( originalTaskOrder, reversedTaskOrder.stream() diff --git a/src/test/java/com/meilisearch/sdk/http/URLBuilderTest.java b/src/test/java/com/meilisearch/sdk/http/URLBuilderTest.java index 08977c67..ac1efc7d 100644 --- a/src/test/java/com/meilisearch/sdk/http/URLBuilderTest.java +++ b/src/test/java/com/meilisearch/sdk/http/URLBuilderTest.java @@ -8,12 +8,19 @@ import java.text.SimpleDateFormat; import java.time.format.DateTimeFormatter; import java.util.Date; +import java.util.TimeZone; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; public class URLBuilderTest { private final URLBuilder classToTest = new URLBuilder(); + @BeforeEach + void beforeEach() { + TimeZone.setDefault(TimeZone.getTimeZone("UTC")); + } + @Test void addSubroute() { classToTest.addSubroute("route"); @@ -92,8 +99,8 @@ void addParameterStringIntArray() { @Test void addParameterStringDate() throws Exception { - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); - Date date = format.parse("2042-01-30"); + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX"); + Date date = format.parse("2042-01-30T10:30:00-05:00"); classToTest.addParameter("parameter1", date); String parameterDate1 = @@ -101,8 +108,9 @@ void addParameterStringDate() throws Exception { .getParams() .toString() .substring(12, classToTest.getParams().toString().length()); - assertDoesNotThrow(() -> DateTimeFormatter.ISO_DATE.parse(parameterDate1)); - assertThat(classToTest.getParams().toString(), is(equalTo("?parameter1=2042-01-30"))); + + assertDoesNotThrow(() -> format.parse(parameterDate1)); + assertEquals(classToTest.getParams().toString(), "?parameter1=" + format.format(date)); classToTest.addParameter("parameter2", date); String parameterDate2 = From 4e94a8509ca26833ce52a0d6ef7953d7d238e786 Mon Sep 17 00:00:00 2001 From: MA Date: Sat, 22 Feb 2025 15:01:50 +0530 Subject: [PATCH 6/7] refactor --- .../com/meilisearch/sdk/http/URLBuilder.java | 7 ++++++ .../meilisearch/sdk/http/URLBuilderTest.java | 22 +++++-------------- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/meilisearch/sdk/http/URLBuilder.java b/src/main/java/com/meilisearch/sdk/http/URLBuilder.java index c0c5f0a5..0b4088ad 100644 --- a/src/main/java/com/meilisearch/sdk/http/URLBuilder.java +++ b/src/main/java/com/meilisearch/sdk/http/URLBuilder.java @@ -77,6 +77,13 @@ public URLBuilder addParameter(String parameter, Date value) { return this; } + /** + * To add a boolean parameter to url + * + * @param parameter - parameter name + * @param value - value of the parameter + * @return - updated url object + */ public URLBuilder addParameter(String parameter, Boolean value) { if (value != null) { addSeparator(); diff --git a/src/test/java/com/meilisearch/sdk/http/URLBuilderTest.java b/src/test/java/com/meilisearch/sdk/http/URLBuilderTest.java index ac1efc7d..f130ab7e 100644 --- a/src/test/java/com/meilisearch/sdk/http/URLBuilderTest.java +++ b/src/test/java/com/meilisearch/sdk/http/URLBuilderTest.java @@ -6,7 +6,6 @@ import static org.junit.jupiter.api.Assertions.*; import java.text.SimpleDateFormat; -import java.time.format.DateTimeFormatter; import java.util.Date; import java.util.TimeZone; import org.junit.jupiter.api.BeforeEach; @@ -103,25 +102,16 @@ void addParameterStringDate() throws Exception { Date date = format.parse("2042-01-30T10:30:00-05:00"); classToTest.addParameter("parameter1", date); - String parameterDate1 = - classToTest - .getParams() - .toString() - .substring(12, classToTest.getParams().toString().length()); - + String parameterDate1 = classToTest.getParams().substring(12); assertDoesNotThrow(() -> format.parse(parameterDate1)); - assertEquals(classToTest.getParams().toString(), "?parameter1=" + format.format(date)); + assertEquals(classToTest.getParams().toString(), "?parameter1=2042-01-30T15:30:00Z"); classToTest.addParameter("parameter2", date); - String parameterDate2 = - classToTest - .getParams() - .toString() - .substring(34, classToTest.getParams().toString().length()); - assertDoesNotThrow(() -> DateTimeFormatter.ISO_DATE.parse(parameterDate2)); - assertThat( + String parameterDate2 = classToTest.getParams().substring(44); + assertDoesNotThrow(() -> format.parse(parameterDate2)); + assertEquals( classToTest.getParams().toString(), - is(equalTo("?parameter1=2042-01-30¶meter2=2042-01-30"))); + "?parameter1=2042-01-30T15:30:00Z¶meter2=2042-01-30T15:30:00Z"); } @Test From d589fd74c9bbcbc6639b3fb73b8ef2d6ce5ab52f Mon Sep 17 00:00:00 2001 From: MA Date: Sat, 8 Mar 2025 13:58:55 +0530 Subject: [PATCH 7/7] refactor junit --- .../meilisearch/integration/TasksTest.java | 41 +++++++++---------- 1 file changed, 19 insertions(+), 22 deletions(-) diff --git a/src/test/java/com/meilisearch/integration/TasksTest.java b/src/test/java/com/meilisearch/integration/TasksTest.java index a0e9da4a..0eec58d1 100644 --- a/src/test/java/com/meilisearch/integration/TasksTest.java +++ b/src/test/java/com/meilisearch/integration/TasksTest.java @@ -205,34 +205,31 @@ public void testClientGetTasksAllQueryParameters() throws Exception { assertThat(result.getNext(), is(notNullValue())); assertThat(result.getResults().length, is(notNullValue())); } - /** Test to check if task list is reversed when enabled */ + @Test public void testGetTasksInReverse() { String indexUid = "tasksOnReverseOrder"; Date currentTime = Date.from(Instant.now()); TestData testData = this.getTestData(MOVIES_INDEX, Movie.class); - - TaskInfo taskA = client.index(indexUid).addDocuments(testData.getRaw()); - TaskInfo taskB = client.index(indexUid).addDocuments(testData.getRaw()); - - client.waitForTask(taskA.getTaskUid()); - client.waitForTask(taskB.getTaskUid()); - - Task[] defaultTaskList = - client.getTasks(new TasksQuery().setAfterEnqueuedAt(currentTime)).getResults(); - Task[] reversedTaskList = - client.getTasks(new TasksQuery().setAfterEnqueuedAt(currentTime).setReverse(true)) - .getResults(); - - List originalTaskOrder = - Arrays.stream(defaultTaskList).map(Task::getUid).collect(Collectors.toList()); - List reversedTaskOrder = - Arrays.stream(reversedTaskList).map(Task::getUid).collect(Collectors.toList()); - assertFalse(originalTaskOrder.isEmpty()); - assertFalse(reversedTaskOrder.isEmpty()); + TasksQuery query = new TasksQuery().setAfterEnqueuedAt(currentTime); + TasksQuery queryWithReverseFlag = + new TasksQuery().setAfterEnqueuedAt(currentTime).setReverse(true); + + client.index(indexUid).addDocuments(testData.getRaw()); + client.waitForTask(client.index(indexUid).addDocuments(testData.getRaw()).getTaskUid()); + List tasks = + Arrays.stream(client.getTasks(query).getResults()) + .map(Task::getUid) + .collect(Collectors.toList()); + List reversedTasks = + Arrays.stream(client.getTasks(queryWithReverseFlag).getResults()) + .map(Task::getUid) + .collect(Collectors.toList()); + + assertFalse(tasks.isEmpty()); assertIterableEquals( - originalTaskOrder, - reversedTaskOrder.stream() + tasks, + reversedTasks.stream() .sorted(Collections.reverseOrder()) .collect(Collectors.toList()), "The lists are not reversed versions of each other");