@dynatrace/strato-components-testing 1.1.0 → 1.3.0

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/README.md CHANGED
@@ -21,7 +21,11 @@ module.exports = {
21
21
  // your config
22
22
  ...
23
23
  // your per test setup
24
- setupFilesAfterEnv: ["./jest.setup-env.ts"],
24
+ setupFilesAfterEnv: [
25
+ '@dynatrace/strato-components-testing/jest/setup',
26
+ // your per test setup
27
+ "./jest.setup-env.ts"
28
+ ],
25
29
  moduleNameMapper: {
26
30
  ...stratoPreset.moduleNameMapper,
27
31
  // your other moduleNameMappers
@@ -31,24 +35,9 @@ module.exports = {
31
35
 
32
36
  ### Setup
33
37
 
34
- It also comes with a jest setup which will include mocks needed to test the `@dynatrace/strato-components` package. Call the setup function in your own setup file like this in `./jest.setup-env.ts`:
35
-
36
- ```ts
37
- import { setup, clear } from '@dynatrace/strato-components-testing/jest';
38
- import '@testing-library/jest-dom';
39
-
40
- beforeAll(() => {
41
- setup();
42
- // your other mock setups
43
- });
44
-
45
- afterAll(() => {
46
- clear();
47
- // your other mock clears
48
- });
49
- ```
38
+ The setup is handled in `@dynatrace/strato-geo-testing/jest/setup`, which you configured above.
50
39
 
51
- You can also setup or clear individual mocks:
40
+ But you can also setup or clear individual mocks:
52
41
 
53
42
  ```ts
54
43
  import {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/jest/custom-render.tsx"],
4
- "sourcesContent": ["/* eslint-disable no-restricted-imports */\nimport {\n render as rtlRender,\n RenderOptions,\n RenderResult,\n} from '@testing-library/react';\nimport React, { PropsWithChildren } from 'react';\nimport { IntlProvider } from 'react-intl';\n\ninterface AllProvidersProps {\n locale?: string;\n timeZone?: string;\n}\n\n/** The wrapper component to always have the providers in place */\nconst AllProviders = ({\n children,\n locale = 'en',\n timeZone = 'UTC',\n}: PropsWithChildren<AllProvidersProps>) => {\n return (\n <IntlProvider locale={locale} timeZone={timeZone}>\n {children}\n </IntlProvider>\n );\n};\n\nexport type RenderWithIntlOptions = {\n locale?: string;\n timeZone?: string;\n} & Omit<RenderOptions, 'queries'>;\n\nconst DefaultWrapper = (props: PropsWithChildren<unknown>) => (\n // eslint-disable-next-line react/jsx-no-useless-fragment\n <>{props.children}</>\n);\n\n/** Wrapper to render components with all required providers */\nexport const customRender = (\n ui: React.ReactElement,\n {\n locale = 'en',\n timeZone = 'UTC',\n wrapper: CustomWrapper = DefaultWrapper,\n ...renderOptions\n }: RenderWithIntlOptions = {},\n): RenderResult =>\n rtlRender(ui, {\n wrapper: ({ children }) => (\n <AllProviders locale={locale} timeZone={timeZone}>\n <CustomWrapper>{children}</CustomWrapper>\n </AllProviders>\n ),\n ...renderOptions,\n });\n"],
5
- "mappings": "AACA;AAAA,EACE,UAAU;AAAA,OAGL;AACP,OAAO,WAAkC;AACzC,SAAS,oBAAoB;AAQ7B,MAAM,eAAe,CAAC;AAAA,EACpB;AAAA,EACA,SAAS;AAAA,EACT,WAAW;AACb,MAA4C;AAC1C,SACE,oCAAC,gBAAa,QAAgB,YAC3B,QACH;AAEJ;AAOA,MAAM,iBAAiB,CAAC;AAAA;AAAA,EAEtB,0DAAG,MAAM,QAAS;AAAA;AAIb,MAAM,eAAe,CAC1B,IACA;AAAA,EACE,SAAS;AAAA,EACT,WAAW;AAAA,EACX,SAAS,gBAAgB;AAAA,EACzB,GAAG;AACL,IAA2B,CAAC,MAE5B,UAAU,IAAI;AAAA,EACZ,SAAS,CAAC,EAAE,SAAS,MACnB,oCAAC,gBAAa,QAAgB,YAC5B,oCAAC,qBAAe,QAAS,CAC3B;AAAA,EAEF,GAAG;AACL,CAAC;",
4
+ "sourcesContent": ["/* eslint-disable no-restricted-imports */\nimport {\n render as rtlRender,\n RenderOptions,\n RenderResult,\n} from '@testing-library/react';\nimport React, { PropsWithChildren } from 'react';\nimport { IntlProvider } from 'react-intl';\n\ninterface AllProvidersProps {\n locale?: string;\n timeZone?: string;\n}\n\n/** The wrapper component to always have the providers in place */\nconst AllProviders = ({\n children,\n locale = 'en',\n timeZone = 'UTC',\n}: PropsWithChildren<AllProvidersProps>) => {\n return (\n <IntlProvider locale={locale} timeZone={timeZone}>\n {children}\n </IntlProvider>\n );\n};\n\n/**\n * @public\n */\nexport type RenderWithIntlOptions = {\n locale?: string;\n timeZone?: string;\n} & Omit<RenderOptions, 'queries'>;\n\nconst DefaultWrapper = (props: PropsWithChildren<unknown>) => (\n // eslint-disable-next-line react/jsx-no-useless-fragment\n <>{props.children}</>\n);\n\n/**\n * Wrapper to render components with all required providers\n * @public\n */\nexport const customRender = (\n ui: React.ReactElement,\n {\n locale = 'en',\n timeZone = 'UTC',\n wrapper: CustomWrapper = DefaultWrapper,\n ...renderOptions\n }: RenderWithIntlOptions = {},\n): RenderResult =>\n rtlRender(ui, {\n wrapper: ({ children }) => (\n <AllProviders locale={locale} timeZone={timeZone}>\n <CustomWrapper>{children}</CustomWrapper>\n </AllProviders>\n ),\n ...renderOptions,\n });\n"],
5
+ "mappings": "AACA;AAAA,EACE,UAAU;AAAA,OAGL;AACP,OAAO,WAAkC;AACzC,SAAS,oBAAoB;AAQ7B,MAAM,eAAe,CAAC;AAAA,EACpB;AAAA,EACA,SAAS;AAAA,EACT,WAAW;AACb,MAA4C;AAC1C,SACE,oCAAC,gBAAa,QAAgB,YAC3B,QACH;AAEJ;AAUA,MAAM,iBAAiB,CAAC;AAAA;AAAA,EAEtB,0DAAG,MAAM,QAAS;AAAA;AAOb,MAAM,eAAe,CAC1B,IACA;AAAA,EACE,SAAS;AAAA,EACT,WAAW;AAAA,EACX,SAAS,gBAAgB;AAAA,EACzB,GAAG;AACL,IAA2B,CAAC,MAE5B,UAAU,IAAI;AAAA,EACZ,SAAS,CAAC,EAAE,SAAS,MACnB,oCAAC,gBAAa,QAAgB,YAC5B,oCAAC,qBAAe,QAAS,CAC3B;AAAA,EAEF,GAAG;AACL,CAAC;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/jest/mocks/bounding-client-rect-mock.ts"],
4
- "sourcesContent": ["import { FALLBACK_DOM_RECT, createDOMRect } from './dom-rect-mock.js';\n\nconst pristineGetBoundingClientRect = Element.prototype.getBoundingClientRect;\n\n/** Mocks the `getBoundingClientRect()` function on all HTMLElements. */\nexport function setupGetBoundingClientRectMock(\n widthOrMockFn: number | (() => DOMRect | null),\n height?: number,\n x?: number,\n y?: number,\n top?: number,\n right?: number,\n bottom?: number,\n left?: number,\n) {\n Object.defineProperty(Element.prototype, 'getBoundingClientRect', {\n writable: true,\n value:\n typeof widthOrMockFn === 'number'\n ? () =>\n createDOMRect(widthOrMockFn, height, x, y, top, right, bottom, left)\n : function getBoundingClientRectMock(this: unknown) {\n return widthOrMockFn.call(this) ?? FALLBACK_DOM_RECT;\n },\n });\n}\n\n/** Clears mocked `getBoundingClientRect()` function on HTMLElements. */\nexport function clearGetBoundingClientRectMock() {\n Element.prototype.getBoundingClientRect = pristineGetBoundingClientRect;\n}\n"],
5
- "mappings": "AAAA,SAAS,mBAAmB,qBAAqB;AAEjD,MAAM,gCAAgC,QAAQ,UAAU;AAGjD,SAAS,+BACd,eACA,QACA,GACA,GACA,KACA,OACA,QACA,MACA;AACA,SAAO,eAAe,QAAQ,WAAW,yBAAyB;AAAA,IAChE,UAAU;AAAA,IACV,OACE,OAAO,kBAAkB,WACrB,MACE,cAAc,eAAe,QAAQ,GAAG,GAAG,KAAK,OAAO,QAAQ,IAAI,IACrE,SAAS,4BAAyC;AAChD,aAAO,cAAc,KAAK,IAAI,KAAK;AAAA,IACrC;AAAA,EACR,CAAC;AACH;AAGO,SAAS,iCAAiC;AAC/C,UAAQ,UAAU,wBAAwB;AAC5C;",
4
+ "sourcesContent": ["import { FALLBACK_DOM_RECT, createDOMRect } from './dom-rect-mock.js';\n\nconst pristineGetBoundingClientRect = Element.prototype.getBoundingClientRect;\n\n/**\n * Mocks the `getBoundingClientRect()` function on all HTMLElements.\n * @public\n */\nexport function setupGetBoundingClientRectMock(\n widthOrMockFn: number | (() => DOMRect | null),\n height?: number,\n x?: number,\n y?: number,\n top?: number,\n right?: number,\n bottom?: number,\n left?: number,\n) {\n Object.defineProperty(Element.prototype, 'getBoundingClientRect', {\n writable: true,\n value:\n typeof widthOrMockFn === 'number'\n ? () =>\n createDOMRect(widthOrMockFn, height, x, y, top, right, bottom, left)\n : function getBoundingClientRectMock(this: unknown) {\n return widthOrMockFn.call(this) ?? FALLBACK_DOM_RECT;\n },\n });\n}\n\n/**\n * Clears mocked `getBoundingClientRect()` function on HTMLElements.\n * @public\n */\nexport function clearGetBoundingClientRectMock() {\n Element.prototype.getBoundingClientRect = pristineGetBoundingClientRect;\n}\n"],
5
+ "mappings": "AAAA,SAAS,mBAAmB,qBAAqB;AAEjD,MAAM,gCAAgC,QAAQ,UAAU;AAMjD,SAAS,+BACd,eACA,QACA,GACA,GACA,KACA,OACA,QACA,MACA;AACA,SAAO,eAAe,QAAQ,WAAW,yBAAyB;AAAA,IAChE,UAAU;AAAA,IACV,OACE,OAAO,kBAAkB,WACrB,MACE,cAAc,eAAe,QAAQ,GAAG,GAAG,KAAK,OAAO,QAAQ,IAAI,IACrE,SAAS,4BAAyC;AAChD,aAAO,cAAc,KAAK,IAAI,KAAK;AAAA,IACrC;AAAA,EACR,CAAC;AACH;AAMO,SAAS,iCAAiC;AAC/C,UAAQ,UAAU,wBAAwB;AAC5C;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/jest/mocks/canvas-mock.ts"],
4
- "sourcesContent": ["const AVG_CHARACTER_WIDTH = 8;\nconst TEXT_WIDTH_MAPPINGS: Record<string, number> = {\n '\\u2026': 11,\n '0': 9,\n '1': 7,\n '2': 9,\n '3': 8,\n '4': 9,\n '5': 10,\n '6': 10,\n '7': 9,\n '8': 9,\n '9': 8,\n ' ': 0,\n '!': 4,\n '\"': 6,\n '#': 10,\n $: 9,\n '%': 12,\n '&': 10,\n \"'\": 2,\n '(': 7,\n ')': 5,\n '*': 7,\n '+': 9,\n ',': 3,\n '-': 5,\n '.': 4,\n '/': 7,\n ':': 4,\n ';': 3,\n '<': 7,\n '=': 9,\n '>': 9,\n '?': 7,\n '@': 14,\n A: 11,\n B: 11,\n C: 10,\n D: 11,\n E: 10,\n F: 10,\n G: 10,\n H: 12,\n I: 4,\n J: 8,\n K: 12,\n L: 10,\n M: 14,\n N: 12,\n O: 11,\n P: 11,\n Q: 11,\n R: 11,\n S: 9,\n T: 10,\n U: 11,\n V: 10,\n W: 14,\n X: 10,\n Y: 10,\n Z: 9,\n '[': 6,\n '\\\\': 7,\n ']': 4,\n '^': 7,\n _: 8,\n '`': 4,\n a: 8,\n b: 10,\n c: 8,\n d: 8,\n e: 8,\n f: 6,\n g: 8,\n h: 9,\n i: 4,\n j: 4,\n k: 10,\n l: 4,\n m: 14,\n n: 9,\n o: 9,\n p: 10,\n q: 8,\n r: 7,\n s: 8,\n t: 5,\n u: 9,\n v: 8,\n w: 12,\n x: 8,\n y: 8,\n z: 8,\n '{': 6,\n '|': 4,\n '}': 5,\n '~': 11,\n};\n\n/** Returns the width of a given character in pixels. */\nfunction getCharWidth(character: string): number {\n return TEXT_WIDTH_MAPPINGS[character] ?? AVG_CHARACTER_WIDTH;\n}\n\nconst pristineGetContext = HTMLCanvasElement.prototype.getContext;\n\n/**\n * Mocks the `getContext()` function of HTMLCanvasElements so it returns an\n * object with an implementation of `measureText()`. If no `mockTextWidth` is\n * set, it will fall back to a default implementation that attempts to calculate\n * a reasonable value for each given string.\n *\n * @param mockTextWidth - The value returned by the `measureText()` mock for all strings\n */\nexport function setupCanvasMeasureTextMock(mockTextWidth?: number) {\n Object.defineProperty(HTMLCanvasElement.prototype, 'getContext', {\n writable: true,\n value: () => ({\n measureText: (text: string): TextMetrics => {\n const charWidth =\n mockTextWidth !== undefined\n ? mockTextWidth\n : [...text].reduce((prev, curr) => prev + getCharWidth(curr), 0);\n\n return {\n width: charWidth,\n actualBoundingBoxLeft: 0,\n actualBoundingBoxRight: charWidth,\n fontBoundingBoxAscent: 0,\n fontBoundingBoxDescent: 0,\n actualBoundingBoxAscent: 0,\n actualBoundingBoxDescent: 0,\n alphabeticBaseline: 0,\n emHeightAscent: 0,\n emHeightDescent: 0,\n hangingBaseline: 0,\n ideographicBaseline: 0,\n };\n },\n scale: () => {\n return null;\n },\n clearRect: () => {\n return null;\n },\n draw: () => {\n return null;\n },\n beginPath: () => {\n return null;\n },\n stroke: () => {\n return null;\n },\n closePath: () => {\n return null;\n },\n moveTo: () => {\n return null;\n },\n lineTo: () => {\n return null;\n },\n arc: () => {\n return null;\n },\n fill: () => {\n return null;\n },\n rect: () => {\n return null;\n },\n save: () => {\n return null;\n },\n restore: () => {\n return null;\n },\n }),\n });\n}\n\n/** Clears mocked `getContext()` function on HTMLCanvasElements. */\nexport function clearCanvasMeasureTextMock() {\n HTMLCanvasElement.prototype.getContext = pristineGetContext;\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["const AVG_CHARACTER_WIDTH = 8;\nconst TEXT_WIDTH_MAPPINGS: Record<string, number> = {\n '\\u2026': 11,\n '0': 9,\n '1': 7,\n '2': 9,\n '3': 8,\n '4': 9,\n '5': 10,\n '6': 10,\n '7': 9,\n '8': 9,\n '9': 8,\n ' ': 0,\n '!': 4,\n '\"': 6,\n '#': 10,\n $: 9,\n '%': 12,\n '&': 10,\n \"'\": 2,\n '(': 7,\n ')': 5,\n '*': 7,\n '+': 9,\n ',': 3,\n '-': 5,\n '.': 4,\n '/': 7,\n ':': 4,\n ';': 3,\n '<': 7,\n '=': 9,\n '>': 9,\n '?': 7,\n '@': 14,\n A: 11,\n B: 11,\n C: 10,\n D: 11,\n E: 10,\n F: 10,\n G: 10,\n H: 12,\n I: 4,\n J: 8,\n K: 12,\n L: 10,\n M: 14,\n N: 12,\n O: 11,\n P: 11,\n Q: 11,\n R: 11,\n S: 9,\n T: 10,\n U: 11,\n V: 10,\n W: 14,\n X: 10,\n Y: 10,\n Z: 9,\n '[': 6,\n '\\\\': 7,\n ']': 4,\n '^': 7,\n _: 8,\n '`': 4,\n a: 8,\n b: 10,\n c: 8,\n d: 8,\n e: 8,\n f: 6,\n g: 8,\n h: 9,\n i: 4,\n j: 4,\n k: 10,\n l: 4,\n m: 14,\n n: 9,\n o: 9,\n p: 10,\n q: 8,\n r: 7,\n s: 8,\n t: 5,\n u: 9,\n v: 8,\n w: 12,\n x: 8,\n y: 8,\n z: 8,\n '{': 6,\n '|': 4,\n '}': 5,\n '~': 11,\n};\n\n/** Returns the width of a given character in pixels. */\nfunction getCharWidth(character: string): number {\n return TEXT_WIDTH_MAPPINGS[character] ?? AVG_CHARACTER_WIDTH;\n}\n\nconst pristineGetContext = HTMLCanvasElement.prototype.getContext;\n\n/**\n * Mocks the `getContext()` function of HTMLCanvasElements so it returns an\n * object with an implementation of `measureText()`. If no `mockTextWidth` is\n * set, it will fall back to a default implementation that attempts to calculate\n * a reasonable value for each given string.\n *\n * @param mockTextWidth - The value returned by the `measureText()` mock for all strings\n * @public\n */\nexport function setupCanvasMeasureTextMock(mockTextWidth?: number) {\n Object.defineProperty(HTMLCanvasElement.prototype, 'getContext', {\n writable: true,\n value: () => ({\n measureText: (text: string): TextMetrics => {\n const charWidth =\n mockTextWidth !== undefined\n ? mockTextWidth\n : [...text].reduce((prev, curr) => prev + getCharWidth(curr), 0);\n\n return {\n width: charWidth,\n actualBoundingBoxLeft: 0,\n actualBoundingBoxRight: charWidth,\n fontBoundingBoxAscent: 0,\n fontBoundingBoxDescent: 0,\n actualBoundingBoxAscent: 0,\n actualBoundingBoxDescent: 0,\n alphabeticBaseline: 0,\n emHeightAscent: 0,\n emHeightDescent: 0,\n hangingBaseline: 0,\n ideographicBaseline: 0,\n };\n },\n scale: () => {\n return null;\n },\n clearRect: () => {\n return null;\n },\n draw: () => {\n return null;\n },\n beginPath: () => {\n return null;\n },\n stroke: () => {\n return null;\n },\n closePath: () => {\n return null;\n },\n moveTo: () => {\n return null;\n },\n lineTo: () => {\n return null;\n },\n arc: () => {\n return null;\n },\n fill: () => {\n return null;\n },\n rect: () => {\n return null;\n },\n save: () => {\n return null;\n },\n restore: () => {\n return null;\n },\n }),\n });\n}\n\n/**\n * Clears mocked `getContext()` function on HTMLCanvasElements.\n * @public\n */\nexport function clearCanvasMeasureTextMock() {\n HTMLCanvasElement.prototype.getContext = pristineGetContext;\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/jest/mocks/dom-rect-mock.ts"],
4
- "sourcesContent": ["/** Creates a DOMRect instance. Unspecified values default to `0`. */\nexport function createDOMRect(\n width: number,\n height?: number,\n x?: number,\n y?: number,\n top?: number,\n right?: number,\n bottom?: number,\n left?: number,\n): DOMRect {\n return {\n width,\n height: height ?? 0,\n x: x ?? 0,\n y: y ?? 0,\n top: top ?? 0,\n right: right ?? 0,\n bottom: bottom ?? 0,\n left: left ?? 0,\n toJSON: function () {\n const { toJSON, ...remainingProps } = this;\n\n return remainingProps;\n },\n };\n}\n\nexport const FALLBACK_DOM_RECT: DOMRect = Object.freeze(createDOMRect(0));\n\nconst prisitineDomRect = window.DOMRect;\n\n/**\n * Mocks the domRect since jsdom doesn't provide it\n * @param mockDomRect - Override values for DOMRect\n */\nexport function setupDomRectMock(mockDomRect: DOMRect = FALLBACK_DOM_RECT) {\n Object.defineProperties(window, {\n DOMRect: {\n writable: true,\n value: {\n fromRect: () => mockDomRect,\n },\n },\n });\n}\n\n/**\n * Clears the DomRect\n */\nexport function clearDomRectMock() {\n window.DOMRect = prisitineDomRect;\n}\n"],
5
- "mappings": "AACO,SAAS,cACd,OACA,QACA,GACA,GACA,KACA,OACA,QACA,MACS;AACT,SAAO;AAAA,IACL;AAAA,IACA,QAAQ,UAAU;AAAA,IAClB,GAAG,KAAK;AAAA,IACR,GAAG,KAAK;AAAA,IACR,KAAK,OAAO;AAAA,IACZ,OAAO,SAAS;AAAA,IAChB,QAAQ,UAAU;AAAA,IAClB,MAAM,QAAQ;AAAA,IACd,QAAQ,WAAY;AAClB,YAAM,EAAE,QAAQ,GAAG,eAAe,IAAI;AAEtC,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAEO,MAAM,oBAA6B,OAAO,OAAO,cAAc,CAAC,CAAC;AAExE,MAAM,mBAAmB,OAAO;AAMzB,SAAS,iBAAiB,cAAuB,mBAAmB;AACzE,SAAO,iBAAiB,QAAQ;AAAA,IAC9B,SAAS;AAAA,MACP,UAAU;AAAA,MACV,OAAO;AAAA,QACL,UAAU,MAAM;AAAA,MAClB;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAKO,SAAS,mBAAmB;AACjC,SAAO,UAAU;AACnB;",
4
+ "sourcesContent": ["/**\n * Creates a DOMRect instance. Unspecified values default to `0`.\n * @internal\n */\nexport function createDOMRect(\n width: number,\n height?: number,\n x?: number,\n y?: number,\n top?: number,\n right?: number,\n bottom?: number,\n left?: number,\n): DOMRect {\n return {\n width,\n height: height ?? 0,\n x: x ?? 0,\n y: y ?? 0,\n top: top ?? 0,\n right: right ?? 0,\n bottom: bottom ?? 0,\n left: left ?? 0,\n toJSON: function () {\n const { toJSON, ...remainingProps } = this;\n\n return remainingProps;\n },\n };\n}\n\nexport const FALLBACK_DOM_RECT: DOMRect = Object.freeze(createDOMRect(0));\n\nconst prisitineDomRect = window.DOMRect;\n\n/**\n * Mocks the domRect since jsdom doesn't provide it\n * @param mockDomRect - Override values for DOMRect\n * @public\n */\nexport function setupDomRectMock(mockDomRect: DOMRect = FALLBACK_DOM_RECT) {\n Object.defineProperties(window, {\n DOMRect: {\n writable: true,\n value: {\n fromRect: () => mockDomRect,\n },\n },\n });\n}\n\n/**\n * Clears the DomRect\n * @public\n */\nexport function clearDomRectMock() {\n window.DOMRect = prisitineDomRect;\n}\n"],
5
+ "mappings": "AAIO,SAAS,cACd,OACA,QACA,GACA,GACA,KACA,OACA,QACA,MACS;AACT,SAAO;AAAA,IACL;AAAA,IACA,QAAQ,UAAU;AAAA,IAClB,GAAG,KAAK;AAAA,IACR,GAAG,KAAK;AAAA,IACR,KAAK,OAAO;AAAA,IACZ,OAAO,SAAS;AAAA,IAChB,QAAQ,UAAU;AAAA,IAClB,MAAM,QAAQ;AAAA,IACd,QAAQ,WAAY;AAClB,YAAM,EAAE,QAAQ,GAAG,eAAe,IAAI;AAEtC,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAEO,MAAM,oBAA6B,OAAO,OAAO,cAAc,CAAC,CAAC;AAExE,MAAM,mBAAmB,OAAO;AAOzB,SAAS,iBAAiB,cAAuB,mBAAmB;AACzE,SAAO,iBAAiB,QAAQ;AAAA,IAC9B,SAAS;AAAA,MACP,UAAU;AAAA,MACV,OAAO;AAAA,QACL,UAAU,MAAM;AAAA,MAClB;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAMO,SAAS,mBAAmB;AACjC,SAAO,UAAU;AACnB;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/jest/mocks/resize-observer-mock.ts"],
4
- "sourcesContent": ["// eslint-disable-next-line no-restricted-imports\nimport { jest } from '@jest/globals';\nimport { PartialDeep } from 'type-fest';\n\nconst pristineResizeObserver = window.ResizeObserver;\n\n/** Mocks the Resize Observer */\nexport function setupResizeObserverMock(\n /** When the Resize Observer should return specific results, you can pass them here */\n mockedObserveCallbackValue?: PartialDeep<ResizeObserverEntry>[],\n) {\n Object.defineProperty(window, 'ResizeObserver', {\n writable: true,\n value: jest.fn(\n (callback: (entries: PartialDeep<ResizeObserverEntry>[]) => void) => ({\n observe: mockedObserveCallbackValue\n ? jest.fn().mockImplementation(() => {\n callback(mockedObserveCallbackValue);\n })\n : jest.fn(),\n unobserve: jest.fn(),\n disconnect: jest.fn(),\n }),\n ),\n });\n}\n\n/** Clears the Resize Observer */\nexport function clearResizeObserverMock() {\n window.ResizeObserver = pristineResizeObserver;\n}\n"],
5
- "mappings": "AACA,SAAS,YAAY;AAGrB,MAAM,yBAAyB,OAAO;AAG/B,SAAS,wBAEd,4BACA;AACA,SAAO,eAAe,QAAQ,kBAAkB;AAAA,IAC9C,UAAU;AAAA,IACV,OAAO,KAAK;AAAA,MACV,CAAC,cAAqE;AAAA,QACpE,SAAS,6BACL,KAAK,GAAG,EAAE,mBAAmB,MAAM;AACjC,mBAAS,0BAA0B;AAAA,QACrC,CAAC,IACD,KAAK,GAAG;AAAA,QACZ,WAAW,KAAK,GAAG;AAAA,QACnB,YAAY,KAAK,GAAG;AAAA,MACtB;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAGO,SAAS,0BAA0B;AACxC,SAAO,iBAAiB;AAC1B;",
4
+ "sourcesContent": ["// eslint-disable-next-line no-restricted-imports\nimport { jest } from '@jest/globals';\nimport { PartialDeep } from 'type-fest';\n\nconst pristineResizeObserver = window.ResizeObserver;\n\n/**\n * Mocks the Resize Observer\n * @public\n */\nexport function setupResizeObserverMock(\n /** When the Resize Observer should return specific results, you can pass them here */\n mockedObserveCallbackValue?: PartialDeep<ResizeObserverEntry>[],\n) {\n Object.defineProperty(window, 'ResizeObserver', {\n writable: true,\n value: jest.fn(\n (callback: (entries: PartialDeep<ResizeObserverEntry>[]) => void) => ({\n observe: mockedObserveCallbackValue\n ? jest.fn().mockImplementation(() => {\n callback(mockedObserveCallbackValue);\n })\n : jest.fn(),\n unobserve: jest.fn(),\n disconnect: jest.fn(),\n }),\n ),\n });\n}\n\n/**\n * Clears the Resize Observer\n * @public\n */\nexport function clearResizeObserverMock() {\n window.ResizeObserver = pristineResizeObserver;\n}\n"],
5
+ "mappings": "AACA,SAAS,YAAY;AAGrB,MAAM,yBAAyB,OAAO;AAM/B,SAAS,wBAEd,4BACA;AACA,SAAO,eAAe,QAAQ,kBAAkB;AAAA,IAC9C,UAAU;AAAA,IACV,OAAO,KAAK;AAAA,MACV,CAAC,cAAqE;AAAA,QACpE,SAAS,6BACL,KAAK,GAAG,EAAE,mBAAmB,MAAM;AACjC,mBAAS,0BAA0B;AAAA,QACrC,CAAC,IACD,KAAK,GAAG;AAAA,QACZ,WAAW,KAAK,GAAG;AAAA,QACnB,YAAY,KAAK,GAAG;AAAA,MACtB;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAMO,SAAS,0BAA0B;AACxC,SAAO,iBAAiB;AAC1B;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/jest/mocks/scroll-width-mock.ts"],
4
- "sourcesContent": ["const pristineScrollWidthDescriptor = Object.getOwnPropertyDescriptor(\n HTMLElement.prototype,\n 'scrollWidth',\n);\n\n/** Mocks the return value of the `scrollWidth` property on all `HTMLElements`. */\nexport function setupScrollWidthMock(scrollWidth: number) {\n Object.defineProperty(HTMLElement.prototype, 'scrollWidth', {\n configurable: true,\n get: () => scrollWidth,\n });\n}\n\n/** Clears mocked `scrollWidth` property on `HTMLElements`. */\nexport function clearScrollWidthMock() {\n Object.defineProperty(HTMLElement.prototype, 'scrollWidth', {\n configurable: true,\n get: pristineScrollWidthDescriptor?.get\n ? pristineScrollWidthDescriptor.get\n : () => 0,\n });\n}\n"],
5
- "mappings": "AAAA,MAAM,gCAAgC,OAAO;AAAA,EAC3C,YAAY;AAAA,EACZ;AACF;AAGO,SAAS,qBAAqB,aAAqB;AACxD,SAAO,eAAe,YAAY,WAAW,eAAe;AAAA,IAC1D,cAAc;AAAA,IACd,KAAK,MAAM;AAAA,EACb,CAAC;AACH;AAGO,SAAS,uBAAuB;AACrC,SAAO,eAAe,YAAY,WAAW,eAAe;AAAA,IAC1D,cAAc;AAAA,IACd,KAAK,+BAA+B,MAChC,8BAA8B,MAC9B,MAAM;AAAA,EACZ,CAAC;AACH;",
4
+ "sourcesContent": ["const pristineScrollWidthDescriptor = Object.getOwnPropertyDescriptor(\n HTMLElement.prototype,\n 'scrollWidth',\n);\n\n/**\n * Mocks the return value of the `scrollWidth` property on all `HTMLElements`.\n * @public\n */\nexport function setupScrollWidthMock(scrollWidth: number) {\n Object.defineProperty(HTMLElement.prototype, 'scrollWidth', {\n configurable: true,\n get: () => scrollWidth,\n });\n}\n\n/**\n * Clears mocked `scrollWidth` property on `HTMLElements`.\n * @public\n */\nexport function clearScrollWidthMock() {\n Object.defineProperty(HTMLElement.prototype, 'scrollWidth', {\n configurable: true,\n get: pristineScrollWidthDescriptor?.get\n ? pristineScrollWidthDescriptor.get\n : () => 0,\n });\n}\n"],
5
+ "mappings": "AAAA,MAAM,gCAAgC,OAAO;AAAA,EAC3C,YAAY;AAAA,EACZ;AACF;AAMO,SAAS,qBAAqB,aAAqB;AACxD,SAAO,eAAe,YAAY,WAAW,eAAe;AAAA,IAC1D,cAAc;AAAA,IACd,KAAK,MAAM;AAAA,EACb,CAAC;AACH;AAMO,SAAS,uBAAuB;AACrC,SAAO,eAAe,YAAY,WAAW,eAAe;AAAA,IAC1D,cAAc;AAAA,IACd,KAAK,+BAA+B,MAChC,8BAA8B,MAC9B,MAAM;AAAA,EACZ,CAAC;AACH;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/jest/mocks/text-ellipsis-mock.ts"],
4
- "sourcesContent": ["import {\n clearGetBoundingClientRectMock,\n setupGetBoundingClientRectMock,\n} from './bounding-client-rect-mock.js';\nimport {\n clearCanvasMeasureTextMock,\n setupCanvasMeasureTextMock,\n} from './canvas-mock.js';\nimport { createDOMRect } from './dom-rect-mock.js';\nimport { clearScrollWidthMock } from './scroll-width-mock.js';\n\n/** Mocks DOM properties and functions required for the TextEllipsis component to work. */\nexport function setupTextEllipsisMock(\n containerWidth: number = 250,\n textWidth: number = 200,\n mockCanvas: boolean = false,\n) {\n setupGetBoundingClientRectMock(function (this: HTMLElement) {\n // container width\n if (this.getAttribute('data-ellipsis') !== null) {\n return createDOMRect(containerWidth, 0);\n }\n // actual text width\n return createDOMRect(textWidth, 0);\n });\n\n if (mockCanvas) {\n setupCanvasMeasureTextMock();\n }\n}\n\n/** Clears mocked DOM properties and functions required for the TextEllipsis component to work. */\nexport function clearTextEllipsisMock() {\n clearGetBoundingClientRectMock();\n clearScrollWidthMock();\n clearCanvasMeasureTextMock();\n}\n"],
5
- "mappings": "AAAA;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,SAAS,qBAAqB;AAC9B,SAAS,4BAA4B;AAG9B,SAAS,sBACd,iBAAyB,KACzB,YAAoB,KACpB,aAAsB,OACtB;AACA,iCAA+B,WAA6B;AAE1D,QAAI,KAAK,aAAa,eAAe,MAAM,MAAM;AAC/C,aAAO,cAAc,gBAAgB,CAAC;AAAA,IACxC;AAEA,WAAO,cAAc,WAAW,CAAC;AAAA,EACnC,CAAC;AAED,MAAI,YAAY;AACd,+BAA2B;AAAA,EAC7B;AACF;AAGO,SAAS,wBAAwB;AACtC,iCAA+B;AAC/B,uBAAqB;AACrB,6BAA2B;AAC7B;",
4
+ "sourcesContent": ["import {\n clearGetBoundingClientRectMock,\n setupGetBoundingClientRectMock,\n} from './bounding-client-rect-mock.js';\nimport {\n clearCanvasMeasureTextMock,\n setupCanvasMeasureTextMock,\n} from './canvas-mock.js';\nimport { createDOMRect } from './dom-rect-mock.js';\nimport { clearScrollWidthMock } from './scroll-width-mock.js';\n\n/**\n * Mocks DOM properties and functions required for the TextEllipsis component to work.\n * @public\n */\nexport function setupTextEllipsisMock(\n containerWidth: number = 250,\n textWidth: number = 200,\n mockCanvas: boolean = false,\n) {\n setupGetBoundingClientRectMock(function (this: HTMLElement) {\n // container width\n if (this.getAttribute('data-ellipsis') !== null) {\n return createDOMRect(containerWidth, 0);\n }\n // actual text width\n return createDOMRect(textWidth, 0);\n });\n\n if (mockCanvas) {\n setupCanvasMeasureTextMock();\n }\n}\n\n/**\n * Clears mocked DOM properties and functions required for the TextEllipsis component to work.\n * @public\n */\nexport function clearTextEllipsisMock() {\n clearGetBoundingClientRectMock();\n clearScrollWidthMock();\n clearCanvasMeasureTextMock();\n}\n"],
5
+ "mappings": "AAAA;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,SAAS,qBAAqB;AAC9B,SAAS,4BAA4B;AAM9B,SAAS,sBACd,iBAAyB,KACzB,YAAoB,KACpB,aAAsB,OACtB;AACA,iCAA+B,WAA6B;AAE1D,QAAI,KAAK,aAAa,eAAe,MAAM,MAAM;AAC/C,aAAO,cAAc,gBAAgB,CAAC;AAAA,IACxC;AAEA,WAAO,cAAc,WAAW,CAAC;AAAA,EACnC,CAAC;AAED,MAAI,YAAY;AACd,+BAA2B;AAAA,EAC7B;AACF;AAMO,SAAS,wBAAwB;AACtC,iCAA+B;AAC/B,uBAAqB;AACrB,6BAA2B;AAC7B;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/jest/preset/jest-preset.ts"],
4
- "sourcesContent": ["export const stratoPreset = {\n moduleNameMapper: {\n '^d3-(.*)$': '<rootDir>/node_modules/d3-$1/dist/d3-$1',\n '^@codemirror/legacy-modes/mode/(.*)$':\n '<rootDir>/node_modules/@codemirror/legacy-modes/mode/$1.cjs',\n nanoid: '<rootDir>/node_modules/nanoid/index.cjs',\n '\\\\.(css|less|scss|sass)$': 'identity-obj-proxy',\n },\n resolver:\n '<rootDir>/node_modules/@dynatrace/strato-components-testing/jest/preset/resolver.js',\n};\n"],
5
- "mappings": "AAAO,MAAM,eAAe;AAAA,EAC1B,kBAAkB;AAAA,IAChB,aAAa;AAAA,IACb,wCACE;AAAA,IACF,QAAQ;AAAA,IACR,4BAA4B;AAAA,EAC9B;AAAA,EACA,UACE;AACJ;",
4
+ "sourcesContent": ["/**\n * @public\n */\nexport const stratoPreset = {\n moduleNameMapper: {\n '^d3-(.*)$': '<rootDir>/node_modules/d3-$1/dist/d3-$1',\n '^@codemirror/legacy-modes/mode/(.*)$':\n '<rootDir>/node_modules/@codemirror/legacy-modes/mode/$1.cjs',\n nanoid: '<rootDir>/node_modules/nanoid/index.cjs',\n '\\\\.(css|less|scss|sass)$': 'identity-obj-proxy',\n },\n resolver:\n '<rootDir>/node_modules/@dynatrace/strato-components-testing/jest/preset/resolver.js',\n};\n"],
5
+ "mappings": "AAGO,MAAM,eAAe;AAAA,EAC1B,kBAAkB;AAAA,IAChB,aAAa;AAAA,IACb,wCACE;AAAA,IACF,QAAQ;AAAA,IACR,4BAA4B;AAAA,EAC9B;AAAA,EACA,UACE;AACJ;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/jest/preset/resolver.ts"],
4
- "sourcesContent": ["module.exports = (path, options) => {\n // Call the defaultResolver, so we leverage its cache, error handling, etc.\n return options.defaultResolver(path, {\n ...options,\n // Use packageFilter to process parsed `package.json` before the resolution (see https://www.npmjs.com/package/resolve#resolveid-opts-cb)\n packageFilter: (pkg) => {\n // This is a workaround for https://github.com/uuidjs/uuid/pull/616\n //\n // jest-environment-jsdom 28+ tries to use browser exports instead of default exports,\n // but uuid only offers an ESM browser export and not a CommonJS one. Jest does not yet\n // support ESM modules natively, so this causes a Jest error related to trying to parse\n // \"export\" syntax.\n //\n // This workaround prevents Jest from considering uuid's module-based exports at all;\n // it falls back to uuid's CommonJS+node \"main\" property.\n //\n // Once we're able to migrate our Jest config to ESM and a browser crypto\n // implementation is available for the browser+ESM version of uuid to use (eg, via\n // https://github.com/jsdom/jsdom/pull/3352 or a similar polyfill), this can go away.\n if (pkg.name === 'uuid') {\n delete pkg['exports'];\n delete pkg['module'];\n }\n return pkg;\n },\n });\n};\n"],
5
- "mappings": ";;;;AAAA;AAAA;AAAA,WAAO,UAAU,CAAC,MAAM,YAAY;AAElC,aAAO,QAAQ,gBAAgB,MAAM;AAAA,QACnC,GAAG;AAAA;AAAA,QAEH,eAAe,CAAC,QAAQ;AActB,cAAI,IAAI,SAAS,QAAQ;AACvB,mBAAO,IAAI,SAAS;AACpB,mBAAO,IAAI,QAAQ;AAAA,UACrB;AACA,iBAAO;AAAA,QACT;AAAA,MACF,CAAC;AAAA,IACH;AAAA;AAAA;",
4
+ "sourcesContent": ["/**\n * @public\n */\nmodule.exports = (path, options) => {\n // Call the defaultResolver, so we leverage its cache, error handling, etc.\n return options.defaultResolver(path, {\n ...options,\n // Use packageFilter to process parsed `package.json` before the resolution (see https://www.npmjs.com/package/resolve#resolveid-opts-cb)\n packageFilter: (pkg) => {\n // This is a workaround for https://github.com/uuidjs/uuid/pull/616\n //\n // jest-environment-jsdom 28+ tries to use browser exports instead of default exports,\n // but uuid only offers an ESM browser export and not a CommonJS one. Jest does not yet\n // support ESM modules natively, so this causes a Jest error related to trying to parse\n // \"export\" syntax.\n //\n // This workaround prevents Jest from considering uuid's module-based exports at all;\n // it falls back to uuid's CommonJS+node \"main\" property.\n //\n // Once we're able to migrate our Jest config to ESM and a browser crypto\n // implementation is available for the browser+ESM version of uuid to use (eg, via\n // https://github.com/jsdom/jsdom/pull/3352 or a similar polyfill), this can go away.\n if (pkg.name === 'uuid') {\n delete pkg['exports'];\n delete pkg['module'];\n }\n return pkg;\n },\n });\n};\n"],
5
+ "mappings": ";;;;AAAA;AAAA;AAGA,WAAO,UAAU,CAAC,MAAM,YAAY;AAElC,aAAO,QAAQ,gBAAgB,MAAM;AAAA,QACnC,GAAG;AAAA;AAAA,QAEH,eAAe,CAAC,QAAQ;AActB,cAAI,IAAI,SAAS,QAAQ;AACvB,mBAAO,IAAI,SAAS;AACpB,mBAAO,IAAI,QAAQ;AAAA,UACrB;AACA,iBAAO;AAAA,QACT;AAAA,MACF,CAAC;AAAA,IACH;AAAA;AAAA;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,20 @@
1
+ import {
2
+ clearCanvasMeasureTextMock,
3
+ setupCanvasMeasureTextMock
4
+ } from "../mocks/canvas-mock.js";
5
+ import { setupDomRectMock, clearDomRectMock } from "../mocks/dom-rect-mock.js";
6
+ import {
7
+ setupResizeObserverMock,
8
+ clearResizeObserverMock
9
+ } from "../mocks/resize-observer-mock.js";
10
+ beforeAll(() => {
11
+ setupResizeObserverMock();
12
+ setupDomRectMock();
13
+ setupCanvasMeasureTextMock(-Infinity);
14
+ });
15
+ afterAll(() => {
16
+ clearResizeObserverMock();
17
+ clearCanvasMeasureTextMock();
18
+ clearDomRectMock();
19
+ });
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/jest/setup/index.ts"],
4
+ "sourcesContent": ["import {\n clearCanvasMeasureTextMock,\n setupCanvasMeasureTextMock,\n} from '../mocks/canvas-mock.js';\nimport { setupDomRectMock, clearDomRectMock } from '../mocks/dom-rect-mock.js';\nimport {\n setupResizeObserverMock,\n clearResizeObserverMock,\n} from '../mocks/resize-observer-mock.js';\n\nbeforeAll(() => {\n setupResizeObserverMock();\n setupDomRectMock();\n setupCanvasMeasureTextMock(-Infinity);\n});\n\nafterAll(() => {\n clearResizeObserverMock();\n clearCanvasMeasureTextMock();\n clearDomRectMock();\n});\n"],
5
+ "mappings": "AAAA;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,SAAS,kBAAkB,wBAAwB;AACnD;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP,UAAU,MAAM;AACd,0BAAwB;AACxB,mBAAiB;AACjB,6BAA2B,SAAS;AACtC,CAAC;AAED,SAAS,MAAM;AACb,0BAAwB;AACxB,6BAA2B;AAC3B,mBAAiB;AACnB,CAAC;",
6
+ "names": []
7
+ }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/jest/setup.ts"],
4
- "sourcesContent": ["import {\n clearCanvasMeasureTextMock,\n setupCanvasMeasureTextMock,\n} from './mocks/canvas-mock.js';\nimport { setupDomRectMock, clearDomRectMock } from './mocks/dom-rect-mock.js';\nimport {\n setupResizeObserverMock,\n clearResizeObserverMock,\n} from './mocks/resize-observer-mock.js';\n\n/** Sets up design-system mocks. */\nexport function setup() {\n setupResizeObserverMock();\n setupDomRectMock();\n setupCanvasMeasureTextMock(-Infinity);\n}\n\n/** Resets design-system mocks. */\nexport function clear() {\n clearResizeObserverMock();\n clearCanvasMeasureTextMock();\n clearDomRectMock();\n}\n"],
5
- "mappings": "AAAA;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,SAAS,kBAAkB,wBAAwB;AACnD;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAGA,SAAS,QAAQ;AACtB,0BAAwB;AACxB,mBAAiB;AACjB,6BAA2B,SAAS;AACtC;AAGO,SAAS,QAAQ;AACtB,0BAAwB;AACxB,6BAA2B;AAC3B,mBAAiB;AACnB;",
4
+ "sourcesContent": ["import {\n clearCanvasMeasureTextMock,\n setupCanvasMeasureTextMock,\n} from './mocks/canvas-mock.js';\nimport { setupDomRectMock, clearDomRectMock } from './mocks/dom-rect-mock.js';\nimport {\n setupResizeObserverMock,\n clearResizeObserverMock,\n} from './mocks/resize-observer-mock.js';\n\n/**\n * Sets up design-system mocks.\n *\n * @deprecated Plase add `@dynatrace/strato-components-testing/jest/setup` to `setupFilesAfterEnv` your jest config instead now.\n * @public\n */\nexport function setup() {\n setupResizeObserverMock();\n setupDomRectMock();\n setupCanvasMeasureTextMock(-Infinity);\n}\n\n/**\n * Resets design-system mocks.\n *\n * @deprecated Plase add `@dynatrace/strato-components-testing/jest/setup` to `setupFilesAfterEnv` your jest config instead now.\n * @public\n */\nexport function clear() {\n clearResizeObserverMock();\n clearCanvasMeasureTextMock();\n clearDomRectMock();\n}\n"],
5
+ "mappings": "AAAA;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,SAAS,kBAAkB,wBAAwB;AACnD;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAQA,SAAS,QAAQ;AACtB,0BAAwB;AACxB,mBAAiB;AACjB,6BAA2B,SAAS;AACtC;AAQO,SAAS,QAAQ;AACtB,0BAAwB;AACxB,6BAA2B;AAC3B,mBAAiB;AACnB;",
6
6
  "names": []
