Skip to content

Commit

Permalink
feat: create dynamic query conditions
Browse files Browse the repository at this point in the history
Signed-off-by: Otavio Santana <otaviopolianasantana@gmail.com>
  • Loading branch information
otaviojava committed Mar 31, 2024
1 parent 19f331a commit 0487fa7
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public class DynamicQuery implements Supplier<SelectQuery> {
private final SpecialParameters special;
private final SelectQuery query;

private DynamicQuery(SpecialParameters special, SelectQuery query) {
DynamicQuery(SpecialParameters special, SelectQuery query) {
this.special = special;
this.query = query;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import jakarta.data.Limit;
import jakarta.data.page.PageRequest;
import jakarta.data.Sort;
import org.assertj.core.api.SoftAssertions;
import org.eclipse.jnosql.communication.semistructured.SelectQuery;
import org.eclipse.jnosql.mapping.core.repository.SpecialParameters;
import org.junit.jupiter.api.BeforeEach;
Expand All @@ -28,6 +29,7 @@
import java.util.List;
import java.util.Optional;

import static org.assertj.core.api.SoftAssertions.assertSoftly;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
Expand Down Expand Up @@ -55,69 +57,76 @@ void shouldCreateDynamicQuery() {
when(query.condition()).thenReturn(Optional.empty());
when(query.name()).thenReturn("sampleQuery");

DynamicQuery dynamicQuery = DynamicQuery.of(new Object[]{}, query);
DynamicQuery dynamicQuery = new DynamicQuery(special, query);

assertEquals(query, dynamicQuery.get());
}

@Test
void shouldCreateDynamicQueryWithSortsAndLimit() {
when(special.isEmpty()).thenReturn(false);
when(special.hasOnlySort()).thenReturn(true);
when(special.sorts()).thenReturn(List.of(mock(Sort.class)));
when(limit.startAt()).thenReturn(1L);
when(special.limit()).thenReturn(Optional.of(limit));
when(special.hasOnlySort()).thenReturn(false);
when(special.limit()).thenReturn(Optional.of(Limit.range(1,5)));
when(query.condition()).thenReturn(Optional.empty());
when(query.name()).thenReturn("sampleQuery");
when(query.sorts()).thenReturn(List.of(mock(Sort.class)));
when(query.sorts()).thenReturn(List.of(Sort.asc("name"), Sort.desc("age")));
when(query.skip()).thenReturn(0L);
when(query.limit()).thenReturn(10L);

DynamicQuery dynamicQuery = DynamicQuery.of(new Object[]{}, query);
DynamicQuery dynamicQuery = new DynamicQuery(special, query);
SelectQuery selectQuery = dynamicQuery.get();

assertEquals("sampleQuery", dynamicQuery.get().name());
assertEquals(0, dynamicQuery.get().skip());
assertEquals(10, dynamicQuery.get().limit());
assertEquals(1, dynamicQuery.get().sorts().size());
assertSoftly(softly -> {
softly.assertThat(selectQuery.name()).isEqualTo("sampleQuery");
softly.assertThat(selectQuery.skip()).isEqualTo(0);
softly.assertThat(selectQuery.limit()).isEqualTo(5L);
softly.assertThat(selectQuery.sorts()).hasSize(2);
});
}

@Test
void shouldCreateDynamicQueryWithLimit() {
when(special.isEmpty()).thenReturn(false);
when(special.hasOnlySort()).thenReturn(false);
when(limit.startAt()).thenReturn(1L);
when(limit.maxResults()).thenReturn(5);
when(special.limit()).thenReturn(Optional.of(limit));
when(query.condition()).thenReturn(Optional.empty());
when(query.name()).thenReturn("sampleQuery");
when(query.sorts()).thenReturn(List.of(mock(Sort.class)));
when(query.sorts()).thenReturn(Collections.emptyList());
when(query.skip()).thenReturn(0L);
when(query.limit()).thenReturn(10L);

DynamicQuery dynamicQuery = DynamicQuery.of(new Object[]{}, query);
DynamicQuery dynamicQuery = new DynamicQuery(special, query);

SelectQuery selectQuery = dynamicQuery.get();

assertEquals("sampleQuery", dynamicQuery.get().name());
assertEquals(0, dynamicQuery.get().skip());
assertEquals(10, dynamicQuery.get().limit());
assertEquals(1, dynamicQuery.get().sorts().size());
assertSoftly(softly -> {
softly.assertThat(selectQuery.name()).isEqualTo("sampleQuery");
softly.assertThat(selectQuery.skip()).isEqualTo(0);
softly.assertThat(selectQuery.limit()).isEqualTo(5);
softly.assertThat(selectQuery.sorts()).isEmpty();
});
}

@Test
void shouldCreateDynamicQueryWithPageRequest() {
when(special.isEmpty()).thenReturn(false);
when(special.pageRequest()).thenReturn(Optional.of(mock(PageRequest.class)));
when(special.isEmpty()).thenReturn(false);
when(special.sorts()).thenReturn(List.of(mock(Sort.class)));
when(query.condition()).thenReturn(Optional.empty());
when(query.name()).thenReturn("sampleQuery");
when(query.sorts()).thenReturn(List.of(mock(Sort.class)));
when(query.skip()).thenReturn(0L);
when(query.limit()).thenReturn(10L);

DynamicQuery dynamicQuery = DynamicQuery.of(new Object[]{}, query);
DynamicQuery dynamicQuery = new DynamicQuery(special, query);

assertEquals("sampleQuery", dynamicQuery.get().name());
assertEquals(0, dynamicQuery.get().skip());
assertEquals(10, dynamicQuery.get().limit());
assertEquals(1, dynamicQuery.get().sorts().size());
SelectQuery selectQuery = dynamicQuery.get();
assertEquals("sampleQuery", selectQuery.name());
assertEquals(0, selectQuery.skip());
assertEquals(10, selectQuery.limit());
assertEquals(1, selectQuery.sorts().size());
}

@Test
Expand Down

0 comments on commit 0487fa7

Please sign in to comment.