UNPKG

@c15t/react

Version:

Developer-first CMP for React: cookie banner, consent manager, preferences centre. GDPR ready with minimal setup and rich customization

1 lines 5.4 kB
"use strict";let __rslib_import_meta_url__="undefined"==typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_exports__={};let jsx_runtime_namespaceObject=require("react/jsx-runtime"),external_c15t_namespaceObject=require("c15t"),external_vitest_namespaceObject=require("vitest"),external_vitest_browser_react_namespaceObject=require("vitest-browser-react"),external_index_cjs_namespaceObject=require("../../index.cjs"),mockFetch=external_vitest_namespaceObject.vi.fn();for(var __webpack_i__ in window.fetch=mockFetch,(0,external_vitest_namespaceObject.describe)("ConsentManagerProvider Basic Request Behavior",()=>{(0,external_vitest_namespaceObject.beforeEach)(()=>{external_vitest_namespaceObject.vi.resetAllMocks(),external_vitest_namespaceObject.vi.useFakeTimers(),mockFetch.mockResolvedValue(new Response(JSON.stringify({showConsentBanner:!0,jurisdiction:{code:"GDPR"},translations:{language:"en",translations:external_c15t_namespaceObject.defaultTranslationConfig.translations.en}}),{status:200,headers:{"Content-Type":"application/json"}}))}),(0,external_vitest_namespaceObject.afterEach)(()=>{external_vitest_namespaceObject.vi.clearAllMocks(),external_vitest_namespaceObject.vi.useRealTimers()}),(0,external_vitest_namespaceObject.it)("should only make one initial request for consent banner status",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsx)(external_index_cjs_namespaceObject.ConsentManagerProvider,{options:{mode:"c15t",backendURL:"/api/c15t"},children:(0,jsx_runtime_namespaceObject.jsx)("div",{children:"Test Component"})})),await external_vitest_namespaceObject.vi.runAllTimersAsync(),(0,external_vitest_namespaceObject.expect)(mockFetch).toHaveBeenCalledTimes(1),(0,external_vitest_namespaceObject.expect)(mockFetch).toHaveBeenCalledWith(external_vitest_namespaceObject.expect.stringContaining("/api/c15t/show-consent-banner"),external_vitest_namespaceObject.expect.any(Object))}),(0,external_vitest_namespaceObject.it)("should not make additional requests when props change but core options remain same",async()=>{mockFetch.mockClear();let{rerender:e}=(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsx)(external_index_cjs_namespaceObject.ConsentManagerProvider,{options:{mode:"offline",react:{theme:{"banner.root":"light"}}},children:(0,jsx_runtime_namespaceObject.jsx)("div",{children:"Light theme"})}));await external_vitest_namespaceObject.vi.runAllTimersAsync(),(0,external_vitest_namespaceObject.expect)(mockFetch).not.toHaveBeenCalled(),e((0,jsx_runtime_namespaceObject.jsx)(external_index_cjs_namespaceObject.ConsentManagerProvider,{options:{mode:"offline",react:{theme:{"banner.root":"dark"}}},children:(0,jsx_runtime_namespaceObject.jsx)("div",{children:"Dark theme"})})),await external_vitest_namespaceObject.vi.runAllTimersAsync(),(0,external_vitest_namespaceObject.expect)(mockFetch).not.toHaveBeenCalled()}),(0,external_vitest_namespaceObject.it)("should make a new request when core options change",async()=>{let{rerender:e}=(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsx)(external_index_cjs_namespaceObject.ConsentManagerProvider,{options:{mode:"c15t",backendURL:"/api/c15t-1"},children:(0,jsx_runtime_namespaceObject.jsx)("div",{children:"First URL"})}));await external_vitest_namespaceObject.vi.runAllTimersAsync(),(0,external_vitest_namespaceObject.expect)(mockFetch).toHaveBeenCalledTimes(1),(0,external_vitest_namespaceObject.expect)(mockFetch).toHaveBeenCalledWith(external_vitest_namespaceObject.expect.stringContaining("/api/c15t-1/show-consent-banner"),external_vitest_namespaceObject.expect.any(Object)),mockFetch.mockClear(),e((0,jsx_runtime_namespaceObject.jsx)(external_index_cjs_namespaceObject.ConsentManagerProvider,{options:{mode:"c15t",backendURL:"/api/c15t-2"},children:(0,jsx_runtime_namespaceObject.jsx)("div",{children:"Second URL"})})),await external_vitest_namespaceObject.vi.runAllTimersAsync(),(0,external_vitest_namespaceObject.expect)(mockFetch).toHaveBeenCalledWith(external_vitest_namespaceObject.expect.stringContaining("/api/c15t-2/show-consent-banner"),external_vitest_namespaceObject.expect.any(Object))}),(0,external_vitest_namespaceObject.it)("should handle rapid re-renders without making duplicate requests",async()=>{mockFetch.mockClear();let{rerender:e}=(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsx)(external_index_cjs_namespaceObject.ConsentManagerProvider,{options:{mode:"offline"},children:(0,jsx_runtime_namespaceObject.jsx)("div",{children:"Counter: 0"})}));await external_vitest_namespaceObject.vi.runAllTimersAsync(),(0,external_vitest_namespaceObject.expect)(mockFetch).not.toHaveBeenCalled();for(let t=1;t<=5;t++)e((0,jsx_runtime_namespaceObject.jsx)(external_index_cjs_namespaceObject.ConsentManagerProvider,{options:{mode:"offline"},children:(0,jsx_runtime_namespaceObject.jsxs)("div",{children:["Counter: ",t]})})),await external_vitest_namespaceObject.vi.runAllTimersAsync();(0,external_vitest_namespaceObject.expect)(mockFetch).not.toHaveBeenCalled()})}),__webpack_exports__)exports[__webpack_i__]=__webpack_exports__[__webpack_i__];Object.defineProperty(exports,"__esModule",{value:!0});