7
7
  }
@@ -1,8 +1,14 @@
1
1
  import { RenderOptions, RenderResult } from '@testing-library/react';
2
2
  import React from 'react';
3
+ /**
4
+ * @public
5
+ */
3
6
  export type RenderWithIntlOptions = {
4
7
  locale?: string;
5
8
  timeZone?: string;
6
9
  } & Omit<RenderOptions, 'queries'>;
7
- /** Wrapper to render components with all required providers */
10
+ /**
11
+ * Wrapper to render components with all required providers
12
+ * @public
13
+ */
8
14
  export declare const customRender: (ui: React.ReactElement, { locale, timeZone, wrapper: CustomWrapper, ...renderOptions }?: RenderWithIntlOptions) => RenderResult;
@@ -1,4 +1,10 @@
1
- /** Mocks the `getBoundingClientRect()` function on all HTMLElements. */
1
+ /**
2
+ * Mocks the `getBoundingClientRect()` function on all HTMLElements.
3
+ * @public
4
+ */
2
5
  export declare function setupGetBoundingClientRectMock(widthOrMockFn: number | (() => DOMRect | null), height?: number, x?: number, y?: number, top?: number, right?: number, bottom?: number, left?: number): void;
3
- /** Clears mocked `getBoundingClientRect()` function on HTMLElements. */
6
+ /**
7
+ * Clears mocked `getBoundingClientRect()` function on HTMLElements.
8
+ * @public
9
+ */
4
10
  export declare function clearGetBoundingClientRectMock(): void;
