UNPKG

jest-launchdarkly-mock

Version:

Easily unit test LaunchDarkly feature flagged components with jest

81 lines (80 loc) 3.53 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.resetLDMocks = exports.mockFlags = exports.ldClientMock = void 0; jest.mock('launchdarkly-react-client-sdk', function () { var camelCaseKeys = jest.requireActual('launchdarkly-react-client-sdk').camelCaseKeys; return { asyncWithLDProvider: jest.fn(), camelCaseKeys: camelCaseKeys, LDProvider: jest.fn(), useLDClient: jest.fn(), useFlags: jest.fn(function () { return ({}); }), useLDClientError: jest.fn(), withLDConsumer: jest.fn(), withLDProvider: jest.fn(), }; }); var lodash_kebabcase_1 = __importDefault(require("lodash.kebabcase")); var lodash_camelcase_1 = __importDefault(require("lodash.camelcase")); var lodash_snakecase_1 = __importDefault(require("lodash.snakecase")); var launchdarkly_react_client_sdk_1 = require("launchdarkly-react-client-sdk"); var mockAsyncWithLDProvider = launchdarkly_react_client_sdk_1.asyncWithLDProvider; var mockLDProvider = launchdarkly_react_client_sdk_1.LDProvider; var mockUseFlags = launchdarkly_react_client_sdk_1.useFlags; var mockUseLDClient = launchdarkly_react_client_sdk_1.useLDClient; var mockWithLDConsumer = launchdarkly_react_client_sdk_1.withLDConsumer; var mockWithLDProvider = launchdarkly_react_client_sdk_1.withLDProvider; exports.ldClientMock = { track: jest.fn(), identify: jest.fn(), allFlags: jest.fn(), close: jest.fn(), flush: jest.fn(), getContext: jest.fn(), off: jest.fn(), on: jest.fn(), setStreaming: jest.fn(), variation: jest.fn(), variationDetail: jest.fn(), waitForInitialization: jest.fn(), waitUntilGoalsReady: jest.fn(), waitUntilReady: jest.fn(), }; /* eslint-disable @typescript-eslint/no-explicit-any */ mockAsyncWithLDProvider.mockImplementation(function () { return Promise.resolve(function (props) { return props.children; }); }); mockLDProvider.mockImplementation(function (props) { return props.children; }); mockUseLDClient.mockImplementation(function () { return exports.ldClientMock; }); mockWithLDConsumer.mockImplementation(function () { return function (children) { return children; }; }); mockWithLDProvider.mockImplementation(function () { return function (children) { return children; }; }); /* eslint-enable @typescript-eslint/no-explicit-any */ var mockFlags = function (flags) { mockUseFlags.mockImplementation(function () { var result = {}; Object.keys(flags).forEach(function (k) { var kebab = (0, lodash_kebabcase_1.default)(k); var camel = (0, lodash_camelcase_1.default)(k); var snake = (0, lodash_snakecase_1.default)(k); result[kebab] = flags[k]; result[camel] = flags[k]; result[snake] = flags[k]; result[k] = flags[k]; }); return result; }); }; exports.mockFlags = mockFlags; var resetLDMocks = function () { mockUseFlags.mockImplementation(function () { return ({}); }); Object.keys(exports.ldClientMock).forEach(function (k) { // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore var jestMockFunction = exports.ldClientMock[k]; if (typeof jestMockFunction.mock !== 'undefined') { jestMockFunction.mockReset(); } }); }; exports.resetLDMocks = resetLDMocks;