@trackunit/react-core-contexts-test 1.17.53-alpha-df0e8d549b3.0 → 1.17.53

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.cjs.js CHANGED
@@ -30,6 +30,7 @@ exports.mockAnalyticsContext = index.mockAnalyticsContext;
30
30
  exports.mockAssetSortingContext = index.mockAssetSortingContext;
31
31
  exports.mockCurrentUserContext = index.mockCurrentUserContext;
32
32
  exports.mockEnvironmentContext = index.mockEnvironmentContext;
33
+ exports.mockFeatureFlagContext = index.mockFeatureFlagContext;
33
34
  exports.mockFilterBarContext = index.mockFilterBarContext;
34
35
  exports.mockNavigationContext = index.mockNavigationContext;
35
36
  exports.mockOemBrandingContext = index.mockOemBrandingContext;
package/index.cjs2.js CHANGED
@@ -120,6 +120,10 @@ const mockEnvironmentContext = {
120
120
  reportAccessClientId: "",
121
121
  };
122
122
 
123
+ const mockFeatureFlagContext = {
124
+ flags: [],
125
+ };
126
+
123
127
  /**
124
128
  * This is a mock for the FilterBarContext.
125
129
  *
@@ -13779,6 +13783,7 @@ class TrackunitProvidersMockBuilder {
13779
13783
  this.selectedCurrentUserContext = mockCurrentUserContext;
13780
13784
  this.selectedCurrentUserPreferenceContext = mockCurrentUserPreferenceContext;
13781
13785
  this.selectedAnalyticsContext = mockAnalyticsContext;
13786
+ this.selectedFeatureFlagsContext = mockFeatureFlagContext;
13782
13787
  this.selectedOemBrandingContext = mockOemBrandingContext;
13783
13788
  this.selectedUserSubscriptionContext = mockUserSubscriptionContext;
13784
13789
  this.selectedFilterBarValues = mockFilterBarContext;
@@ -13814,6 +13819,38 @@ class TrackunitProvidersMockBuilder {
13814
13819
  this.selectedAnalyticsContext = { ...mockAnalyticsContext, ...analyticsContext };
13815
13820
  return this;
13816
13821
  }
13822
+ /**
13823
+ * Use this to pass in enabled feature flags.
13824
+ * Defaults to mockFeatureFlagContext (no enabled flags).
13825
+ *
13826
+ * This context is used by the useFeatureFlags hook from lib "@trackunit/react-core-hooks"
13827
+ *
13828
+ * Pass a bare string to enable a flag (`state: true`), or a `{ key, state }`
13829
+ * object to set an explicit state. The latter is required to represent a flag
13830
+ * that is present but disabled (`state: false`) — needed when a consumer reads
13831
+ * the flag with `defaultValueWhenMissing: true`, where mere absence resolves
13832
+ * to enabled rather than disabled.
13833
+ *
13834
+ * @see mockFeatureFlagContext
13835
+ * @example
13836
+ * ...
13837
+ * it("should allow render", async () => {
13838
+ * await trackunitProviders().featureFlags(["yourFlag"]).render(<YourTestComponent data-testid="yourTestId" />);
13839
+ * expect(screen.getByTestId("yourTestId")).toBeInTheDocument();
13840
+ * });
13841
+ * ...
13842
+ * @example
13843
+ * // Explicitly disable a flag (present but off):
13844
+ * await trackunitProviders().featureFlags([{ key: "yourFlag", state: false }]).render(...);
13845
+ * @param flags - The feature flags to set. Strings enable the flag; `{ key, state }` objects set an explicit state.
13846
+ * @returns { TrackunitProvidersMockBuilder } - The builder.
13847
+ */
13848
+ featureFlags(flags) {
13849
+ this.selectedFeatureFlagsContext = {
13850
+ flags: flags.map(flag => (typeof flag === "string" ? { key: flag, state: true } : flag)),
13851
+ };
13852
+ return this;
13853
+ }
13817
13854
  /**
13818
13855
  * Use this Environment Context.
13819
13856
  * Defaults to mockEnvironmentContext.
@@ -14298,7 +14335,7 @@ class TrackunitProvidersMockBuilder {
14298
14335
  * @param testChildren - the child element being tested.
14299
14336
  */