@@ -5,7 +5,11 @@
5
5
  * a reasonable value for each given string.
6
6
  *
7
7
  * @param mockTextWidth - The value returned by the `measureText()` mock for all strings
8
+ * @public
8
9
  */
9
10
  export declare function setupCanvasMeasureTextMock(mockTextWidth?: number): void;
10
- /** Clears mocked `getContext()` function on HTMLCanvasElements. */
11
+ /**
12
+ * Clears mocked `getContext()` function on HTMLCanvasElements.
13
+ * @public
14
+ */
11
15
  export declare function clearCanvasMeasureTextMock(): void;
@@ -1,12 +1,17 @@
1
- /** Creates a DOMRect instance. Unspecified values default to `0`. */
1
+ /**
2
+ * Creates a DOMRect instance. Unspecified values default to `0`.
3
+ * @internal
4
+ */
2
5
  export declare function createDOMRect(width: number, height?: number, x?: number, y?: number, top?: number, right?: number, bottom?: number, left?: number): DOMRect;
3
6
  export declare const FALLBACK_DOM_RECT: DOMRect;
4
7
  /**
5
8
  * Mocks the domRect since jsdom doesn't provide it
6
9
  * @param mockDomRect - Override values for DOMRect
10
+ * @public
7
11
  */
8
12
  export declare function setupDomRectMock(mockDomRect?: DOMRect): void;
