@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.
- package/dist/components/consent-manager-dialog/__tests__/styles.spec.cjs +23 -0
- package/dist/components/consent-manager-dialog/__tests__/styles.spec.js +23 -0
- package/dist/components/consent-manager-widget/__tests__/styles.spec.cjs +28 -0
- package/dist/components/consent-manager-widget/__tests__/styles.spec.js +28 -0
- package/dist/components/consent-manager-widget/consent-manager-widget.cjs +0 -1
- package/dist/components/consent-manager-widget/consent-manager-widget.d.ts.map +1 -1
- package/dist/components/consent-manager-widget/consent-manager-widget.js +0 -1
- package/dist/hooks/__tests__/use-consent-manager.test.cjs +34 -0
- package/dist/hooks/__tests__/use-consent-manager.test.js +34 -0
- package/dist/hooks/index.cjs +2 -2
- package/dist/hooks/index.js +17 -1
- package/dist/providers/__tests__/provider-basic.test.cjs +127 -0
- package/dist/providers/__tests__/provider-basic.test.d.ts +2 -0
- package/dist/providers/__tests__/provider-basic.test.d.ts.map +1 -0
- package/dist/providers/__tests__/provider-basic.test.js +121 -0
- package/dist/providers/__tests__/provider-context.test.cjs +139 -0
- package/dist/providers/__tests__/provider-context.test.d.ts +2 -0
- package/dist/providers/__tests__/provider-context.test.d.ts.map +1 -0
- package/dist/providers/__tests__/provider-context.test.js +133 -0
- package/dist/providers/__tests__/provider-errors.test.cjs +98 -0
- package/dist/providers/__tests__/provider-errors.test.d.ts +2 -0
- package/dist/providers/__tests__/provider-errors.test.d.ts.map +1 -0
- package/dist/providers/__tests__/provider-errors.test.js +92 -0
- package/dist/providers/__tests__/test-helpers.cjs +171 -0
- package/dist/providers/__tests__/test-helpers.d.ts +6 -0
- package/dist/providers/__tests__/test-helpers.d.ts.map +1 -0
- package/dist/providers/__tests__/test-helpers.js +134 -0
- package/dist/providers/consent-manager-provider.cjs +41 -10
- package/dist/providers/consent-manager-provider.d.ts +0 -4
- package/dist/providers/consent-manager-provider.d.ts.map +1 -1
- package/dist/providers/consent-manager-provider.js +41 -10
- 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 @@
|
|
|
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 @@
|
|
|
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"}
|