14300
14337
  getMockedCompositionRoot(testChildren) {
14301
- return (jsxRuntime.jsx(reactCoreContextsApi.ErrorHandlingContextProvider, { value: this.selectedErrorHandler, children: jsxRuntime.jsx(reactCoreContextsApi.CurrentUserProvider, { value: this.selectedCurrentUserContext, children: jsxRuntime.jsx(reactCoreContextsApi.AnalyticsContext.Provider, { value: this.selectedAnalyticsContext, children: jsxRuntime.jsx(reactCoreContextsApi.UserSubscriptionProvider, { value: this.selectedUserSubscriptionContext, children: jsxRuntime.jsx(reactCoreContextsApi.OemBrandingContextProvider, { value: this.selectedOemBrandingContext, children: jsxRuntime.jsx(reactCoreContextsApi.TokenProvider, { value: this.selectedTokenContext, children: jsxRuntime.jsx(reactCoreContextsApi.ToastProvider, { value: this.selectedToastContext, children: jsxRuntime.jsx(reactCoreContextsApi.ConfirmationDialogProvider, { value: this.selectedConfirmationDialogContext, children: jsxRuntime.jsx(reactCoreContextsApi.FilterBarProvider, { value: this.selectedFilterBarValues, children: jsxRuntime.jsx(reactCoreContextsApi.ExportDataContext.Provider, { value: this.selectedExportDataContext, children: jsxRuntime.jsx(reactCoreContextsApi.AssetSortingProvider, { value: this.selectedAssetSortingContext, children: jsxRuntime.jsx(ApolloMockedProviderWithError, { addTypename: false, mocks: this.selectedApolloMocks, children: jsxRuntime.jsx(reactCoreContextsApi.NavigationContextProvider, { value: this.selectedNavigationContext, children: jsxRuntime.jsx(reactCoreContextsApi.CurrentUserPreferenceProvider, { value: this.selectedCurrentUserPreferenceContext, children: jsxRuntime.jsx(reactCoreContextsApi.EnvironmentContextProvider, { value: this.selectedEnvironmentContext, children: jsxRuntime.jsx(reactCoreContextsApi.ModalDialogContextProvider, { value: this.selectedModalDialogContext, children: jsxRuntime.jsx(reactCoreContextsApi.TimeRangeProvider, { value: this.selectedTimeRangeContext, children: jsxRuntime.jsx(reactCoreContextsApi.WidgetConfigProvider, { value: this.selectedWidgetConfigContext, children: jsxRuntime.jsx(reactCoreContextsApi.GeolocationProvider, { value: this.selectedGeolocationContext, children: testChildren }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }));
14338
+ return (jsxRuntime.jsx(reactCoreContextsApi.ErrorHandlingContextProvider, { value: this.selectedErrorHandler, children: jsxRuntime.jsx(reactCoreContextsApi.CurrentUserProvider, { value: this.selectedCurrentUserContext, children: jsxRuntime.jsx(reactCoreContextsApi.AnalyticsContext.Provider, { value: this.selectedAnalyticsContext, children: jsxRuntime.jsx(reactCoreContextsApi.UserSubscriptionProvider, { value: this.selectedUserSubscriptionContext, children: jsxRuntime.jsx(reactCoreContextsApi.OemBrandingContextProvider, { value: this.selectedOemBrandingContext, children: jsxRuntime.jsx(reactCoreContextsApi.TokenProvider, { value: this.selectedTokenContext, children: jsxRuntime.jsx(reactCoreContextsApi.ToastProvider, { value: this.selectedToastContext, children: jsxRuntime.jsx(reactCoreContextsApi.ConfirmationDialogProvider, { value: this.selectedConfirmationDialogContext, children: jsxRuntime.jsx(reactCoreContextsApi.FilterBarProvider, { value: this.selectedFilterBarValues, children: jsxRuntime.jsx(reactCoreContextsApi.ExportDataContext.Provider, { value: this.selectedExportDataContext, children: jsxRuntime.jsx(reactCoreContextsApi.AssetSortingProvider, { value: this.selectedAssetSortingContext, children: jsxRuntime.jsx(ApolloMockedProviderWithError, { addTypename: false, mocks: this.selectedApolloMocks, children: jsxRuntime.jsx(reactCoreContextsApi.NavigationContextProvider, { value: this.selectedNavigationContext, children: jsxRuntime.jsx(reactCoreContextsApi.CurrentUserPreferenceProvider, { value: this.selectedCurrentUserPreferenceContext, children: jsxRuntime.jsx(reactCoreContextsApi.EnvironmentContextProvider, { value: this.selectedEnvironmentContext, children: jsxRuntime.jsx(reactCoreContextsApi.ModalDialogContextProvider, { value: this.selectedModalDialogContext, children: jsxRuntime.jsx(reactCoreContextsApi.TimeRangeProvider, { value: this.selectedTimeRangeContext, children: jsxRuntime.jsx(reactCoreContextsApi.WidgetConfigProvider, { value: this.selectedWidgetConfigContext, children: jsxRuntime.jsx(reactCoreContextsApi.GeolocationProvider, { value: this.selectedGeolocationContext, children: jsxRuntime.jsx(reactCoreContextsApi.FeatureFlagContextProvider, { value: this.selectedFeatureFlagsContext, children: testChildren }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }));
14302
14339
  }
14303
14340
  getMockedCompositionRootWithRouter(testChildren) {
14304
14341
  const childrenWithRouter = (jsxRuntime.jsx(RouterContainer, { addTestRootContainer: true, rootRoute: this.selectedRootRoute, selectedRouterProps: this.selectedRouterProps, children: testChildren }));
@@ -14624,6 +14661,7 @@ exports.mockAnalyticsContext = mockAnalyticsContext;
14624
14661
  exports.mockAssetSortingContext = mockAssetSortingContext;
14625
14662
  exports.mockCurrentUserContext = mockCurrentUserContext;
14626
14663
  exports.mockEnvironmentContext = mockEnvironmentContext;
14664
+ exports.mockFeatureFlagContext = mockFeatureFlagContext;
14627
14665
  exports.mockFilterBarContext = mockFilterBarContext;
14628
14666
  exports.mockNavigationContext = mockNavigationContext;
14629
14667
  exports.mockOemBrandingContext = mockOemBrandingContext;
package/index.esm.js CHANGED
@@ -1,4 +1,4 @@
1
- export { D as Debugger, T as TrackunitProvidersMockBuilder, n as doNothing, f as flushPromises, b as flushPromisesInAct, l as mergeDeepVars, m as mockAnalyticsContext, c as mockAssetSortingContext, d as mockCurrentUserContext, e as mockEnvironmentContext, g as mockFilterBarContext, h as mockNavigationContext, i as mockOemBrandingContext, j as mockToastContext, k as mockUserSubscriptionContext, q as queryFor, o as queryForHook, t as trackunitProviders, u as useDebugger, v as validateIrisApp } from './index.esm2.js';
1
+ export { D as Debugger, T as TrackunitProvidersMockBuilder, o as doNothing, f as flushPromises, b as flushPromisesInAct, n as mergeDeepVars, m as mockAnalyticsContext, c as mockAssetSortingContext, d as mockCurrentUserContext, e as mockEnvironmentContext, g as mockFeatureFlagContext, h as mockFilterBarContext, i as mockNavigationContext, j as mockOemBrandingContext, k as mockToastContext, l as mockUserSubscriptionContext, q as queryFor, p as queryForHook, t as trackunitProviders, u as useDebugger, v as validateIrisApp } from './index.esm2.js';
2
2
  import '@trackunit/iris-app-runtime-core-api';
3
3
  import 'react/jsx-runtime';
4
4
  import 'react';
package/index.esm2.js CHANGED
@@ -5,7 +5,7 @@ import React__default, { createContext, useContext, Children, createElement, isV
5
5
  import * as DeprecatedReactTestUtils from 'react-dom/test-utils';
6
6
  import ReactDOM from 'react-dom';
7
7
  import * as ReactDOMClient from 'react-dom/client';
8
- import { ErrorHandlingContextProvider, CurrentUserProvider, AnalyticsContext, UserSubscriptionProvider, OemBrandingContextProvider, TokenProvider, ToastProvider, ConfirmationDialogProvider, FilterBarProvider, ExportDataContext, AssetSortingProvider, NavigationContextProvider, CurrentUserPreferenceProvider, EnvironmentContextProvider, ModalDialogContextProvider, TimeRangeProvider, WidgetConfigProvider, GeolocationProvider } from '@trackunit/react-core-contexts-api';
8
+ import { ErrorHandlingContextProvider, CurrentUserProvider, AnalyticsContext, UserSubscriptionProvider, OemBrandingContextProvider, TokenProvider, ToastProvider, ConfirmationDialogProvider, FilterBarProvider, ExportDataContext, AssetSortingProvider, NavigationContextProvider, CurrentUserPreferenceProvider, EnvironmentContextProvider, ModalDialogContextProvider, TimeRangeProvider, WidgetConfigProvider, GeolocationProvider, FeatureFlagContextProvider } from '@trackunit/react-core-contexts-api';
9
9
  import { omit } from 'es-toolkit';
10
10
  import { ApolloLink } from '@apollo/client';
11
11
  import { loadDevMessages, loadErrorMessages } from '@apollo/client/dev';
@@ -98,6 +98,10 @@ const mockEnvironmentContext = {
98
98
  reportAccessClientId: "",
99
99
  };
100
100
 
101
+ const mockFeatureFlagContext = {
102
+ flags: [],
103
+ };
104
+
101
105
  /**
102
106
  * This is a mock for the FilterBarContext.
103
107
  *
@@ -13757,6 +13761,7 @@ class TrackunitProvidersMockBuilder {
13757
13761
  this.selectedCurrentUserContext = mockCurrentUserContext;
13758
13762
  this.selectedCurrentUserPreferenceContext = mockCurrentUserPreferenceContext;
13759
13763
  this.selectedAnalyticsContext = mockAnalyticsContext;
13764
+ this.selectedFeatureFlagsContext = mockFeatureFlagContext;
13760
13765
  this.selectedOemBrandingContext = mockOemBrandingContext;
13761
13766
  this.selectedUserSubscriptionContext = mockUserSubscriptionContext;
13762
13767
  this.selectedFilterBarValues = mockFilterBarContext;
@@ -13792,6 +13797,38 @@ class TrackunitProvidersMockBuilder {
13792
13797
  this.selectedAnalyticsContext = { ...mockAnalyticsContext, ...analyticsContext };
13793
13798
  return this;
13794
13799
  }
13800
+ /**
13801
+ * Use this to pass in enabled feature flags.
13802
+ * Defaults to mockFeatureFlagContext (no enabled flags).
13803
+ *
13804
+ * This context is used by the useFeatureFlags hook from lib "@trackunit/react-core-hooks"
13805
+ *
13806
+ * Pass a bare string to enable a flag (`state: true`), or a `{ key, state }`
13807
+ * object to set an explicit state. The latter is required to represent a flag
13808
+ * that is present but disabled (`state: false`) — needed when a consumer reads
13809
+ * the flag with `defaultValueWhenMissing: true`, where mere absence resolves
13810
+ * to enabled rather than disabled.
13811
+ *
13812
+ * @see mockFeatureFlagContext
13813
+ * @example
13814
+ * ...
13815
+ * it("should allow render", async () => {
13816
+ * await trackunitProviders().featureFlags(["yourFlag"]).render(<YourTestComponent data-testid="yourTestId" />);
13817
+ * expect(screen.getByTestId("yourTestId")).toBeInTheDocument();
13818
+ * });
13819
+ * ...
13820
+ * @example
13821
+ * // Explicitly disable a flag (present but off):
13822
+ * await trackunitProviders().featureFlags([{ key: "yourFlag", state: false }]).render(...);
13823
+ * @param flags - The feature flags to set. Strings enable the flag; `{ key, state }` objects set an explicit state.
13824
+ * @returns { TrackunitProvidersMockBuilder } - The builder.
13825
+ */
13826
+ featureFlags(flags) {
13827
+ this.selectedFeatureFlagsContext = {
13828
+ flags: flags.map(flag => (typeof flag === "string" ? { key: flag, state: true } : flag)),
13829
+ };
13830
+ return this;
13831
+ }
13795
13832
  /**
13796
13833
  * Use this Environment Context.
13797
13834
  * Defaults to mockEnvironmentContext.
@@ -14276,7 +14313,7 @@ class TrackunitProvidersMockBuilder {
14276
14313
  * @param testChildren - the child element being tested.
14277
14314
  */
14278
14315
  getMockedCompositionRoot(testChildren) {
14279
- return (jsx(ErrorHandlingContextProvider, { value: this.selectedErrorHandler, children: jsx(CurrentUserProvider, { value: this.selectedCurrentUserContext, children: jsx(AnalyticsContext.Provider, { value: this.selectedAnalyticsContext, children: jsx(UserSubscriptionProvider, { value: this.selectedUserSubscriptionContext, children: jsx(OemBrandingContextProvider, { value: this.selectedOemBrandingContext, children: jsx(TokenProvider, { value: this.selectedTokenContext, children: jsx(ToastProvider, { value: this.selectedToastContext, children: jsx(ConfirmationDialogProvider, { value: this.selectedConfirmationDialogContext, children: jsx(FilterBarProvider, { value: this.selectedFilterBarValues, children: jsx(ExportDataContext.Provider, { value: this.selectedExportDataContext, children: jsx(AssetSortingProvider, { value: this.selectedAssetSortingContext, children: jsx(ApolloMockedProviderWithError, { addTypename: false, mocks: this.selectedApolloMocks, children: jsx(NavigationContextProvider, { value: this.selectedNavigationContext, children: jsx(CurrentUserPreferenceProvider, { value: this.selectedCurrentUserPreferenceContext, children: jsx(EnvironmentContextProvider, { value: this.selectedEnvironmentContext, children: jsx(ModalDialogContextProvider, { value: this.selectedModalDialogContext, children: jsx(TimeRangeProvider, { value: this.selectedTimeRangeContext, children: jsx(WidgetConfigProvider, { value: this.selectedWidgetConfigContext, children: jsx(GeolocationProvider, { value: this.selectedGeolocationContext, children: testChildren }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }));
14316
+ return (jsx(ErrorHandlingContextProvider, { value: this.selectedErrorHandler, children: jsx(CurrentUserProvider, { value: this.selectedCurrentUserContext, children: jsx(AnalyticsContext.Provider, { value: this.selectedAnalyticsContext, children: jsx(UserSubscriptionProvider, { value: this.selectedUserSubscriptionContext, children: jsx(OemBrandingContextProvider, { value: this.selectedOemBrandingContext, children: jsx(TokenProvider, { value: this.selectedTokenContext, children: jsx(ToastProvider, { value: this.selectedToastContext, children: jsx(ConfirmationDialogProvider, { value: this.selectedConfirmationDialogContext, children: jsx(FilterBarProvider, { value: this.selectedFilterBarValues, children: jsx(ExportDataContext.Provider, { value: this.selectedExportDataContext, children: jsx(AssetSortingProvider, { value: this.selectedAssetSortingContext, children: jsx(ApolloMockedProviderWithError, { addTypename: false, mocks: this.selectedApolloMocks, children: jsx(NavigationContextProvider, { value: this.selectedNavigationContext, children: jsx(CurrentUserPreferenceProvider, { value: this.selectedCurrentUserPreferenceContext, children: jsx(EnvironmentContextProvider, { value: this.selectedEnvironmentContext, children: jsx(ModalDialogContextProvider, { value: this.selectedModalDialogContext, children: jsx(TimeRangeProvider, { value: this.selectedTimeRangeContext, children: jsx(WidgetConfigProvider, { value: this.selectedWidgetConfigContext, children: jsx(GeolocationProvider, { value: this.selectedGeolocationContext, children: jsx(FeatureFlagContextProvider, { value: this.selectedFeatureFlagsContext, children: testChildren }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }));
14280
14317
  }
14281
14318
  getMockedCompositionRootWithRouter(testChildren) {
14282
14319
  const childrenWithRouter = (jsx(RouterContainer, { addTestRootContainer: true, rootRoute: this.selectedRootRoute, selectedRouterProps: this.selectedRouterProps, children: testChildren }));
@@ -14591,4 +14628,4 @@ const validateIrisApp = async (irisApp) => {
14591
14628
  return null;
14592
14629
  };
14593
14630
 
14594
- export { Debugger as D, TrackunitProvidersMockBuilder as T, act as a, flushPromisesInAct as b, mockAssetSortingContext as c, mockCurrentUserContext as d, mockEnvironmentContext as e, flushPromises as f, mockFilterBarContext as g, mockNavigationContext as h, mockOemBrandingContext as i, mockToastContext as j, mockUserSubscriptionContext as k, mergeDeepVars as l, mockAnalyticsContext as m, doNothing as n, queryForHook as o, queryFor as q, renderHook as r, trackunitProviders as t, useDebugger as u, validateIrisApp as v };
14631
+ export { Debugger as D, TrackunitProvidersMockBuilder as T, act as a, flushPromisesInAct as b, mockAssetSortingContext as c, mockCurrentUserContext as d, mockEnvironmentContext as e, flushPromises as f, mockFeatureFlagContext as g, mockFilterBarContext as h, mockNavigationContext as i, mockOemBrandingContext as j, mockToastContext as k, mockUserSubscriptionContext as l, mockAnalyticsContext as m, mergeDeepVars as n, doNothing as o, queryForHook as p, queryFor as q, renderHook as r, trackunitProviders as t, useDebugger as u, validateIrisApp as v };
package/package.json CHANGED
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "name": "@trackunit/react-core-contexts-test",
3
- "version": "1.17.53-alpha-df0e8d549b3.0",
3
+ "version": "1.17.53",
4
4
  "repository": "https://github.com/Trackunit/manager",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "engines": {
7
7
  "node": ">=24.x"
8
8
  },
9
9
  "dependencies": {
10
- "@trackunit/shared-utils": "1.15.48-alpha-df0e8d549b3.0",
10
+ "@trackunit/shared-utils": "1.15.48",
11
11
  "@tanstack/router-core": "1.114.29",
12
- "@trackunit/iris-app-runtime-core-api": "1.16.53-alpha-df0e8d549b3.0",
13
- "@trackunit/react-core-contexts-api": "1.17.53-alpha-df0e8d549b3.0",
12
+ "@trackunit/iris-app-runtime-core-api": "1.16.53",
13
+ "@trackunit/react-core-contexts-api": "1.17.53",
14
14
  "es-toolkit": "^1.39.10"
15
15
  },
16
16
  "peerDependencies": {
@@ -1,7 +1,7 @@
1
1
  import { MockedResponse } from "@apollo/client/testing";
2
2
  import { AnyRoute, RegisteredRouter } from "@tanstack/react-router";
3
3
  import { RenderResult } from "@testing-library/react";
4
- import { AnalyticsRuntimeApiSync, AssetSortingState, ConfirmationDialogRuntimeApi, CurrentUserPreferenceState, CurrentUserState, EnvironmentState, ErrorHandlingContextValue, FilterBarContext, ModalDialogRuntimeApi, NavigationRuntimeApi, OemBrandingRuntimeApi, TimeRangeContext, TokenContext, UserSubscription, WidgetConfigContext } from "@trackunit/iris-app-runtime-core-api";
4
+ import { AnalyticsRuntimeApiSync, AssetSortingState, ConfirmationDialogRuntimeApi, CurrentUserPreferenceState, CurrentUserState, EnvironmentState, ErrorHandlingContextValue, FeatureFlagState, FilterBarContext, ModalDialogRuntimeApi, NavigationRuntimeApi, OemBrandingRuntimeApi, TimeRangeContext, TokenContext, UserSubscription, WidgetConfigContext } from "@trackunit/iris-app-runtime-core-api";
5
5
  import { ExportDataContextState, GeolocationContextValue, ToastContextValue } from "@trackunit/react-core-contexts-api";
6
6
  import { ReactElement, ReactNode } from "react";
7
7
  import { MemoryRouterProps } from "./utils/routingUtils";
@@ -31,6 +31,7 @@ export declare class TrackunitProvidersMockBuilder<TRouterTree extends AnyRoute>
31
31
  protected selectedCurrentUserContext: CurrentUserState;
32
32
  protected selectedCurrentUserPreferenceContext: CurrentUserPreferenceState;
33
33
  protected selectedAnalyticsContext: AnalyticsRuntimeApiSync<Record<string, never>>;
34
+ protected selectedFeatureFlagsContext: FeatureFlagState;
34
35
  protected selectedOemBrandingContext: OemBrandingRuntimeApi;
35
36
  protected selectedUserSubscriptionContext: UserSubscription;
36
37
  protected selectedFilterBarValues: FilterBarContext;
@@ -61,6 +62,36 @@ export declare class TrackunitProvidersMockBuilder<TRouterTree extends AnyRoute>
61
62
  * @returns { TrackunitProvidersMockBuilder } - The builder.
62
63
  */
63
64
  analytics(analyticsContext: Partial<AnalyticsRuntimeApiSync<any>>): this;
65
+ /**
66
+ * Use this to pass in enabled feature flags.
67
+ * Defaults to mockFeatureFlagContext (no enabled flags).
68
+ *
69
+ * This context is used by the useFeatureFlags hook from lib "@trackunit/react-core-hooks"
70
+ *
71
+ * Pass a bare string to enable a flag (`state: true`), or a `{ key, state }`
72
+ * object to set an explicit state. The latter is required to represent a flag
73
+ * that is present but disabled (`state: false`) — needed when a consumer reads
74
+ * the flag with `defaultValueWhenMissing: true`, where mere absence resolves
75
+ * to enabled rather than disabled.
76
+ *
77
+ * @see mockFeatureFlagContext
78
+ * @example
79
+ * ...
80
+ * it("should allow render", async () => {
81
+ * await trackunitProviders().featureFlags(["yourFlag"]).render(<YourTestComponent data-testid="yourTestId" />);
82
+ * expect(screen.getByTestId("yourTestId")).toBeInTheDocument();
83
+ * });
84
+ * ...
85
+ * @example
86
+ * // Explicitly disable a flag (present but off):
87
+ * await trackunitProviders().featureFlags([{ key: "yourFlag", state: false }]).render(...);
88
+ * @param flags - The feature flags to set. Strings enable the flag; `{ key, state }` objects set an explicit state.
89
+ * @returns { TrackunitProvidersMockBuilder } - The builder.
90
+ */
91
+ featureFlags(flags: Array<string | {
92
+ key: string;
93
+ state: boolean;
94
+ }>): this;
64
95
  /**
65
96
  * Use this Environment Context.
66
97
  * Defaults to mockEnvironmentContext.
package/src/index.d.ts CHANGED
@@ -2,6 +2,7 @@ export * from "./mocks/mockAnalyticsContext";
2
2
  export * from "./mocks/mockAssetSortingContext";
3
3
  export * from "./mocks/mockCurrentUserContext";
4
4
  export * from "./mocks/mockEnvironmentContext";
5
+ export * from "./mocks/mockFeatureFlagContext";
5
6
  export * from "./mocks/mockFilterBarContext";
6
7
  export * from "./mocks/mockNavigationContext";
7
8
  export * from "./mocks/mockOemBrandingContext";
@@ -0,0 +1,2 @@
1
+ import { FeatureFlagState } from "@trackunit/iris-app-runtime-core-api";
2
+ export declare const mockFeatureFlagContext: FeatureFlagState;