9
13
  /**
10
14
  * Clears the DomRect
15
+ * @public
11
16
  */
12
17
  export declare function clearDomRectMock(): void;
@@ -1,7 +1,13 @@
1
1
  import { PartialDeep } from 'type-fest';
2
- /** Mocks the Resize Observer */
2
+ /**
3
+ * Mocks the Resize Observer
4
+ * @public
5
+ */
3
6
  export declare function setupResizeObserverMock(
4
7
  /** When the Resize Observer should return specific results, you can pass them here */
5
8
  mockedObserveCallbackValue?: PartialDeep<ResizeObserverEntry>[]): void;
6
- /** Clears the Resize Observer */
9
+ /**
10
+ * Clears the Resize Observer
11
+ * @public
12
+ */
7
13
  export declare function clearResizeObserverMock(): void;
@@ -1,4 +1,10 @@
1
- /** Mocks the return value of the `scrollWidth` property on all `HTMLElements`. */
1
+ /**
2
+ * Mocks the return value of the `scrollWidth` property on all `HTMLElements`.
3
+ * @public
4
+ */
2
5
  export declare function setupScrollWidthMock(scrollWidth: number): void;
3
- /** Clears mocked `scrollWidth` property on `HTMLElements`. */
6
+ /**
7
+ * Clears mocked `scrollWidth` property on `HTMLElements`.
8
+ * @public
9
+ */
4
10
  export declare function clearScrollWidthMock(): void;
