mirror of
https://github.com/JamesIves/github-pages-deploy-action.git
synced 2023-12-15 20:03:39 +08:00
239 lines
14 KiB
JavaScript
239 lines
14 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
var ava_1 = require("ava");
|
|
var fs = require("fs");
|
|
var _1 = require(".");
|
|
ava_1.default('parseImportLine: parse single import', function (t) {
|
|
t.deepEqual(_1.parseImportLine("import A from \"schema.graphql\""), {
|
|
imports: ['A'],
|
|
from: 'schema.graphql',
|
|
});
|
|
});
|
|
ava_1.default('parseImportLine: optional semicolon', function (t) {
|
|
t.deepEqual(_1.parseImportLine("import A from \"schema.graphql\";"), {
|
|
imports: ['A'],
|
|
from: 'schema.graphql',
|
|
});
|
|
});
|
|
ava_1.default('parseImportLine: invalid', function (t) {
|
|
t.throws(function () { return _1.parseImportLine("import from \"schema.graphql\""); }, Error);
|
|
});
|
|
ava_1.default('parseImportLine: invalid 2', function (t) {
|
|
t.throws(function () { return _1.parseImportLine("import A from \"\""); }, Error);
|
|
});
|
|
ava_1.default('parseImportLine: parse multi import', function (t) {
|
|
t.deepEqual(_1.parseImportLine("import A, B from \"schema.graphql\""), {
|
|
imports: ['A', 'B'],
|
|
from: 'schema.graphql',
|
|
});
|
|
});
|
|
ava_1.default('parseImportLine: parse multi import (weird spacing)', function (t) {
|
|
t.deepEqual(_1.parseImportLine("import A ,B from \"schema.graphql\""), {
|
|
imports: ['A', 'B'],
|
|
from: 'schema.graphql',
|
|
});
|
|
});
|
|
ava_1.default('parseImportLine: different path', function (t) {
|
|
t.deepEqual(_1.parseImportLine("import A from \"../new/schema.graphql\""), {
|
|
imports: ['A'],
|
|
from: '../new/schema.graphql',
|
|
});
|
|
});
|
|
ava_1.default('parseImportLine: module in node_modules', function (t) {
|
|
t.deepEqual(_1.parseImportLine("import A from \"module-name\""), {
|
|
imports: ['A'],
|
|
from: 'module-name',
|
|
});
|
|
});
|
|
ava_1.default('parseSDL: non-import comment', function (t) {
|
|
t.deepEqual(_1.parseSDL("#importent: comment"), []);
|
|
});
|
|
ava_1.default('parse: multi line import', function (t) {
|
|
var sdl = "# import A from \"a.graphql\"\n# import * from \"b.graphql\"\n ";
|
|
t.deepEqual(_1.parseSDL(sdl), [
|
|
{
|
|
imports: ['A'],
|
|
from: 'a.graphql',
|
|
},
|
|
{
|
|
imports: ['*'],
|
|
from: 'b.graphql',
|
|
},
|
|
]);
|
|
});
|
|
ava_1.default('Module in node_modules', function (t) {
|
|
var b = "# import lower from './lower.graphql'\ntype B {\n id: ID!\n nickname: String! @lower\n}\n";
|
|
var lower = "directive @lower on FIELD_DEFINITION\n";
|
|
var expectedSDL = "type A {\n id: ID!\n author: B!\n}\n\ntype B {\n id: ID!\n nickname: String! @lower\n}\n\ndirective @lower on FIELD_DEFINITION\n";
|
|
var moduleDir = 'node_modules/graphql-import-test';
|
|
if (!fs.existsSync(moduleDir)) {
|
|
fs.mkdirSync(moduleDir);
|
|
}
|
|
fs.writeFileSync(moduleDir + '/b.graphql', b);
|
|
fs.writeFileSync(moduleDir + '/lower.graphql', lower);
|
|
t.is(_1.importSchema('fixtures/import-module/a.graphql'), expectedSDL);
|
|
});
|
|
ava_1.default('importSchema: imports only', function (t) {
|
|
var expectedSDL = "type Query {\n first: String\n second: Float\n third: String\n}\n";
|
|
t.is(_1.importSchema('fixtures/imports-only/all.graphql'), expectedSDL);
|
|
});
|
|
ava_1.default('importSchema: import duplicate', function (t) {
|
|
var expectedSDL = "type Query {\n first: String\n second: Float\n third: String\n}\n";
|
|
t.is(_1.importSchema('fixtures/import-duplicate/all.graphql'), expectedSDL);
|
|
});
|
|
ava_1.default('importSchema: import nested', function (t) {
|
|
var expectedSDL = "type Query {\n first: String\n second: Float\n third: String\n}\n";
|
|
t.is(_1.importSchema('fixtures/import-nested/all.graphql'), expectedSDL);
|
|
});
|
|
ava_1.default('importSchema: field types', function (t) {
|
|
var expectedSDL = "type A {\n first: String\n second: Float\n b: B\n}\n\ntype B {\n c: C\n hello: String!\n}\n\ntype C {\n id: ID!\n}\n";
|
|
t.is(_1.importSchema('fixtures/field-types/a.graphql'), expectedSDL);
|
|
});
|
|
ava_1.default('importSchema: enums', function (t) {
|
|
var expectedSDL = "type A {\n first: String\n second: Float\n b: B\n}\n\nenum B {\n B1\n B2\n B3\n}\n";
|
|
t.is(_1.importSchema('fixtures/enums/a.graphql'), expectedSDL);
|
|
});
|
|
ava_1.default('importSchema: import all', function (t) {
|
|
var expectedSDL = "type A {\n first: String\n second: Float\n b: B\n}\n\ntype B {\n hello: String!\n c1: C1\n c2: C2\n}\n\ntype C1 {\n id: ID!\n}\n\ntype C2 {\n id: ID!\n}\n";
|
|
t.is(_1.importSchema('fixtures/import-all/a.graphql'), expectedSDL);
|
|
});
|
|
ava_1.default('importSchema: import all from objects', function (t) {
|
|
var schemaC = "\n type C1 {\n id: ID!\n }\n\n type C2 {\n id: ID!\n }\n\n type C3 {\n id: ID!\n }";
|
|
var schemaB = "\n # import * from 'schemaC'\n\n type B {\n hello: String!\n c1: C1\n c2: C2\n }";
|
|
var schemaA = "\n # import B from 'schemaB'\n\n type A {\n # test 1\n first: String\n second: Float\n b: B\n }";
|
|
var schemas = {
|
|
schemaA: schemaA,
|
|
schemaB: schemaB,
|
|
schemaC: schemaC,
|
|
};
|
|
var expectedSDL = "type A {\n first: String\n second: Float\n b: B\n}\n\ntype B {\n hello: String!\n c1: C1\n c2: C2\n}\n\ntype C1 {\n id: ID!\n}\n\ntype C2 {\n id: ID!\n}\n";
|
|
t.is(_1.importSchema(schemaA, schemas), expectedSDL);
|
|
});
|
|
ava_1.default("importSchema: single object schema", function (t) {
|
|
var schemaA = "\n type A {\n field: String\n }";
|
|
var expectedSDL = "type A {\n field: String\n}\n";
|
|
t.is(_1.importSchema(schemaA), expectedSDL);
|
|
});
|
|
ava_1.default("importSchema: import all mix 'n match", function (t) {
|
|
var schemaB = "\n # import C1, C2 from 'fixtures/import-all/c.graphql'\n\n type B {\n hello: String!\n c1: C1\n c2: C2\n }";
|
|
var schemaA = "\n # import * from \"schemaB\"\n\n type A {\n # test 1\n first: String\n second: Float\n b: B\n }";
|
|
var schemas = {
|
|
schemaB: schemaB,
|
|
};
|
|
var expectedSDL = "type A {\n first: String\n second: Float\n b: B\n}\n\ntype B {\n hello: String!\n c1: C1\n c2: C2\n}\n\ntype C1 {\n id: ID!\n}\n\ntype C2 {\n id: ID!\n}\n";
|
|
t.is(_1.importSchema(schemaA, schemas), expectedSDL);
|
|
});
|
|
ava_1.default("importSchema: import all mix 'n match 2", function (t) {
|
|
var schemaA = "\n # import * from \"fixtures/import-all/b.graphql\"\n\n type A {\n # test 1\n first: String\n second: Float\n b: B\n }";
|
|
var expectedSDL = "type A {\n first: String\n second: Float\n b: B\n}\n\ntype B {\n hello: String!\n c1: C1\n c2: C2\n}\n\ntype C1 {\n id: ID!\n}\n\ntype C2 {\n id: ID!\n}\n";
|
|
t.is(_1.importSchema(schemaA), expectedSDL);
|
|
});
|
|
ava_1.default("importSchema: import all - exclude Query/Mutation/Subscription type", function (t) {
|
|
var schemaC = "\n type C1 {\n id: ID!\n }\n\n type C2 {\n id: ID!\n }\n\n type C3 {\n id: ID!\n }\n\n type Query {\n hello: String!\n }\n\n type Mutation {\n hello: String!\n }\n\n type Subscription {\n hello: String!\n }\n ";
|
|
var schemaB = "\n # import * from 'schemaC'\n\n type B {\n hello: String!\n c1: C1\n c2: C2\n }";
|
|
var schemaA = "\n # import B from 'schemaB'\n\n type Query {\n greet: String!\n }\n\n type A {\n # test 1\n first: String\n second: Float\n b: B\n }";
|
|
var schemas = {
|
|
schemaA: schemaA,
|
|
schemaB: schemaB,
|
|
schemaC: schemaC,
|
|
};
|
|
var expectedSDL = "type Query {\n greet: String!\n}\n\ntype A {\n first: String\n second: Float\n b: B\n}\n\ntype B {\n hello: String!\n c1: C1\n c2: C2\n}\n\ntype C1 {\n id: ID!\n}\n\ntype C2 {\n id: ID!\n}\n";
|
|
t.is(_1.importSchema(schemaA, schemas), expectedSDL);
|
|
});
|
|
ava_1.default('importSchema: scalar', function (t) {
|
|
var expectedSDL = "type A {\n b: B\n}\n\nscalar B\n";
|
|
t.is(_1.importSchema('fixtures/scalar/a.graphql'), expectedSDL);
|
|
});
|
|
ava_1.default('importSchema: directive', function (t) {
|
|
var expectedSDL = "type A {\n first: String @upper\n second: String @withB @deprecated\n}\n\ndirective @upper on FIELD_DEFINITION\n\nscalar B\n\ndirective @withB(argB: B) on FIELD_DEFINITION\n";
|
|
t.is(_1.importSchema('fixtures/directive/a.graphql'), expectedSDL);
|
|
});
|
|
ava_1.default('importSchema: interfaces', function (t) {
|
|
var expectedSDL = "type A implements B {\n first: String\n second: Float\n}\n\ninterface B {\n second: Float\n c: [C!]!\n}\n\ntype C {\n c: ID!\n}\n";
|
|
t.is(_1.importSchema('fixtures/interfaces/a.graphql'), expectedSDL);
|
|
});
|
|
ava_1.default('importSchema: interfaces-many', function (t) {
|
|
var expectedSDL = "type A implements B {\n first: String\n second: Float\n}\n\ninterface B {\n second: Float\n c: [C!]!\n}\n\ntype C implements D1 & D2 {\n c: ID!\n}\n\ninterface D1 {\n d1: ID!\n}\n\ninterface D2 {\n d2: ID!\n}\n";
|
|
t.is(_1.importSchema('fixtures/interfaces-many/a.graphql'), expectedSDL);
|
|
});
|
|
ava_1.default('importSchema: interfaces-implements', function (t) {
|
|
var expectedSDL = "type A implements B {\n id: ID!\n}\n\ninterface B {\n id: ID!\n}\n\ntype B1 implements B {\n id: ID!\n}\n";
|
|
t.is(_1.importSchema('fixtures/interfaces-implements/a.graphql'), expectedSDL);
|
|
});
|
|
ava_1.default('importSchema: interfaces-implements-many', function (t) {
|
|
var expectedSDL = "type A implements B {\n id: ID!\n}\n\ninterface B {\n id: ID!\n}\n\ntype B1 implements B {\n id: ID!\n}\n\ntype B2 implements B {\n id: ID!\n}\n";
|
|
t.is(_1.importSchema('fixtures/interfaces-implements-many/a.graphql'), expectedSDL);
|
|
});
|
|
ava_1.default('importSchema: input types', function (t) {
|
|
var expectedSDL = "type A {\n first(b: B): String\n second: Float\n}\n\ninput B {\n hello: [C!]!\n}\n\ninput C {\n id: ID!\n}\n";
|
|
t.is(_1.importSchema('fixtures/input-types/a.graphql'), expectedSDL);
|
|
});
|
|
ava_1.default('importSchema: complex test', function (t) {
|
|
t.notThrows(function () {
|
|
_1.importSchema('fixtures/complex/a.graphql');
|
|
});
|
|
});
|
|
ava_1.default('circular imports', function (t) {
|
|
var expectedSDL = "type A {\n first: String\n second: Float\n b: B\n}\n\ntype B {\n hello: String!\n c1: C1\n c2: C2\n a: A\n}\n\ntype C1 {\n id: ID!\n}\n\ntype C2 {\n id: ID!\n}\n";
|
|
var actualSDL = _1.importSchema('fixtures/circular/a.graphql');
|
|
t.is(actualSDL, expectedSDL);
|
|
});
|
|
ava_1.default('related types', function (t) {
|
|
var expectedSDL = "type A {\n first: String\n second: Float\n b: B\n}\n\ntype B {\n hello: String!\n c1: C\n}\n\ntype C {\n field: String\n}\n";
|
|
var actualSDL = _1.importSchema('fixtures/related-types/a.graphql');
|
|
t.is(actualSDL, expectedSDL);
|
|
});
|
|
ava_1.default('relative paths', function (t) {
|
|
var expectedSDL = "type Query {\n feed: [Post!]!\n}\n\ntype Mutation {\n createDraft(title: String!, text: String): Post\n publish(id: ID!): Post\n}\n\ntype Post implements Node {\n id: ID!\n isPublished: Boolean!\n title: String!\n text: String!\n}\n\ninterface Node {\n id: ID!\n}\n";
|
|
var actualSDL = _1.importSchema('fixtures/relative-paths/src/schema.graphql');
|
|
t.is(actualSDL, expectedSDL);
|
|
});
|
|
ava_1.default('root field imports', function (t) {
|
|
var expectedSDL = "type Query {\n posts(filter: PostFilter): [Post]\n}\n\ntype Dummy {\n field: String\n}\n\ntype Post {\n field1: String\n}\n\ninput PostFilter {\n field3: Int\n}\n";
|
|
var actualSDL = _1.importSchema('fixtures/root-fields/a.graphql');
|
|
t.is(actualSDL, expectedSDL);
|
|
});
|
|
ava_1.default('merged root field imports', function (t) {
|
|
var expectedSDL = "type Query {\n helloA: String\n posts(filter: PostFilter): [Post]\n hello: String\n}\n\ntype Dummy {\n field: String\n}\n\ntype Post {\n field1: String\n}\n\ninput PostFilter {\n field3: Int\n}\n";
|
|
var actualSDL = _1.importSchema('fixtures/merged-root-fields/a.graphql');
|
|
t.is(actualSDL, expectedSDL);
|
|
});
|
|
ava_1.default('global schema modules', function (t) {
|
|
var shared = "\n type Shared {\n first: String\n }\n ";
|
|
var expectedSDL = "type A {\n first: String\n second: Shared\n}\n\ntype Shared {\n first: String\n}\n";
|
|
t.is(_1.importSchema('fixtures/global/a.graphql', { shared: shared }), expectedSDL);
|
|
});
|
|
ava_1.default('missing type on type', function (t) {
|
|
var err = t.throws(function () { return _1.importSchema('fixtures/type-not-found/a.graphql'); }, Error);
|
|
t.is(err.message, "Field test: Couldn't find type Post in any of the schemas.");
|
|
});
|
|
ava_1.default('missing type on interface', function (t) {
|
|
var err = t.throws(function () { return _1.importSchema('fixtures/type-not-found/b.graphql'); }, Error);
|
|
t.is(err.message, "Field test: Couldn't find type Post in any of the schemas.");
|
|
});
|
|
ava_1.default('missing type on input type', function (t) {
|
|
var err = t.throws(function () { return _1.importSchema('fixtures/type-not-found/c.graphql'); }, Error);
|
|
t.is(err.message, "Field post: Couldn't find type Post in any of the schemas.");
|
|
});
|
|
ava_1.default('missing interface type', function (t) {
|
|
var err = t.throws(function () { return _1.importSchema('fixtures/type-not-found/d.graphql'); }, Error);
|
|
t.is(err.message, "Couldn't find interface MyInterface in any of the schemas.");
|
|
});
|
|
ava_1.default('missing union type', function (t) {
|
|
var err = t.throws(function () { return _1.importSchema('fixtures/type-not-found/e.graphql'); }, Error);
|
|
t.is(err.message, "Couldn't find type C in any of the schemas.");
|
|
});
|
|
ava_1.default('missing type on input type', function (t) {
|
|
var err = t.throws(function () { return _1.importSchema('fixtures/type-not-found/f.graphql'); }, Error);
|
|
t.is(err.message, "Field myfield: Couldn't find type Post in any of the schemas.");
|
|
});
|
|
ava_1.default('missing type on directive', function (t) {
|
|
var err = t.throws(function () { return _1.importSchema('fixtures/type-not-found/g.graphql'); }, Error);
|
|
t.is(err.message, "Directive first: Couldn't find type first in any of the schemas.");
|
|
});
|
|
ava_1.default('import with collision', function (t) {
|
|
// Local type gets preference over imported type
|
|
var expectedSDL = "type User {\n id: ID!\n name: String!\n}\n";
|
|
t.is(_1.importSchema('fixtures/collision/a.graphql'), expectedSDL);
|
|
});
|
|
//# sourceMappingURL=index.test.js.map
|