mirror of
https://github.com/Kir-Antipov/mc-publish.git
synced 2024-11-21 16:00:59 -05:00
Added tests for action-parameter-type-descriptor
This commit is contained in:
parent
3c4ae09cb2
commit
fbd229daea
1 changed files with 386 additions and 0 deletions
|
@ -0,0 +1,386 @@
|
||||||
|
import { QueryString } from "@/utils/net/query-string";
|
||||||
|
import { parseActionParameterTypeDescriptor } from "@/utils/actions/action-parameter-type-descriptor";
|
||||||
|
|
||||||
|
describe("parseActionParameterTypeDescriptor", () => {
|
||||||
|
test("returns undefined for empty input", () => {
|
||||||
|
expect(parseActionParameterTypeDescriptor("")).toBeUndefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
test("parses a global type", () => {
|
||||||
|
const descriptor = "string";
|
||||||
|
|
||||||
|
const typeDescriptor = parseActionParameterTypeDescriptor(descriptor);
|
||||||
|
|
||||||
|
expect(typeDescriptor).toEqual({
|
||||||
|
module: undefined,
|
||||||
|
name: "string",
|
||||||
|
isDefault: true,
|
||||||
|
isArray: false,
|
||||||
|
factory: undefined,
|
||||||
|
options: undefined,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test("parses a global type with options", () => {
|
||||||
|
const descriptor = "string?split=true&trimEntries=true&removeEmptyEntries=true";
|
||||||
|
|
||||||
|
const typeDescriptor = parseActionParameterTypeDescriptor(descriptor);
|
||||||
|
|
||||||
|
expect(typeDescriptor).toEqual({
|
||||||
|
module: undefined,
|
||||||
|
name: "string",
|
||||||
|
isDefault: true,
|
||||||
|
isArray: false,
|
||||||
|
factory: undefined,
|
||||||
|
options: QueryString.parse("?split=true&trimEntries=true&removeEmptyEntries=true"),
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test("parses a global array type", () => {
|
||||||
|
const descriptor = "string[]";
|
||||||
|
|
||||||
|
const typeDescriptor = parseActionParameterTypeDescriptor(descriptor);
|
||||||
|
|
||||||
|
expect(typeDescriptor).toEqual({
|
||||||
|
module: undefined,
|
||||||
|
name: "string",
|
||||||
|
isDefault: true,
|
||||||
|
isArray: true,
|
||||||
|
factory: undefined,
|
||||||
|
options: undefined,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test("parses a global array type with options", () => {
|
||||||
|
const descriptor = "string[]?split=true&trimEntries=true&removeEmptyEntries=true";
|
||||||
|
|
||||||
|
const typeDescriptor = parseActionParameterTypeDescriptor(descriptor);
|
||||||
|
|
||||||
|
expect(typeDescriptor).toEqual({
|
||||||
|
module: undefined,
|
||||||
|
name: "string",
|
||||||
|
isDefault: true,
|
||||||
|
isArray: true,
|
||||||
|
factory: undefined,
|
||||||
|
options: QueryString.parse("?split=true&trimEntries=true&removeEmptyEntries=true"),
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test("parses a global type with factory", () => {
|
||||||
|
const descriptor = "string;qux/bar-baz->parseBaz";
|
||||||
|
|
||||||
|
const typeDescriptor = parseActionParameterTypeDescriptor(descriptor);
|
||||||
|
|
||||||
|
expect(typeDescriptor).toEqual({
|
||||||
|
module: undefined,
|
||||||
|
name: "string",
|
||||||
|
isDefault: true,
|
||||||
|
isArray: false,
|
||||||
|
factory: {
|
||||||
|
module: "qux/bar-baz",
|
||||||
|
name: "parseBaz",
|
||||||
|
isDefault: true,
|
||||||
|
},
|
||||||
|
options: undefined,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test("parses a global type with factory and options", () => {
|
||||||
|
const descriptor = "string;qux/bar-baz->parseBaz?split=true&trimEntries=true&removeEmptyEntries=true";
|
||||||
|
|
||||||
|
const typeDescriptor = parseActionParameterTypeDescriptor(descriptor);
|
||||||
|
|
||||||
|
expect(typeDescriptor).toEqual({
|
||||||
|
module: undefined,
|
||||||
|
name: "string",
|
||||||
|
isDefault: true,
|
||||||
|
isArray: false,
|
||||||
|
factory: {
|
||||||
|
module: "qux/bar-baz",
|
||||||
|
name: "parseBaz",
|
||||||
|
isDefault: true,
|
||||||
|
},
|
||||||
|
options: QueryString.parse("?split=true&trimEntries=true&removeEmptyEntries=true"),
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test("parses a global array type with factory", () => {
|
||||||
|
const descriptor = "string[];qux/bar-baz->parseBaz";
|
||||||
|
|
||||||
|
const typeDescriptor = parseActionParameterTypeDescriptor(descriptor);
|
||||||
|
|
||||||
|
expect(typeDescriptor).toEqual({
|
||||||
|
module: undefined,
|
||||||
|
name: "string",
|
||||||
|
isDefault: true,
|
||||||
|
isArray: true,
|
||||||
|
factory: {
|
||||||
|
module: "qux/bar-baz",
|
||||||
|
name: "parseBaz",
|
||||||
|
isDefault: true,
|
||||||
|
},
|
||||||
|
options: undefined,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test("parses a global array type with factory and options", () => {
|
||||||
|
const descriptor = "string[];qux/bar-baz->parseBaz?split=true&trimEntries=true&removeEmptyEntries=true";
|
||||||
|
|
||||||
|
const typeDescriptor = parseActionParameterTypeDescriptor(descriptor);
|
||||||
|
|
||||||
|
expect(typeDescriptor).toEqual({
|
||||||
|
module: undefined,
|
||||||
|
name: "string",
|
||||||
|
isDefault: true,
|
||||||
|
isArray: true,
|
||||||
|
factory: {
|
||||||
|
module: "qux/bar-baz",
|
||||||
|
name: "parseBaz",
|
||||||
|
isDefault: true,
|
||||||
|
},
|
||||||
|
options: QueryString.parse("?split=true&trimEntries=true&removeEmptyEntries=true"),
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test("parses a default import", () => {
|
||||||
|
const descriptor = "foo/bar-baz->Baz";
|
||||||
|
|
||||||
|
const typeDescriptor = parseActionParameterTypeDescriptor(descriptor);
|
||||||
|
|
||||||
|
expect(typeDescriptor).toEqual({
|
||||||
|
module: "foo/bar-baz",
|
||||||
|
name: "Baz",
|
||||||
|
isDefault: true,
|
||||||
|
isArray: false,
|
||||||
|
factory: undefined,
|
||||||
|
options: undefined,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test("parses a named import without options", () => {
|
||||||
|
const descriptor = "foo/bar-baz->{Baz}";
|
||||||
|
|
||||||
|
const typeDescriptor = parseActionParameterTypeDescriptor(descriptor);
|
||||||
|
|
||||||
|
expect(typeDescriptor).toEqual({
|
||||||
|
module: "foo/bar-baz",
|
||||||
|
name: "Baz",
|
||||||
|
isDefault: false,
|
||||||
|
isArray: false,
|
||||||
|
factory: undefined,
|
||||||
|
options: undefined,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test("parses a default import with options", () => {
|
||||||
|
const descriptor = "foo/bar-baz->Baz?split=true&trimEntries=true&removeEmptyEntries=true";
|
||||||
|
|
||||||
|
const typeDescriptor = parseActionParameterTypeDescriptor(descriptor);
|
||||||
|
|
||||||
|
expect(typeDescriptor).toEqual({
|
||||||
|
module: "foo/bar-baz",
|
||||||
|
name: "Baz",
|
||||||
|
isDefault: true,
|
||||||
|
isArray: false,
|
||||||
|
factory: undefined,
|
||||||
|
options: QueryString.parse("?split=true&trimEntries=true&removeEmptyEntries=true"),
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test("parses a named import with options", () => {
|
||||||
|
const descriptor = "foo/bar-baz->{Baz}?split=true&trimEntries=true&removeEmptyEntries=true";
|
||||||
|
|
||||||
|
const typeDescriptor = parseActionParameterTypeDescriptor(descriptor);
|
||||||
|
|
||||||
|
expect(typeDescriptor).toEqual({
|
||||||
|
module: "foo/bar-baz",
|
||||||
|
name: "Baz",
|
||||||
|
isDefault: false,
|
||||||
|
isArray: false,
|
||||||
|
factory: undefined,
|
||||||
|
options: QueryString.parse("?split=true&trimEntries=true&removeEmptyEntries=true"),
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test("parses a default import with a factory", () => {
|
||||||
|
const descriptor = "foo/bar-baz->Baz;qux/bar-baz->parseBaz";
|
||||||
|
|
||||||
|
const typeDescriptor = parseActionParameterTypeDescriptor(descriptor);
|
||||||
|
|
||||||
|
expect(typeDescriptor).toEqual({
|
||||||
|
module: "foo/bar-baz",
|
||||||
|
name: "Baz",
|
||||||
|
isDefault: true,
|
||||||
|
isArray: false,
|
||||||
|
factory: {
|
||||||
|
module: "qux/bar-baz",
|
||||||
|
name: "parseBaz",
|
||||||
|
isDefault: true,
|
||||||
|
},
|
||||||
|
options: undefined,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test("parses a named import with a factory", () => {
|
||||||
|
const descriptor = "foo/bar-baz->{Baz};qux/bar-baz->{parseBaz}";
|
||||||
|
|
||||||
|
const typeDescriptor = parseActionParameterTypeDescriptor(descriptor);
|
||||||
|
|
||||||
|
expect(typeDescriptor).toEqual({
|
||||||
|
module: "foo/bar-baz",
|
||||||
|
name: "Baz",
|
||||||
|
isDefault: false,
|
||||||
|
isArray: false,
|
||||||
|
factory: {
|
||||||
|
module: "qux/bar-baz",
|
||||||
|
name: "parseBaz",
|
||||||
|
isDefault: false,
|
||||||
|
},
|
||||||
|
options: undefined,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test("parses a default import with a factory and options", () => {
|
||||||
|
const descriptor = "foo/bar-baz->Baz;qux/bar-baz->parseBaz?split=true&trimEntries=true&removeEmptyEntries=true";
|
||||||
|
|
||||||
|
const typeDescriptor = parseActionParameterTypeDescriptor(descriptor);
|
||||||
|
|
||||||
|
expect(typeDescriptor).toEqual({
|
||||||
|
module: "foo/bar-baz",
|
||||||
|
name: "Baz",
|
||||||
|
isDefault: true,
|
||||||
|
isArray: false,
|
||||||
|
factory: {
|
||||||
|
module: "qux/bar-baz",
|
||||||
|
name: "parseBaz",
|
||||||
|
isDefault: true,
|
||||||
|
},
|
||||||
|
options: QueryString.parse("?split=true&trimEntries=true&removeEmptyEntries=true"),
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test("parses a named import with a factory and options", () => {
|
||||||
|
const descriptor = "foo/bar-baz->{Baz};qux/bar-baz->{parseBaz}?split=true&trimEntries=true&removeEmptyEntries=true";
|
||||||
|
|
||||||
|
const typeDescriptor = parseActionParameterTypeDescriptor(descriptor);
|
||||||
|
|
||||||
|
expect(typeDescriptor).toEqual({
|
||||||
|
module: "foo/bar-baz",
|
||||||
|
name: "Baz",
|
||||||
|
isDefault: false,
|
||||||
|
isArray: false,
|
||||||
|
factory: {
|
||||||
|
module: "qux/bar-baz",
|
||||||
|
name: "parseBaz",
|
||||||
|
isDefault: false,
|
||||||
|
},
|
||||||
|
options: QueryString.parse("?split=true&trimEntries=true&removeEmptyEntries=true"),
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test("parses a default import as an array type with a factory and options", () => {
|
||||||
|
const descriptor = "foo/bar-baz->Baz[];qux/bar-baz->parseBaz?split=true&trimEntries=true&removeEmptyEntries=true";
|
||||||
|
|
||||||
|
const typeDescriptor = parseActionParameterTypeDescriptor(descriptor);
|
||||||
|
|
||||||
|
expect(typeDescriptor).toEqual({
|
||||||
|
module: "foo/bar-baz",
|
||||||
|
name: "Baz",
|
||||||
|
isDefault: true,
|
||||||
|
isArray: true,
|
||||||
|
factory: {
|
||||||
|
module: "qux/bar-baz",
|
||||||
|
name: "parseBaz",
|
||||||
|
isDefault: true,
|
||||||
|
},
|
||||||
|
options: QueryString.parse("?split=true&trimEntries=true&removeEmptyEntries=true"),
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test("parses a named import as an array type with a factory and options", () => {
|
||||||
|
const descriptor = "foo/bar-baz->{Baz}[];qux/bar-baz->{parseBaz}?split=true&trimEntries=true&removeEmptyEntries=true";
|
||||||
|
|
||||||
|
const typeDescriptor = parseActionParameterTypeDescriptor(descriptor);
|
||||||
|
|
||||||
|
expect(typeDescriptor).toEqual({
|
||||||
|
module: "foo/bar-baz",
|
||||||
|
name: "Baz",
|
||||||
|
isDefault: false,
|
||||||
|
isArray: true,
|
||||||
|
factory: {
|
||||||
|
module: "qux/bar-baz",
|
||||||
|
name: "parseBaz",
|
||||||
|
isDefault: false,
|
||||||
|
},
|
||||||
|
options: QueryString.parse("?split=true&trimEntries=true&removeEmptyEntries=true"),
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test("parses a dot notation", () => {
|
||||||
|
const descriptor = "foo.BarBaz";
|
||||||
|
|
||||||
|
const typeDescriptor = parseActionParameterTypeDescriptor(descriptor);
|
||||||
|
|
||||||
|
expect(typeDescriptor).toEqual({
|
||||||
|
module: "foo/bar-baz",
|
||||||
|
name: "BarBaz",
|
||||||
|
isDefault: false,
|
||||||
|
isArray: false,
|
||||||
|
factory: undefined,
|
||||||
|
options: undefined,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test("parses a dot notation as an array type", () => {
|
||||||
|
const descriptor = "foo.BarBaz[]";
|
||||||
|
|
||||||
|
const typeDescriptor = parseActionParameterTypeDescriptor(descriptor);
|
||||||
|
|
||||||
|
expect(typeDescriptor).toEqual({
|
||||||
|
module: "foo/bar-baz",
|
||||||
|
name: "BarBaz",
|
||||||
|
isDefault: false,
|
||||||
|
isArray: true,
|
||||||
|
factory: undefined,
|
||||||
|
options: undefined,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test("parses a dot notation as an array type with factory", () => {
|
||||||
|
const descriptor = "foo.BarBaz[]:{parseBaz}";
|
||||||
|
|
||||||
|
const typeDescriptor = parseActionParameterTypeDescriptor(descriptor);
|
||||||
|
|
||||||
|
expect(typeDescriptor).toEqual({
|
||||||
|
module: "foo/bar-baz",
|
||||||
|
name: "BarBaz",
|
||||||
|
isDefault: false,
|
||||||
|
isArray: true,
|
||||||
|
factory: {
|
||||||
|
module: "foo/bar-baz",
|
||||||
|
name: "parseBaz",
|
||||||
|
isDefault: false,
|
||||||
|
},
|
||||||
|
options: undefined,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test("parses a dot notation as an array type with factory and options", () => {
|
||||||
|
const descriptor = "foo.BarBaz[]:{parseBaz}?split=true&trimEntries=true&removeEmptyEntries=true";
|
||||||
|
|
||||||
|
const typeDescriptor = parseActionParameterTypeDescriptor(descriptor);
|
||||||
|
|
||||||
|
expect(typeDescriptor).toEqual({
|
||||||
|
module: "foo/bar-baz",
|
||||||
|
name: "BarBaz",
|
||||||
|
isDefault: false,
|
||||||
|
isArray: true,
|
||||||
|
factory: {
|
||||||
|
module: "foo/bar-baz",
|
||||||
|
name: "parseBaz",
|
||||||
|
isDefault: false,
|
||||||
|
},
|
||||||
|
options: QueryString.parse("?split=true&trimEntries=true&removeEmptyEntries=true"),
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in a new issue