@@ -1,4 +1,10 @@
1
- /** Mocks DOM properties and functions required for the TextEllipsis component to work. */
1
+ /**
2
+ * Mocks DOM properties and functions required for the TextEllipsis component to work.
3
+ * @public
4
+ */
2
5
  export declare function setupTextEllipsisMock(containerWidth?: number, textWidth?: number, mockCanvas?: boolean): void;
3
- /** Clears mocked DOM properties and functions required for the TextEllipsis component to work. */
6
+ /**
7
+ * Clears mocked DOM properties and functions required for the TextEllipsis component to work.
8
+ * @public
9
+ */
4
10
  export declare function clearTextEllipsisMock(): void;
@@ -1,3 +1,6 @@
1
+ /**
2
+ * @public
3
+ */
1
4
  export declare const stratoPreset: {
2
5
  moduleNameMapper: {
3
6
  '^d3-(.*)$': string;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,13 @@
1
+ var import_canvas_mock = require("../mocks/canvas-mock.js");
2
+ var import_dom_rect_mock = require("../mocks/dom-rect-mock.js");
3
+ var import_resize_observer_mock = require("../mocks/resize-observer-mock.js");
4
+ beforeAll(() => {
5
+ (0, import_resize_observer_mock.setupResizeObserverMock)();
6
+ (0, import_dom_rect_mock.setupDomRectMock)();
7
+ (0, import_canvas_mock.setupCanvasMeasureTextMock)(-Infinity);
8
+ });
9
+ afterAll(() => {
10
+ (0, import_resize_observer_mock.clearResizeObserverMock)();
11
+ (0, import_canvas_mock.clearCanvasMeasureTextMock)();
12
+ (0, import_dom_rect_mock.clearDomRectMock)();
13
+ });
package/jest/setup.d.ts CHANGED
@@ -1,4 +1,14 @@
1
- /** Sets up design-system mocks. */
1
+ /**
2
+ * Sets up design-system mocks.
3
+ *
4
+ * @deprecated Plase add `@dynatrace/strato-components-testing/jest/setup` to `setupFilesAfterEnv` your jest config instead now.
5
+ * @public
6
+ */
2
7
  export declare function setup(): void;
3
- /** Resets design-system mocks. */
8
+ /**
9
+ * Resets design-system mocks.
10
+ *
11
+ * @deprecated Plase add `@dynatrace/strato-components-testing/jest/setup` to `setupFilesAfterEnv` your jest config instead now.
12
+ * @public
13
+ */
4
14
  export declare function clear(): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynatrace/strato-components-testing",
3
- "version": "1.1.0",
3
+ "version": "1.3.0",
4
4
  "private": false,
5
5
  "license": "Apache-2.0",
6
6
  "types": "./index.d.ts",
@@ -20,6 +20,13 @@
20
20
  "browser": "./esm/jest/index.js",
21
21
  "module": "./esm/jest/index.js",
22
22
  "import": "./esm/jest/index.js"
23
+ },
24
+ "./jest/setup": {
25
+ "types": "./jest/setup/index.d.ts",
26
+ "require": "./jest/setup/index.js",
27
+ "browser": "./esm/jest/setup/index.js",
28
+ "module": "./esm/jest/setup/index.js",
29
+ "import": "./esm/jest/setup/index.js"
23
30
  }
24
31
  },
25
32
  "peerDependencies": {