import { ExposedInstanceDependencies } from '../../common'; import { Metadata } from '../get-bundle-info'; import { getMFEHasCompatibleLaunchDarklyVersion } from '../get-mfe-has-compatible-launchdarkly-version'; describe(`[web-components] ${getMFEHasCompatibleLaunchDarklyVersion.name}`, () => { const version = '1.0.0'; let metadata: Pick; let exposedInstanceDependencies: ExposedInstanceDependencies; beforeEach(() => { metadata = { bundledWith: { 'launchdarkly-js-client-sdk': version }, }; }); function itReturns(value: boolean | undefined) { test(`return ${value}`, () => { expect(subject()).toBe(value); }); } const subject = () => getMFEHasCompatibleLaunchDarklyVersion(metadata.bundledWith, exposedInstanceDependencies); describe('when host and MFE use same LaunchDarkly version', () => { beforeEach(() => (exposedInstanceDependencies = { launchDarkly: { version } })); itReturns(true); }); describe('when host uses different LaunchDarkly version', () => { beforeEach(() => (exposedInstanceDependencies = { launchDarkly: { version: '1.0.1' } })); itReturns(false); }); describe('when host does not use LaunchDarkly', () => { beforeEach(() => (exposedInstanceDependencies = {})); itReturns(undefined); }); describe('when MFE does not use LaunchDarkly', () => { beforeEach(() => (metadata.bundledWith = {})); itReturns(undefined); }); describe('when metadata omits "bundledWith"', () => { beforeEach(() => delete metadata.bundledWith); itReturns(undefined); }); });