mirror of
https://github.com/strapi/strapi.git
synced 2025-08-02 13:58:18 +00:00
Add more tests and fix pr comments
This commit is contained in:
parent
c939ba83c5
commit
eb54aadf9a
@ -1,4 +1,4 @@
|
|||||||
import { Utils } from '@strapi/strapi';
|
import type { Utils } from '@strapi/strapi';
|
||||||
|
|
||||||
type Obj = {
|
type Obj = {
|
||||||
foo: 'bar';
|
foo: 'bar';
|
||||||
@ -12,7 +12,13 @@ type Obj = {
|
|||||||
type StringValues = Utils.Array.Values<['foo', 'bar', 'baz']>;
|
type StringValues = Utils.Array.Values<['foo', 'bar', 'baz']>;
|
||||||
type NumberValues = Utils.Array.Values<[1, 2, 3]>;
|
type NumberValues = Utils.Array.Values<[1, 2, 3]>;
|
||||||
type BoolValues = Utils.Array.Values<[true, false, true]>;
|
type BoolValues = Utils.Array.Values<[true, false, true]>;
|
||||||
|
type TrueBoolLiteralValues = Utils.Array.Values<[true, true, true]>;
|
||||||
|
type FalseBoolLiteralValues = Utils.Array.Values<[false, false, false]>;
|
||||||
type ObjectValues = Utils.Array.Values<[Obj, { prop1: true; prop2: false }]>;
|
type ObjectValues = Utils.Array.Values<[Obj, { prop1: true; prop2: false }]>;
|
||||||
|
type MixedValues = Utils.Array.Values<[Obj, 1, 'foo', true]>;
|
||||||
|
type ContainsNever = Utils.Array.Values<[never, Obj, 1, 'foo', true]>;
|
||||||
|
|
||||||
|
// TODO move this to tuple utils
|
||||||
|
|
||||||
// Is Empty
|
// Is Empty
|
||||||
|
|
||||||
@ -28,7 +34,11 @@ export {
|
|||||||
StringValues,
|
StringValues,
|
||||||
NumberValues,
|
NumberValues,
|
||||||
BoolValues,
|
BoolValues,
|
||||||
|
TrueBoolLiteralValues,
|
||||||
|
FalseBoolLiteralValues,
|
||||||
ObjectValues,
|
ObjectValues,
|
||||||
|
MixedValues,
|
||||||
|
ContainsNever,
|
||||||
IsEmptyWithEmptyTuple,
|
IsEmptyWithEmptyTuple,
|
||||||
IsEmptyWithNotEmptyTuple,
|
IsEmptyWithNotEmptyTuple,
|
||||||
IsNotEmptyWithNotEmptyTuple,
|
IsNotEmptyWithNotEmptyTuple,
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import type { Utils } from '@strapi/strapi';
|
import type { Utils } from '@strapi/strapi';
|
||||||
import { Array } from '../../../../services/entity-service/types/params/filters/operators';
|
|
||||||
|
|
||||||
// IsNever
|
// IsNever
|
||||||
type IsNeverGivenNever = Utils.Expression.IsNever<never>;
|
type IsNeverGivenNever = Utils.Expression.IsNever<never>;
|
||||||
@ -37,6 +36,10 @@ type IsStrictEqualGivenEqualLiterals = Utils.Expression.StrictEqual<1, 1>;
|
|||||||
type IsStrictEqualGivenEqualTypes = Utils.Expression.StrictEqual<boolean, boolean>;
|
type IsStrictEqualGivenEqualTypes = Utils.Expression.StrictEqual<boolean, boolean>;
|
||||||
type IsStrictEqualGivenDifferentLiterals = Utils.Expression.StrictEqual<1, 2>;
|
type IsStrictEqualGivenDifferentLiterals = Utils.Expression.StrictEqual<1, 2>;
|
||||||
type IsStrictEqualGivenDifferentTypes = Utils.Expression.StrictEqual<boolean, string>;
|
type IsStrictEqualGivenDifferentTypes = Utils.Expression.StrictEqual<boolean, string>;
|
||||||
|
type IsStrictEqualGivenStringAndStringLiteral = Utils.Expression.StrictEqual<string, 'hello'>;
|
||||||
|
type IsStrictEqualGivenStringLiteralAndString = Utils.Expression.StrictEqual<'hello', string>;
|
||||||
|
type IsStrictEqualGivenNumberAndNumberLiteral = Utils.Expression.StrictEqual<number, 1>;
|
||||||
|
type IsStrictEqualGivenNumberLiteralAndNumber = Utils.Expression.StrictEqual<1, number>;
|
||||||
|
|
||||||
// Extends
|
// Extends
|
||||||
type StringExtendsString = Utils.Expression.Extends<string, string>;
|
type StringExtendsString = Utils.Expression.Extends<string, string>;
|
||||||
@ -86,6 +89,45 @@ type ArrayNotExtendsArray = Utils.Expression.DoesNotExtends<Array<string>, Array
|
|||||||
type TupleNotExtendsArray = Utils.Expression.DoesNotExtends<[string], Array<string>>;
|
type TupleNotExtendsArray = Utils.Expression.DoesNotExtends<[string], Array<string>>;
|
||||||
type StringArrayNotExtendsArray = Utils.Expression.DoesNotExtends<string[], Array<string>>;
|
type StringArrayNotExtendsArray = Utils.Expression.DoesNotExtends<string[], Array<string>>;
|
||||||
|
|
||||||
|
// If
|
||||||
|
type IfTrue = Utils.Expression.If<true, true, false>;
|
||||||
|
type IfFalse = Utils.Expression.If<false, true, false>;
|
||||||
|
type IfBoolean = Utils.Expression.If<boolean, true, false>;
|
||||||
|
type IfNumber = Utils.Expression.If<number, true, false>;
|
||||||
|
type IfString = Utils.Expression.If<string, true, false>;
|
||||||
|
type IfObject = Utils.Expression.If<object, true, false>;
|
||||||
|
type IfUnknown = Utils.Expression.If<unknown, true, false>;
|
||||||
|
type IfAny = Utils.Expression.If<any, true, false>;
|
||||||
|
type IfNever = Utils.Expression.If<never, true, false>;
|
||||||
|
type IfStringLiteral = Utils.Expression.If<'test', true, false>;
|
||||||
|
type IfNumberLiteral = Utils.Expression.If<10, true, false>;
|
||||||
|
type IfObjectLiteral = Utils.Expression.If<{ test: 1 }, true, false>;
|
||||||
|
type IfTuple = Utils.Expression.If<[1, 2, 3], true, false>;
|
||||||
|
type IfArray = Utils.Expression.If<Array<string>, true, false>;
|
||||||
|
type IfStringArray = Utils.Expression.If<string[], true, false>;
|
||||||
|
type IfTupleArray = Utils.Expression.If<[string, number], true, false>;
|
||||||
|
type IfUnion = Utils.Expression.If<string | number, true, false>;
|
||||||
|
type IfIntersection = Utils.Expression.If<string & number, true, false>;
|
||||||
|
type IfFunction = Utils.Expression.If<() => void, true, false>;
|
||||||
|
type IfClass = Utils.Expression.If<new () => void, true, false>;
|
||||||
|
type IfVoid = Utils.Expression.If<void, true, false>;
|
||||||
|
type IfNull = Utils.Expression.If<null, true, false>;
|
||||||
|
type IfUndefined = Utils.Expression.If<undefined, true, false>;
|
||||||
|
type IfWithStringReturnType = Utils.Expression.If<true, 'test', 'test2'>;
|
||||||
|
type IfWithNumberReturnType = Utils.Expression.If<true, 1, 2>;
|
||||||
|
type IfWithBooleanReturnType = Utils.Expression.If<true, true, false>;
|
||||||
|
type IfWithObjectReturnType = Utils.Expression.If<true, { foo: 1 }, { bar: 'bar' }>;
|
||||||
|
type IfWithTupleReturnType = Utils.Expression.If<true, [1, 2, 3], [4, 5, 6]>;
|
||||||
|
// TODO Check this type
|
||||||
|
type IfWithArrayReturnType = Utils.Expression.If<true, Array<string>, Array<number>>;
|
||||||
|
type IfWithUnionReturnType = Utils.Expression.If<true, string | number, string & number>;
|
||||||
|
type IfWithVoidReturnType = Utils.Expression.If<true, void, number>;
|
||||||
|
type IfWithNullReturnType = Utils.Expression.If<true, null, number>;
|
||||||
|
type IfWithUndefinedReturnType = Utils.Expression.If<true, undefined, number>;
|
||||||
|
type IfWithNeverReturnType = Utils.Expression.If<true, never, number>;
|
||||||
|
type IfWithUnknownReturnType = Utils.Expression.If<true, unknown, number>;
|
||||||
|
type IfWithAnyReturnType = Utils.Expression.If<true, any, number>;
|
||||||
|
|
||||||
export {
|
export {
|
||||||
// IsNever
|
// IsNever
|
||||||
IsNeverGivenNever,
|
IsNeverGivenNever,
|
||||||
@ -103,6 +145,10 @@ export {
|
|||||||
IsStrictEqualGivenEqualTypes,
|
IsStrictEqualGivenEqualTypes,
|
||||||
IsStrictEqualGivenDifferentLiterals,
|
IsStrictEqualGivenDifferentLiterals,
|
||||||
IsStrictEqualGivenDifferentTypes,
|
IsStrictEqualGivenDifferentTypes,
|
||||||
|
IsStrictEqualGivenStringLiteralAndString,
|
||||||
|
IsStrictEqualGivenStringAndStringLiteral,
|
||||||
|
IsStrictEqualGivenNumberAndNumberLiteral,
|
||||||
|
IsStrictEqualGivenNumberLiteralAndNumber,
|
||||||
// IsTrue
|
// IsTrue
|
||||||
IsTrueGivenTrue,
|
IsTrueGivenTrue,
|
||||||
IsTrueGivenFalse,
|
IsTrueGivenFalse,
|
||||||
@ -165,4 +211,41 @@ export {
|
|||||||
ArrayNotExtendsArray,
|
ArrayNotExtendsArray,
|
||||||
TupleNotExtendsArray,
|
TupleNotExtendsArray,
|
||||||
StringArrayNotExtendsArray,
|
StringArrayNotExtendsArray,
|
||||||
|
// If
|
||||||
|
IfTrue,
|
||||||
|
IfFalse,
|
||||||
|
IfBoolean,
|
||||||
|
IfNumber,
|
||||||
|
IfString,
|
||||||
|
IfObject,
|
||||||
|
IfUnknown,
|
||||||
|
IfAny,
|
||||||
|
IfNever,
|
||||||
|
IfStringLiteral,
|
||||||
|
IfNumberLiteral,
|
||||||
|
IfObjectLiteral,
|
||||||
|
IfTuple,
|
||||||
|
IfArray,
|
||||||
|
IfStringArray,
|
||||||
|
IfTupleArray,
|
||||||
|
IfUnion,
|
||||||
|
IfIntersection,
|
||||||
|
IfFunction,
|
||||||
|
IfClass,
|
||||||
|
IfVoid,
|
||||||
|
IfNull,
|
||||||
|
IfUndefined,
|
||||||
|
IfWithStringReturnType,
|
||||||
|
IfWithNumberReturnType,
|
||||||
|
IfWithBooleanReturnType,
|
||||||
|
IfWithObjectReturnType,
|
||||||
|
IfWithTupleReturnType,
|
||||||
|
IfWithArrayReturnType,
|
||||||
|
IfWithUnionReturnType,
|
||||||
|
IfWithVoidReturnType,
|
||||||
|
IfWithNullReturnType,
|
||||||
|
IfWithUndefinedReturnType,
|
||||||
|
IfWithNeverReturnType,
|
||||||
|
IfWithUnknownReturnType,
|
||||||
|
IfWithAnyReturnType,
|
||||||
};
|
};
|
||||||
|
@ -25,12 +25,37 @@ describe('Utils.Array', () => {
|
|||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('Mixed Values', () => {
|
||||||
|
const expectedResultType = [
|
||||||
|
t.anonymousObject({
|
||||||
|
properties: {
|
||||||
|
foo: t.stringLiteral('bar'),
|
||||||
|
baz: t.booleanLiteral(false),
|
||||||
|
prop: t.anonymousObject({
|
||||||
|
properties: {
|
||||||
|
foo: t.stringLiteral('bar'),
|
||||||
|
bar: t.stringLiteral('foo'),
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
t.numberLiteral(1),
|
||||||
|
t.stringLiteral('foo'),
|
||||||
|
t.booleanLiteral(true),
|
||||||
|
];
|
||||||
|
type('MixedValues').isUnion(expectedResultType);
|
||||||
|
// The result type should not contain the type 'never'
|
||||||
|
type('ContainsNever').isUnion(expectedResultType);
|
||||||
|
});
|
||||||
|
|
||||||
test('Number Values', () => {
|
test('Number Values', () => {
|
||||||
type('NumberValues').isUnion([t.numberLiteral(1), t.numberLiteral(2), t.numberLiteral(3)]);
|
type('NumberValues').isUnion([t.numberLiteral(1), t.numberLiteral(2), t.numberLiteral(3)]);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Bool Values', () => {
|
test('Bool Values', () => {
|
||||||
type('BoolValues').isBoolean();
|
type('BoolValues').isBoolean();
|
||||||
|
type('TrueBoolLiteralValues').isBooleanLiteral(true);
|
||||||
|
type('FalseBoolLiteralValues').isBooleanLiteral(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Object Values', () => {
|
test('Object Values', () => {
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
|
const { t } = require('ts-zen');
|
||||||
|
|
||||||
const { createTypeSelector } = require('../test.utils');
|
const { createTypeSelector } = require('../test.utils');
|
||||||
|
|
||||||
@ -56,6 +57,10 @@ describe('Utils.Expression', () => {
|
|||||||
type('IsStrictEqualGivenEqualTypes').isBooleanLiteral(true);
|
type('IsStrictEqualGivenEqualTypes').isBooleanLiteral(true);
|
||||||
type('IsStrictEqualGivenDifferentLiterals').isBooleanLiteral(false);
|
type('IsStrictEqualGivenDifferentLiterals').isBooleanLiteral(false);
|
||||||
type('IsStrictEqualGivenDifferentTypes').isBooleanLiteral(false);
|
type('IsStrictEqualGivenDifferentTypes').isBooleanLiteral(false);
|
||||||
|
type('IsStrictEqualGivenStringAndStringLiteral').isBooleanLiteral(false);
|
||||||
|
type('IsStrictEqualGivenStringLiteralAndString').isBooleanLiteral(false);
|
||||||
|
type('IsStrictEqualGivenNumberAndNumberLiteral').isBooleanLiteral(false);
|
||||||
|
type('IsStrictEqualGivenNumberLiteralAndNumber').isBooleanLiteral(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Extends', () => {
|
test('Extends', () => {
|
||||||
@ -113,4 +118,47 @@ describe('Utils.Expression', () => {
|
|||||||
type('TupleNotExtendsArray').isBooleanLiteral(false);
|
type('TupleNotExtendsArray').isBooleanLiteral(false);
|
||||||
type('StringArrayNotExtendsArray').isBooleanLiteral(false);
|
type('StringArrayNotExtendsArray').isBooleanLiteral(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('If', () => {
|
||||||
|
type('IfTrue').isBooleanLiteral(true);
|
||||||
|
type('IfFalse').isBooleanLiteral(false);
|
||||||
|
type('IfBoolean').isBooleanLiteral(false);
|
||||||
|
type('IfNumber').isBooleanLiteral(false);
|
||||||
|
type('IfString').isBooleanLiteral(false);
|
||||||
|
type('IfObject').isBooleanLiteral(false);
|
||||||
|
type('IfUnknown').isBooleanLiteral(false);
|
||||||
|
type('IfAny').isBooleanLiteral(true);
|
||||||
|
type('IfNever').isBooleanLiteral(true);
|
||||||
|
type('IfStringLiteral').isBooleanLiteral(false);
|
||||||
|
type('IfTuple').isBooleanLiteral(false);
|
||||||
|
type('IfArray').isBooleanLiteral(false);
|
||||||
|
type('IfStringArray').isBooleanLiteral(false);
|
||||||
|
type('IfTupleArray').isBooleanLiteral(false);
|
||||||
|
type('IfUnion').isBooleanLiteral(false);
|
||||||
|
type('IfIntersection').isBooleanLiteral(true);
|
||||||
|
type('IfFunction').isBooleanLiteral(false);
|
||||||
|
type('IfClass').isBooleanLiteral(false);
|
||||||
|
type('IfVoid').isBooleanLiteral(false);
|
||||||
|
type('IfNull').isBooleanLiteral(false);
|
||||||
|
type('IfUndefined').isBooleanLiteral(false);
|
||||||
|
type('IfWithStringReturnType').isStringLiteral('test');
|
||||||
|
type('IfWithNumberReturnType').isNumberLiteral(1);
|
||||||
|
type('IfWithBooleanReturnType').isBooleanLiteral(true);
|
||||||
|
type('IfWithObjectReturnType').isAnonymousObject({
|
||||||
|
properties: { foo: t.numberLiteral(1) },
|
||||||
|
});
|
||||||
|
type('IfWithTupleReturnType').isTuple([
|
||||||
|
t.numberLiteral(1),
|
||||||
|
t.numberLiteral(2),
|
||||||
|
t.numberLiteral(3),
|
||||||
|
]);
|
||||||
|
type('IfWithArrayReturnType').isArray(t.string());
|
||||||
|
type('IfWithUnionReturnType').isUnion([t.string(), t.number()]);
|
||||||
|
type('IfWithVoidReturnType').isVoid();
|
||||||
|
type('IfWithNullReturnType').isNull();
|
||||||
|
type('IfWithUndefinedReturnType').isUndefined();
|
||||||
|
type('IfWithNeverReturnType').isNever();
|
||||||
|
type('IfWithUnknownReturnType').isUnknown();
|
||||||
|
type('IfWithAnyReturnType').isAny();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user