graphql-query-test-mock
Version:
Mock queries to your GraphQL backend in your Jest tests.
62 lines (48 loc) • 2.59 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.printNoMockFoundError = printNoMockFoundError;
exports.printVariablesDoesNotMatchError = printVariablesDoesNotMatchError;
var _jestDiff = _interopRequireDefault(require("jest-diff"));
var _index = require("./index");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function printNoMockFoundError(queryMock, operationName, variables) {
const errorMessageArray = getNoMockFoundErrorMessageArray(queryMock, operationName, variables);
throw new Error(errorMessageArray.join(''));
}
function getNoMockFoundErrorMessageArray(queryMock, operationName, variables) {
const mockedQueriesMessageArray = [`Could not find matching mock for operation "${operationName}" ` + `with variables: ${JSON.stringify(variables)}\n` + `Make sure you have mocked the query you are making.\n\n`];
if (!Object.entries(queryMock._queries).length) {
mockedQueriesMessageArray.push(`=== No query was mocked ===\n\n`);
return mockedQueriesMessageArray;
}
if (queryMock._queries[operationName]) {
mockedQueriesMessageArray.push(`=== Currently mocked "${operationName}" queries ===\n`);
queryMock._queries[operationName].forEach(({
queryMockConfig
}) => {
mockedQueriesMessageArray.push(`Query "variables": ${JSON.stringify(queryMockConfig.variables) || '-'}\n` + `Diff of "variables":\n` + `${(0, _jestDiff.default)(queryMockConfig.variables, variables)}\n\n`);
});
}
const otherMockedQueryNames = Object.keys(queryMock._queries).filter(queryMockName => operationName !== queryMockName);
if (!otherMockedQueryNames.length) {
return mockedQueriesMessageArray;
}
mockedQueriesMessageArray.push(`=== ${queryMock._queries[operationName] ? 'Other' : 'All'} mocked queries ===\n`);
otherMockedQueryNames.forEach(queryName => {
mockedQueriesMessageArray.push(`- "${queryName || 'unknown'}"\n`);
});
mockedQueriesMessageArray.push(`\n`);
return mockedQueriesMessageArray;
}
function printVariablesDoesNotMatchError(queryMockConfig, shouldMatchOnVariables, operationName, variables) {
if (shouldMatchOnVariables) {
let errorStr = `Variables do not match for operation "${operationName || 'unknown'}"`;
if (queryMockConfig.matchVariables) {
throw new Error(`${errorStr} due to custom "matchOnVariables" function`);
} else {
throw new Error(`${errorStr}.\n\nVariables in request VS mocked variables: \n${(0, _jestDiff.default)(variables, queryMockConfig.variables)}`);
}
}
}