|
|
@@ -0,0 +1,125 @@
|
|
|
+import { mergeConfig } from '@vendure/core';
|
|
|
+import { createTestEnvironment } from '@vendure/testing';
|
|
|
+import gql from 'graphql-tag';
|
|
|
+import path from 'path';
|
|
|
+
|
|
|
+import { initialData } from '../../../e2e-common/e2e-initial-data';
|
|
|
+import { TEST_SETUP_TIMEOUT_MS, testConfig } from '../../../e2e-common/test-config';
|
|
|
+
|
|
|
+import { ListQueryPlugin } from './fixtures/list-query-plugin';
|
|
|
+import { fixPostgresTimezone } from './utils/fix-pg-timezone';
|
|
|
+
|
|
|
+fixPostgresTimezone();
|
|
|
+
|
|
|
+describe('ListQueryBuilder', () => {
|
|
|
+ const { server, adminClient } = createTestEnvironment(
|
|
|
+ mergeConfig(testConfig, {
|
|
|
+ plugins: [ListQueryPlugin],
|
|
|
+ }),
|
|
|
+ );
|
|
|
+
|
|
|
+ beforeAll(async () => {
|
|
|
+ await server.init({
|
|
|
+ initialData,
|
|
|
+ productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-minimal.csv'),
|
|
|
+ customerCount: 1,
|
|
|
+ });
|
|
|
+ await adminClient.asSuperAdmin();
|
|
|
+ }, TEST_SETUP_TIMEOUT_MS);
|
|
|
+
|
|
|
+ afterAll(async () => {
|
|
|
+ await server.destroy();
|
|
|
+ });
|
|
|
+
|
|
|
+ function getItemLabels(items: any[]): string[] {
|
|
|
+ return items.map((x: any) => x.label).sort();
|
|
|
+ }
|
|
|
+
|
|
|
+ describe('date filtering', () => {
|
|
|
+ it('before', async () => {
|
|
|
+ const { testEntities } = await adminClient.query(GET_LIST, {
|
|
|
+ options: {
|
|
|
+ filter: {
|
|
|
+ date: {
|
|
|
+ before: '2020-01-20T10:00:00.000Z',
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ });
|
|
|
+
|
|
|
+ expect(getItemLabels(testEntities.items)).toEqual(['A', 'B']);
|
|
|
+ });
|
|
|
+
|
|
|
+ it('before on same date', async () => {
|
|
|
+ const { testEntities } = await adminClient.query(GET_LIST, {
|
|
|
+ options: {
|
|
|
+ filter: {
|
|
|
+ date: {
|
|
|
+ before: '2020-01-15T17:00:00.000Z',
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ });
|
|
|
+
|
|
|
+ expect(getItemLabels(testEntities.items)).toEqual(['A', 'B']);
|
|
|
+ });
|
|
|
+
|
|
|
+ it('after', async () => {
|
|
|
+ const { testEntities } = await adminClient.query(GET_LIST, {
|
|
|
+ options: {
|
|
|
+ filter: {
|
|
|
+ date: {
|
|
|
+ after: '2020-01-20T10:00:00.000Z',
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ });
|
|
|
+
|
|
|
+ expect(getItemLabels(testEntities.items)).toEqual(['C']);
|
|
|
+ });
|
|
|
+
|
|
|
+ it('after on same date', async () => {
|
|
|
+ const { testEntities } = await adminClient.query(GET_LIST, {
|
|
|
+ options: {
|
|
|
+ filter: {
|
|
|
+ date: {
|
|
|
+ after: '2020-01-25T09:00:00.000Z',
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ });
|
|
|
+
|
|
|
+ expect(getItemLabels(testEntities.items)).toEqual(['C']);
|
|
|
+ });
|
|
|
+
|
|
|
+ it('between', async () => {
|
|
|
+ const { testEntities } = await adminClient.query(GET_LIST, {
|
|
|
+ options: {
|
|
|
+ filter: {
|
|
|
+ date: {
|
|
|
+ between: {
|
|
|
+ start: '2020-01-10T10:00:00.000Z',
|
|
|
+ end: '2020-01-20T10:00:00.000Z',
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ });
|
|
|
+
|
|
|
+ expect(getItemLabels(testEntities.items)).toEqual(['B']);
|
|
|
+ });
|
|
|
+ });
|
|
|
+});
|
|
|
+
|
|
|
+const GET_LIST = gql`
|
|
|
+ query GetTestEntities($options: TestEntityListOptions) {
|
|
|
+ testEntities(options: $options) {
|
|
|
+ totalItems
|
|
|
+ items {
|
|
|
+ id
|
|
|
+ label
|
|
|
+ date
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+`;
|