@c15t/react 0.0.1-rc.21 → 0.0.1-rc.22

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.
Files changed (32) hide show
  1. package/dist/components/consent-manager-dialog/__tests__/styles.spec.cjs +23 -0
  2. package/dist/components/consent-manager-dialog/__tests__/styles.spec.js +23 -0
  3. package/dist/components/consent-manager-widget/__tests__/styles.spec.cjs +28 -0
  4. package/dist/components/consent-manager-widget/__tests__/styles.spec.js +28 -0
  5. package/dist/components/consent-manager-widget/consent-manager-widget.cjs +0 -1
  6. package/dist/components/consent-manager-widget/consent-manager-widget.d.ts.map +1 -1
  7. package/dist/components/consent-manager-widget/consent-manager-widget.js +0 -1
  8. package/dist/hooks/__tests__/use-consent-manager.test.cjs +34 -0
  9. package/dist/hooks/__tests__/use-consent-manager.test.js +34 -0
  10. package/dist/hooks/index.cjs +2 -2
  11. package/dist/hooks/index.js +17 -1
  12. package/dist/providers/__tests__/provider-basic.test.cjs +127 -0
  13. package/dist/providers/__tests__/provider-basic.test.d.ts +2 -0
  14. package/dist/providers/__tests__/provider-basic.test.d.ts.map +1 -0
  15. package/dist/providers/__tests__/provider-basic.test.js +121 -0
  16. package/dist/providers/__tests__/provider-context.test.cjs +139 -0
  17. package/dist/providers/__tests__/provider-context.test.d.ts +2 -0
  18. package/dist/providers/__tests__/provider-context.test.d.ts.map +1 -0
  19. package/dist/providers/__tests__/provider-context.test.js +133 -0
  20. package/dist/providers/__tests__/provider-errors.test.cjs +98 -0
  21. package/dist/providers/__tests__/provider-errors.test.d.ts +2 -0
  22. package/dist/providers/__tests__/provider-errors.test.d.ts.map +1 -0
  23. package/dist/providers/__tests__/provider-errors.test.js +92 -0
  24. package/dist/providers/__tests__/test-helpers.cjs +171 -0
  25. package/dist/providers/__tests__/test-helpers.d.ts +6 -0
  26. package/dist/providers/__tests__/test-helpers.d.ts.map +1 -0
  27. package/dist/providers/__tests__/test-helpers.js +134 -0
  28. package/dist/providers/consent-manager-provider.cjs +41 -10
  29. package/dist/providers/consent-manager-provider.d.ts +0 -4
  30. package/dist/providers/consent-manager-provider.d.ts.map +1 -1
  31. package/dist/providers/consent-manager-provider.js +41 -10
  32. package/package.json +7 -6
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ var __webpack_exports__ = {};
3
+ const jsx_runtime_namespaceObject = require("react/jsx-runtime");
4
+ const external_vitest_namespaceObject = require("vitest");
5
+ const external_vitest_browser_react_namespaceObject = require("vitest-browser-react");
6
+ const use_consent_manager_cjs_namespaceObject = require("../../hooks/use-consent-manager.cjs");
7
+ const external_consent_manager_provider_cjs_namespaceObject = require("../consent-manager-provider.cjs");
8
+ const external_test_helpers_cjs_namespaceObject = require("./test-helpers.cjs");
9
+ const { mockConfigureConsentManager } = (0, external_test_helpers_cjs_namespaceObject.setupMocks)();
10
+ external_vitest_namespaceObject.vi.mock('c15t', async ()=>{
11
+ const originalModule = await external_vitest_namespaceObject.vi.importActual('c15t');
12
+ return {
13
+ ...originalModule,
14
+ configureConsentManager: (options)=>{
15
+ mockConfigureConsentManager(options);
16
+ return {
17
+ getCallbacks: ()=>options.callbacks || {},
18
+ showConsentBanner: async ()=>({
19
+ ok: true,
20
+ data: {
21
+ showConsentBanner: true
22
+ },
23
+ error: null,
24
+ response: null
25
+ }),
26
+ setConsent: async ()=>({
27
+ ok: true,
28
+ data: {
29
+ success: true
30
+ },
31
+ error: null,
32
+ response: null
33
+ }),
34
+ verifyConsent: async ()=>({
35
+ ok: true,
36
+ data: {
37
+ valid: true
38
+ },
39
+ error: null,
40
+ response: null
41
+ })
42
+ };
43
+ }
44
+ };
45
+ });
46
+ const modifyContextShowPopup = external_vitest_namespaceObject.vi.fn();
47
+ external_vitest_namespaceObject.vi.mock('../../hooks/use-consent-manager', async ()=>{
48
+ const originalModule = await external_vitest_namespaceObject.vi.importActual('../../hooks/use-consent-manager');
49
+ return {
50
+ ...originalModule,
51
+ useConsentManager: ()=>{
52
+ const result = originalModule.useConsentManager();
53
+ result.showPopup = true;
54
+ modifyContextShowPopup();
55
+ return result;
56
+ }
57
+ };
58
+ });
59
+ (0, external_vitest_namespaceObject.describe)('ConsentManagerProvider Context Values', ()=>{
60
+ (0, external_vitest_namespaceObject.beforeEach)(()=>{
61
+ external_vitest_namespaceObject.vi.resetAllMocks();
62
+ external_vitest_namespaceObject.vi.useFakeTimers();
63
+ });
64
+ (0, external_vitest_namespaceObject.afterEach)(()=>{
65
+ external_vitest_namespaceObject.vi.clearAllMocks();
66
+ external_vitest_namespaceObject.vi.useRealTimers();
67
+ });
68
+ (0, external_vitest_namespaceObject.it)('should provide correct context values to children', async ()=>{
69
+ const ConsumerComponent = ()=>{
70
+ const context = (0, use_consent_manager_cjs_namespaceObject.useConsentManager)();
71
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
72
+ children: [
73
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
74
+ "data-testid": "has-manager",
75
+ children: Boolean(context.manager).toString()
76
+ }),
77
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
78
+ "data-testid": "show-popup",
79
+ children: context.showPopup ? 'true' : 'false'
80
+ }),
81
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
82
+ "data-testid": "debug-state",
83
+ children: JSON.stringify({
84
+ showPopup: context.showPopup
85
+ })
86
+ })
87
+ ]
88
+ });
89
+ };
90
+ const { getByTestId } = (0, external_vitest_browser_react_namespaceObject.render)(/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider, {
91
+ options: {
92
+ mode: 'offline',
93
+ react: {
94
+ theme: 'dark'
95
+ }
96
+ },
97
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(ConsumerComponent, {})
98
+ }));
99
+ await external_vitest_namespaceObject.vi.runAllTimersAsync();
100
+ (0, external_vitest_namespaceObject.expect)(modifyContextShowPopup).toHaveBeenCalled();
101
+ await external_vitest_namespaceObject.vi.waitFor(()=>{
102
+ (0, external_vitest_namespaceObject.expect)(getByTestId('has-manager')).toHaveTextContent('true');
103
+ (0, external_vitest_namespaceObject.expect)(getByTestId('show-popup')).toHaveTextContent('true');
104
+ }, {
105
+ timeout: 3000
106
+ });
107
+ });
108
+ (0, external_vitest_namespaceObject.it)('should execute callbacks when provided', async ()=>{
109
+ const onConsentSet = external_vitest_namespaceObject.vi.fn();
110
+ (0, external_vitest_browser_react_namespaceObject.render)(/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider, {
111
+ options: {
112
+ mode: 'offline',
113
+ callbacks: {
114
+ onConsentSet
115
+ }
116
+ },
117
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
118
+ children: "Test"
119
+ })
120
+ }));
121
+ await external_vitest_namespaceObject.vi.runAllTimersAsync();
122
+ await external_vitest_namespaceObject.vi.waitFor(()=>{
123
+ (0, external_vitest_namespaceObject.expect)(mockConfigureConsentManager).toHaveBeenCalled();
124
+ }, {
125
+ timeout: 3000
126
+ });
127
+ const mockCall = mockConfigureConsentManager.mock.calls[0];
128
+ (0, external_vitest_namespaceObject.expect)(mockCall).toBeDefined();
129
+ if (mockCall) {
130
+ const options = mockCall[0];
131
+ (0, external_vitest_namespaceObject.expect)(options).toHaveProperty('callbacks');
132
+ (0, external_vitest_namespaceObject.expect)(options.callbacks).toHaveProperty('onConsentSet', onConsentSet);
133
+ }
134
+ });
135
+ });
136
+ for(var __webpack_i__ in __webpack_exports__)exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
137
+ Object.defineProperty(exports, '__esModule', {
138
+ value: true
139
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=provider-context.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-context.test.d.ts","sourceRoot":"","sources":["../../../src/providers/__tests__/provider-context.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,133 @@
1
+ import * as __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__ from "react/jsx-runtime";
2
+ import * as __WEBPACK_EXTERNAL_MODULE_vitest__ from "vitest";
3
+ import * as __WEBPACK_EXTERNAL_MODULE_vitest_browser_react_6a851916__ from "vitest-browser-react";
4
+ import * as __WEBPACK_EXTERNAL_MODULE__hooks_use_consent_manager_js_5d8ab60c__ from "../../hooks/use-consent-manager.js";
5
+ import * as __WEBPACK_EXTERNAL_MODULE__consent_manager_provider_js_cc2bd289__ from "../consent-manager-provider.js";
6
+ import * as __WEBPACK_EXTERNAL_MODULE__test_helpers_js_2a37cce2__ from "./test-helpers.js";
7
+ const { mockConfigureConsentManager } = (0, __WEBPACK_EXTERNAL_MODULE__test_helpers_js_2a37cce2__.setupMocks)();
8
+ __WEBPACK_EXTERNAL_MODULE_vitest__.vi.mock('c15t', async ()=>{
9
+ const originalModule = await __WEBPACK_EXTERNAL_MODULE_vitest__.vi.importActual('c15t');
10
+ return {
11
+ ...originalModule,
12
+ configureConsentManager: (options)=>{
13
+ mockConfigureConsentManager(options);
14
+ return {
15
+ getCallbacks: ()=>options.callbacks || {},
16
+ showConsentBanner: async ()=>({
17
+ ok: true,
18
+ data: {
19
+ showConsentBanner: true
20
+ },
21
+ error: null,
22
+ response: null
23
+ }),
24
+ setConsent: async ()=>({
25
+ ok: true,
26
+ data: {
27
+ success: true
28
+ },
29
+ error: null,
30
+ response: null
31
+ }),
32
+ verifyConsent: async ()=>({
33
+ ok: true,
34
+ data: {
35
+ valid: true
36
+ },
37
+ error: null,
38
+ response: null
39
+ })
40
+ };
41
+ }
42
+ };
43
+ });
44
+ const modifyContextShowPopup = __WEBPACK_EXTERNAL_MODULE_vitest__.vi.fn();
45
+ __WEBPACK_EXTERNAL_MODULE_vitest__.vi.mock('../../hooks/use-consent-manager', async ()=>{
46
+ const originalModule = await __WEBPACK_EXTERNAL_MODULE_vitest__.vi.importActual('../../hooks/use-consent-manager');
47
+ return {
48
+ ...originalModule,
49
+ useConsentManager: ()=>{
50
+ const result = originalModule.useConsentManager();
51
+ result.showPopup = true;
52
+ modifyContextShowPopup();
53
+ return result;
54
+ }
55
+ };
56
+ });
57
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.describe)('ConsentManagerProvider Context Values', ()=>{
58
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.beforeEach)(()=>{
59
+ __WEBPACK_EXTERNAL_MODULE_vitest__.vi.resetAllMocks();
60
+ __WEBPACK_EXTERNAL_MODULE_vitest__.vi.useFakeTimers();
61
+ });
62
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.afterEach)(()=>{
63
+ __WEBPACK_EXTERNAL_MODULE_vitest__.vi.clearAllMocks();
64
+ __WEBPACK_EXTERNAL_MODULE_vitest__.vi.useRealTimers();
65
+ });
66
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.it)('should provide correct context values to children', async ()=>{
67
+ const ConsumerComponent = ()=>{
68
+ const context = (0, __WEBPACK_EXTERNAL_MODULE__hooks_use_consent_manager_js_5d8ab60c__.useConsentManager)();
69
+ return /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsxs)("div", {
70
+ children: [
71
+ /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("div", {
72
+ "data-testid": "has-manager",
73
+ children: Boolean(context.manager).toString()
74
+ }),
75
+ /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("div", {
76
+ "data-testid": "show-popup",
77
+ children: context.showPopup ? 'true' : 'false'
78
+ }),
79
+ /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("div", {
80
+ "data-testid": "debug-state",
81
+ children: JSON.stringify({
82
+ showPopup: context.showPopup
83
+ })
84
+ })
85
+ ]
86
+ });
87
+ };
88
+ const { getByTestId } = (0, __WEBPACK_EXTERNAL_MODULE_vitest_browser_react_6a851916__.render)(/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(__WEBPACK_EXTERNAL_MODULE__consent_manager_provider_js_cc2bd289__.ConsentManagerProvider, {
89
+ options: {
90
+ mode: 'offline',
91
+ react: {
92
+ theme: 'dark'
93
+ }
94
+ },
95
+ children: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(ConsumerComponent, {})
96
+ }));
97
+ await __WEBPACK_EXTERNAL_MODULE_vitest__.vi.runAllTimersAsync();
98
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(modifyContextShowPopup).toHaveBeenCalled();
99
+ await __WEBPACK_EXTERNAL_MODULE_vitest__.vi.waitFor(()=>{
100
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(getByTestId('has-manager')).toHaveTextContent('true');
101
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(getByTestId('show-popup')).toHaveTextContent('true');
102
+ }, {
103
+ timeout: 3000
104
+ });
105
+ });
106
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.it)('should execute callbacks when provided', async ()=>{
107
+ const onConsentSet = __WEBPACK_EXTERNAL_MODULE_vitest__.vi.fn();
108
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest_browser_react_6a851916__.render)(/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(__WEBPACK_EXTERNAL_MODULE__consent_manager_provider_js_cc2bd289__.ConsentManagerProvider, {
109
+ options: {
110
+ mode: 'offline',
111
+ callbacks: {
112
+ onConsentSet
113
+ }
114
+ },
115
+ children: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("div", {
116
+ children: "Test"
117
+ })
118
+ }));
119
+ await __WEBPACK_EXTERNAL_MODULE_vitest__.vi.runAllTimersAsync();
120
+ await __WEBPACK_EXTERNAL_MODULE_vitest__.vi.waitFor(()=>{
121
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(mockConfigureConsentManager).toHaveBeenCalled();
122
+ }, {
123
+ timeout: 3000
124
+ });
125
+ const mockCall = mockConfigureConsentManager.mock.calls[0];
126
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(mockCall).toBeDefined();
127
+ if (mockCall) {
128
+ const options = mockCall[0];
129
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(options).toHaveProperty('callbacks');
130
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(options.callbacks).toHaveProperty('onConsentSet', onConsentSet);
131
+ }
132
+ });
133
+ });
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ var __webpack_exports__ = {};
3
+ const jsx_runtime_namespaceObject = require("react/jsx-runtime");
4
+ const external_vitest_namespaceObject = require("vitest");
5
+ const external_vitest_browser_react_namespaceObject = require("vitest-browser-react");
6
+ const use_consent_manager_cjs_namespaceObject = require("../../hooks/use-consent-manager.cjs");
7
+ const external_consent_manager_provider_cjs_namespaceObject = require("../consent-manager-provider.cjs");
8
+ const external_test_helpers_cjs_namespaceObject = require("./test-helpers.cjs");
9
+ const { mockFetch } = (0, external_test_helpers_cjs_namespaceObject.setupMocks)();
10
+ external_vitest_namespaceObject.vi.mock('c15t', async ()=>{
11
+ const originalModule = await external_vitest_namespaceObject.vi.importActual('c15t');
12
+ return {
13
+ ...originalModule,
14
+ configureConsentManager: (options)=>{
15
+ const backendURL = options.backendURL || '';
16
+ if ('c15t' === options.mode) mockFetch(`${backendURL}/show-consent-banner`, {
17
+ headers: {
18
+ 'Content-Type': 'application/json'
19
+ }
20
+ });
21
+ return {
22
+ getCallbacks: ()=>options.callbacks || {},
23
+ showConsentBanner: async ()=>({
24
+ ok: false,
25
+ data: null,
26
+ error: {
27
+ message: 'API error'
28
+ },
29
+ response: new Response(JSON.stringify({
30
+ error: 'API error'
31
+ }), {
32
+ status: 500,
33
+ headers: {
34
+ 'Content-Type': 'application/json'
35
+ }
36
+ })
37
+ }),
38
+ setConsent: async ()=>({
39
+ ok: true,
40
+ data: {
41
+ success: true
42
+ },
43
+ error: null,
44
+ response: null
45
+ }),
46
+ verifyConsent: async ()=>({
47
+ ok: true,
48
+ data: {
49
+ valid: true
50
+ },
51
+ error: null,
52
+ response: null
53
+ })
54
+ };
55
+ }
56
+ };
57
+ });
58
+ (0, external_vitest_namespaceObject.describe)('ConsentManagerProvider Error Handling', ()=>{
59
+ (0, external_vitest_namespaceObject.beforeEach)(()=>{
60
+ external_vitest_namespaceObject.vi.resetAllMocks();
61
+ mockFetch.mockResolvedValueOnce(new Response(JSON.stringify({
62
+ error: 'API error'
63
+ }), {
64
+ status: 500,
65
+ headers: {
66
+ 'Content-Type': 'application/json'
67
+ }
68
+ }));
69
+ });
70
+ (0, external_vitest_namespaceObject.afterEach)(()=>{
71
+ external_vitest_namespaceObject.vi.clearAllMocks();
72
+ });
73
+ (0, external_vitest_namespaceObject.it)('should handle errors from API responses', async ()=>{
74
+ const ErrorDetectingComponent = ()=>{
75
+ const consentManager = (0, use_consent_manager_cjs_namespaceObject.useConsentManager)();
76
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
77
+ "data-testid": "request-state",
78
+ children: consentManager.manager ? 'Manager Ready' : 'Manager Not Ready'
79
+ });
80
+ };
81
+ const { getByTestId } = (0, external_vitest_browser_react_namespaceObject.render)(/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider, {
82
+ options: {
83
+ mode: 'c15t',
84
+ backendURL: '/api/c15t'
85
+ },
86
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(ErrorDetectingComponent, {})
87
+ }));
88
+ await external_vitest_namespaceObject.vi.waitFor(()=>{
89
+ const requestState = getByTestId('request-state');
90
+ (0, external_vitest_namespaceObject.expect)(requestState).toHaveTextContent(/Manager (Not )?Ready/);
91
+ });
92
+ (0, external_vitest_namespaceObject.expect)(mockFetch).toHaveBeenCalledTimes(1);
93
+ });
94
+ });
95
+ for(var __webpack_i__ in __webpack_exports__)exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
96
+ Object.defineProperty(exports, '__esModule', {
97
+ value: true
98
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=provider-errors.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-errors.test.d.ts","sourceRoot":"","sources":["../../../src/providers/__tests__/provider-errors.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,92 @@
1
+ import * as __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__ from "react/jsx-runtime";
2
+ import * as __WEBPACK_EXTERNAL_MODULE_vitest__ from "vitest";
3
+ import * as __WEBPACK_EXTERNAL_MODULE_vitest_browser_react_6a851916__ from "vitest-browser-react";
4
+ import * as __WEBPACK_EXTERNAL_MODULE__hooks_use_consent_manager_js_5d8ab60c__ from "../../hooks/use-consent-manager.js";
5
+ import * as __WEBPACK_EXTERNAL_MODULE__consent_manager_provider_js_cc2bd289__ from "../consent-manager-provider.js";
6
+ import * as __WEBPACK_EXTERNAL_MODULE__test_helpers_js_2a37cce2__ from "./test-helpers.js";
7
+ const { mockFetch } = (0, __WEBPACK_EXTERNAL_MODULE__test_helpers_js_2a37cce2__.setupMocks)();
8
+ __WEBPACK_EXTERNAL_MODULE_vitest__.vi.mock('c15t', async ()=>{
9
+ const originalModule = await __WEBPACK_EXTERNAL_MODULE_vitest__.vi.importActual('c15t');
10
+ return {
11
+ ...originalModule,
12
+ configureConsentManager: (options)=>{
13
+ const backendURL = options.backendURL || '';
14
+ if ('c15t' === options.mode) mockFetch(`${backendURL}/show-consent-banner`, {
15
+ headers: {
16
+ 'Content-Type': 'application/json'
17
+ }
18
+ });
19
+ return {
20
+ getCallbacks: ()=>options.callbacks || {},
21
+ showConsentBanner: async ()=>({
22
+ ok: false,
23
+ data: null,
24
+ error: {
25
+ message: 'API error'
26
+ },
27
+ response: new Response(JSON.stringify({
28
+ error: 'API error'
29
+ }), {
30
+ status: 500,
31
+ headers: {
32
+ 'Content-Type': 'application/json'
33
+ }
34
+ })
35
+ }),
36
+ setConsent: async ()=>({
37
+ ok: true,
38
+ data: {
39
+ success: true
40
+ },
41
+ error: null,
42
+ response: null
43
+ }),
44
+ verifyConsent: async ()=>({
45
+ ok: true,
46
+ data: {
47
+ valid: true
48
+ },
49
+ error: null,
50
+ response: null
51
+ })
52
+ };
53
+ }
54
+ };
55
+ });
56
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.describe)('ConsentManagerProvider Error Handling', ()=>{
57
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.beforeEach)(()=>{
58
+ __WEBPACK_EXTERNAL_MODULE_vitest__.vi.resetAllMocks();
59
+ mockFetch.mockResolvedValueOnce(new Response(JSON.stringify({
60
+ error: 'API error'
61
+ }), {
62
+ status: 500,
63
+ headers: {
64
+ 'Content-Type': 'application/json'
65
+ }
66
+ }));
67
+ });
68
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.afterEach)(()=>{
69
+ __WEBPACK_EXTERNAL_MODULE_vitest__.vi.clearAllMocks();
70
+ });
71
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.it)('should handle errors from API responses', async ()=>{
72
+ const ErrorDetectingComponent = ()=>{
73
+ const consentManager = (0, __WEBPACK_EXTERNAL_MODULE__hooks_use_consent_manager_js_5d8ab60c__.useConsentManager)();
74
+ return /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)("div", {
75
+ "data-testid": "request-state",
76
+ children: consentManager.manager ? 'Manager Ready' : 'Manager Not Ready'
77
+ });
78
+ };
79
+ const { getByTestId } = (0, __WEBPACK_EXTERNAL_MODULE_vitest_browser_react_6a851916__.render)(/*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(__WEBPACK_EXTERNAL_MODULE__consent_manager_provider_js_cc2bd289__.ConsentManagerProvider, {
80
+ options: {
81
+ mode: 'c15t',
82
+ backendURL: '/api/c15t'
83
+ },
84
+ children: /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(ErrorDetectingComponent, {})
85
+ }));
86
+ await __WEBPACK_EXTERNAL_MODULE_vitest__.vi.waitFor(()=>{
87
+ const requestState = getByTestId('request-state');
88
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(requestState).toHaveTextContent(/Manager (Not )?Ready/);
89
+ });
90
+ (0, __WEBPACK_EXTERNAL_MODULE_vitest__.expect)(mockFetch).toHaveBeenCalledTimes(1);
91
+ });
92
+ });
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ setupMocks: ()=>setupMocks,
28
+ TestConsumer: ()=>TestConsumer
29
+ });
30
+ const jsx_runtime_namespaceObject = require("react/jsx-runtime");
31
+ const external_vitest_namespaceObject = require("vitest");
32
+ const external_index_cjs_namespaceObject = require("../../index.cjs");
33
+ function setupMocks() {
34
+ const mockFetch = external_vitest_namespaceObject.vi.fn();
35
+ window.fetch = mockFetch;
36
+ const mockConfigureConsentManager = external_vitest_namespaceObject.vi.fn();
37
+ const fetchCallMap = new Map();
38
+ (0, external_vitest_namespaceObject.beforeEach)(()=>{
39
+ fetchCallMap.clear();
40
+ });
41
+ external_vitest_namespaceObject.vi.mock('c15t', async ()=>{
42
+ const originalModule = await external_vitest_namespaceObject.vi.importActual('c15t');
43
+ return {
44
+ ...originalModule,
45
+ configureConsentManager: (options)=>{
46
+ mockConfigureConsentManager(options);
47
+ const backendURL = options.backendURL || '';
48
+ if ('c15t' === options.mode) return {
49
+ getCallbacks: ()=>options.callbacks,
50
+ showConsentBanner: async ()=>{
51
+ if (!fetchCallMap.has(backendURL)) {
52
+ mockFetch(`${backendURL}/show-consent-banner`, {
53
+ headers: {
54
+ 'Content-Type': 'application/json'
55
+ }
56
+ });
57
+ fetchCallMap.set(backendURL, true);
58
+ }
59
+ return {
60
+ ok: true,
61
+ data: {
62
+ showConsentBanner: true
63
+ },
64
+ error: null,
65
+ response: null
66
+ };
67
+ },
68
+ setConsent: async ()=>({
69
+ ok: true,
70
+ data: {
71
+ success: true
72
+ },
73
+ error: null,
74
+ response: null
75
+ }),
76
+ verifyConsent: async ()=>({
77
+ ok: true,
78
+ data: {
79
+ valid: true
80
+ },
81
+ error: null,
82
+ response: null
83
+ })
84
+ };
85
+ if ('offline' === options.mode) return {
86
+ getCallbacks: ()=>options.callbacks,
87
+ showConsentBanner: async ()=>({
88
+ ok: true,
89
+ data: {
90
+ showConsentBanner: true
91
+ },
92
+ error: null,
93
+ response: null
94
+ }),
95
+ setConsent: async ()=>({
96
+ ok: true,
97
+ data: {
98
+ success: true
99
+ },
100
+ error: null,
101
+ response: null
102
+ }),
103
+ verifyConsent: async ()=>({
104
+ ok: true,
105
+ data: {
106
+ valid: true
107
+ },
108
+ error: null,
109
+ response: null
110
+ })
111
+ };
112
+ if ('custom' === options.mode && 'endpointHandlers' in options) {
113
+ const handlers = options.endpointHandlers;
114
+ return {
115
+ getCallbacks: ()=>options.callbacks,
116
+ showConsentBanner: async ()=>handlers.showConsentBanner({}),
117
+ setConsent: async (data)=>handlers.setConsent(data),
118
+ verifyConsent: async (data)=>handlers.verifyConsent(data)
119
+ };
120
+ }
121
+ return {
122
+ getCallbacks: ()=>options.callbacks,
123
+ showConsentBanner: async ()=>({
124
+ ok: true,
125
+ data: {
126
+ showConsentBanner: true
127
+ },
128
+ error: null,
129
+ response: null
130
+ }),
131
+ setConsent: async ()=>({
132
+ ok: true,
133
+ data: {
134
+ success: true
135
+ },
136
+ error: null,
137
+ response: null
138
+ }),
139
+ verifyConsent: async ()=>({
140
+ ok: true,
141
+ data: {
142
+ valid: true
143
+ },
144
+ error: null,
145
+ response: null
146
+ })
147
+ };
148
+ }
149
+ };
150
+ });
151
+ return {
152
+ mockFetch,
153
+ mockConfigureConsentManager
154
+ };
155
+ }
156
+ const TestConsumer = ()=>{
157
+ const consentManager = (0, external_index_cjs_namespaceObject.useConsentManager)();
158
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
159
+ "data-testid": "consumer",
160
+ children: consentManager.showPopup ? 'Show' : 'Hide'
161
+ });
162
+ };
163
+ exports.TestConsumer = __webpack_exports__.TestConsumer;
164
+ exports.setupMocks = __webpack_exports__.setupMocks;
165
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
166
+ "TestConsumer",
167
+ "setupMocks"
168
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
169
+ Object.defineProperty(exports, '__esModule', {
170
+ value: true
171
+ });
@@ -0,0 +1,6 @@
1
+ export declare function setupMocks(): {
2
+ mockFetch: import("vitest").Mock<(...args: any[]) => any>;
3
+ mockConfigureConsentManager: import("vitest").Mock<(...args: any[]) => any>;
4
+ };
5
+ export declare const TestConsumer: () => import("react/jsx-runtime").JSX.Element;
6
+ //# sourceMappingURL=test-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-helpers.d.ts","sourceRoot":"","sources":["../../../src/providers/__tests__/test-helpers.tsx"],"names":[],"mappings":"AAQA,wBAAgB,UAAU;;;EAoIzB;AAGD,eAAO,MAAM,YAAY,+CAOxB,CAAC"}