@times-components/ts-components 1.112.1 → 1.113.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/CHANGELOG.md +11 -0
- package/dist/components/social-embed/BlockedEmbedMessage.d.ts +6 -0
- package/dist/components/social-embed/BlockedEmbedMessage.js +39 -0
- package/dist/components/social-embed/SocialMediaEmbed.d.ts +19 -0
- package/dist/components/social-embed/SocialMediaEmbed.js +27 -0
- package/dist/components/social-embed/SocialVendor.d.ts +17 -0
- package/dist/components/social-embed/SocialVendor.js +14 -0
- package/dist/components/social-embed/__tests__/BlockedEmbedMessage.test.d.ts +1 -0
- package/dist/components/social-embed/__tests__/BlockedEmbedMessage.test.js +70 -0
- package/dist/components/social-embed/__tests__/SocialMediaEmbed.test.d.ts +1 -0
- package/dist/components/social-embed/__tests__/SocialMediaEmbed.test.js +99 -0
- package/dist/components/social-embed/__tests__/SocialVendor.test.d.ts +1 -0
- package/dist/components/social-embed/__tests__/SocialVendor.test.js +34 -0
- package/dist/components/social-embed/components/TiktokComponent.d.ts +3 -0
- package/dist/components/social-embed/components/TiktokComponent.js +17 -0
- package/dist/components/social-embed/components/TwitterComponent.d.ts +3 -0
- package/dist/components/social-embed/components/TwitterComponent.js +6 -0
- package/dist/components/social-embed/components/YoutubeComponent.d.ts +3 -0
- package/dist/components/social-embed/components/YoutubeComponent.js +5 -0
- package/dist/components/social-embed/components/__tests__/TiktokComponent.test.d.ts +1 -0
- package/dist/components/social-embed/components/__tests__/TiktokComponent.test.js +36 -0
- package/dist/components/social-embed/components/__tests__/TwitterComponent.test.d.ts +1 -0
- package/dist/components/social-embed/components/__tests__/TwitterComponent.test.js +18 -0
- package/dist/components/social-embed/components/__tests__/YoutubeComponent.test.d.ts +1 -0
- package/dist/components/social-embed/components/__tests__/YoutubeComponent.test.js +20 -0
- package/dist/components/social-embed/constants.d.ts +12 -0
- package/dist/components/social-embed/constants.js +13 -0
- package/dist/components/social-embed/helpers/__tests__/enableCookies.test.d.ts +1 -0
- package/dist/components/social-embed/helpers/__tests__/enableCookies.test.js +46 -0
- package/dist/components/social-embed/helpers/__tests__/getVendorTitle.test.d.ts +1 -0
- package/dist/components/social-embed/helpers/__tests__/getVendorTitle.test.js +20 -0
- package/dist/components/social-embed/helpers/__tests__/privacyModal.test.d.ts +1 -0
- package/dist/components/social-embed/helpers/__tests__/privacyModal.test.js +36 -0
- package/dist/components/social-embed/helpers/__tests__/vendorConsent.test.d.ts +1 -0
- package/dist/components/social-embed/helpers/__tests__/vendorConsent.test.js +49 -0
- package/dist/components/social-embed/helpers/enableCookies.d.ts +2 -0
- package/dist/components/social-embed/helpers/enableCookies.js +32 -0
- package/dist/components/social-embed/helpers/getVendorTitle.d.ts +1 -0
- package/dist/components/social-embed/helpers/getVendorTitle.js +7 -0
- package/dist/components/social-embed/helpers/privacyModal.d.ts +2 -0
- package/dist/components/social-embed/helpers/privacyModal.js +12 -0
- package/dist/components/social-embed/helpers/socialMediaVendors.d.ts +7 -0
- package/dist/components/social-embed/helpers/socialMediaVendors.js +14 -0
- package/dist/components/social-embed/helpers/vendorConsent.d.ts +2 -0
- package/dist/components/social-embed/helpers/vendorConsent.js +17 -0
- package/dist/components/social-embed/styles.d.ts +8 -0
- package/dist/components/social-embed/styles.js +78 -0
- package/dist/components/social-embed/types.d.ts +9 -0
- package/dist/components/social-embed/types.js +2 -0
- package/dist/components/updated-timestamp/__tests__/UpdatedTimestamp.test.js +18 -12
- package/dist/contexts/SocialEmbedsProvider.d.ts +10 -0
- package/dist/contexts/SocialEmbedsProvider.js +36 -0
- package/dist/contexts/__tests__/SocialEmbedsProvider.test.d.ts +1 -0
- package/dist/contexts/__tests__/SocialEmbedsProvider.test.js +55 -0
- package/dist/fixtures/analytics-actions/__tests__/analytics-actions.test.d.ts +1 -0
- package/dist/fixtures/analytics-actions/__tests__/analytics-actions.test.js +35 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +4 -1
- package/jest.config.js +1 -1
- package/package.json +5 -4
- package/rnw.js +1 -1
- package/src/components/social-embed/BlockedEmbedMessage.tsx +75 -0
- package/src/components/social-embed/SocialMediaEmbed.tsx +71 -0
- package/src/components/social-embed/SocialVendor.tsx +23 -0
- package/src/components/social-embed/__tests__/BlockedEmbedMessage.test.tsx +98 -0
- package/src/components/social-embed/__tests__/SocialMediaEmbed.test.tsx +140 -0
- package/src/components/social-embed/__tests__/SocialVendor.test.tsx +58 -0
- package/src/components/social-embed/components/TiktokComponent.tsx +29 -0
- package/src/components/social-embed/components/TwitterComponent.tsx +9 -0
- package/src/components/social-embed/components/YoutubeComponent.tsx +13 -0
- package/src/components/social-embed/components/__tests__/TiktokComponent.test.tsx +51 -0
- package/src/components/social-embed/components/__tests__/TwitterComponent.test.tsx +21 -0
- package/src/components/social-embed/components/__tests__/YoutubeComponent.test.tsx +27 -0
- package/src/components/social-embed/constants.ts +14 -0
- package/src/components/social-embed/helpers/__tests__/enableCookies.test.ts +73 -0
- package/src/components/social-embed/helpers/__tests__/getVendorTitle.test.ts +23 -0
- package/src/components/social-embed/helpers/__tests__/privacyModal.test.ts +55 -0
- package/src/components/social-embed/helpers/__tests__/vendorConsent.test.ts +62 -0
- package/src/components/social-embed/helpers/enableCookies.ts +48 -0
- package/src/components/social-embed/helpers/getVendorTitle.ts +9 -0
- package/src/components/social-embed/helpers/privacyModal.ts +13 -0
- package/src/components/social-embed/helpers/socialMediaVendors.ts +15 -0
- package/src/components/social-embed/helpers/vendorConsent.ts +28 -0
- package/src/components/social-embed/styles.ts +85 -0
- package/src/components/social-embed/types.ts +13 -0
- package/src/components/updated-timestamp/__tests__/UpdatedTimestamp.test.tsx +17 -17
- package/src/components/updated-timestamp/__tests__/__snapshots__/UpdatedTimestamp.test.tsx.snap +0 -20
- package/src/contexts/SocialEmbedsProvider.tsx +67 -0
- package/src/contexts/__tests__/SocialEmbedsProvider.test.tsx +86 -0
- package/src/fixtures/analytics-actions/__tests__/analytics-actions.test.tsx +47 -0
- package/src/index.ts +8 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [1.113.0](https://github.com/newsuk/times-components/compare/@times-components/ts-components@1.112.1...@times-components/ts-components@1.113.0) (2024-12-05)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* **TMC-0000:** Implement social embeds ([#3989](https://github.com/newsuk/times-components/issues/3989)) ([4a4e7cd](https://github.com/newsuk/times-components/commit/4a4e7cdceec5fe7402b4403170013f325eec8a84))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
## [1.112.1](https://github.com/newsuk/times-components/compare/@times-components/ts-components@1.112.0...@times-components/ts-components@1.112.1) (2024-12-03)
|
|
7
18
|
|
|
8
19
|
**Note:** Version bump only for package @times-components/ts-components
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { AllowButton, CardContainer, CustomIconContainer, EnableButton, Header, LinkPrivacyManager, Paragraph, Title } from './styles';
|
|
3
|
+
import { InfoIcon } from '../inline-message/InfoIcon';
|
|
4
|
+
import { getVendorTitle } from './helpers/getVendorTitle';
|
|
5
|
+
import { enableCookies } from './helpers/enableCookies';
|
|
6
|
+
import { openPrivacyModal } from './helpers/privacyModal';
|
|
7
|
+
import { socialMediaVendors } from './helpers/socialMediaVendors';
|
|
8
|
+
import { modalType } from './constants';
|
|
9
|
+
import { useSocialEmbedsContext } from '../../contexts/SocialEmbedsProvider';
|
|
10
|
+
export const BlockedEmbedMessage = ({ vendorName }) => {
|
|
11
|
+
const { setIsSocialEmbedAllowed, setIsAllowedOnce } = useSocialEmbedsContext();
|
|
12
|
+
const allowCookiesOnce = () => {
|
|
13
|
+
setIsAllowedOnce(prev => ({
|
|
14
|
+
...prev,
|
|
15
|
+
[vendorName]: true
|
|
16
|
+
}));
|
|
17
|
+
};
|
|
18
|
+
const handleEnableCookies = () => {
|
|
19
|
+
enableCookies(vendorName, setIsSocialEmbedAllowed);
|
|
20
|
+
};
|
|
21
|
+
const handlePrivacyManagerClick = (e) => {
|
|
22
|
+
e.preventDefault();
|
|
23
|
+
openPrivacyModal(modalType.GDPR, window.__TIMES_CONFIG__.sourcepoint.gdprMessageId);
|
|
24
|
+
};
|
|
25
|
+
return (React.createElement(CardContainer, null,
|
|
26
|
+
React.createElement(Header, null,
|
|
27
|
+
React.createElement(CustomIconContainer, null,
|
|
28
|
+
React.createElement(InfoIcon, null)),
|
|
29
|
+
React.createElement(Title, null,
|
|
30
|
+
getVendorTitle(vendorName, socialMediaVendors),
|
|
31
|
+
" content blocked")),
|
|
32
|
+
React.createElement(Paragraph, null,
|
|
33
|
+
"Please enable cookies and other technologies to view this content. You can update your cookies preferences any time using",
|
|
34
|
+
' ',
|
|
35
|
+
React.createElement(LinkPrivacyManager, { href: "#", onClick: handlePrivacyManagerClick }, "privacy manager.")),
|
|
36
|
+
React.createElement(EnableButton, { onClick: handleEnableCookies }, "Enable cookies"),
|
|
37
|
+
React.createElement(AllowButton, { onClick: () => allowCookiesOnce() }, "Allow cookies once")));
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmxvY2tlZEVtYmVkTWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NvY2lhbC1lbWJlZC9CbG9ja2VkRW1iZWRNZXNzYWdlLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQXlCLE1BQU0sT0FBTyxDQUFDO0FBQzlDLE9BQU8sRUFDTCxXQUFXLEVBQ1gsYUFBYSxFQUNiLG1CQUFtQixFQUNuQixZQUFZLEVBQ1osTUFBTSxFQUNOLGtCQUFrQixFQUNsQixTQUFTLEVBQ1QsS0FBSyxFQUNOLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRWxFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFNN0UsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQWlDLENBQUMsRUFDaEUsVUFBVSxFQUNYLEVBQUUsRUFBRTtJQUNILE1BQU0sRUFDSix1QkFBdUIsRUFDdkIsZ0JBQWdCLEVBQ2pCLEdBQUcsc0JBQXNCLEVBQUUsQ0FBQztJQUU3QixNQUFNLGdCQUFnQixHQUFHLEdBQUcsRUFBRTtRQUM1QixnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDeEIsR0FBRyxJQUFJO1lBQ1AsQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJO1NBQ25CLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQyxDQUFDO0lBRUYsTUFBTSxtQkFBbUIsR0FBRyxHQUFHLEVBQUU7UUFDL0IsYUFBYSxDQUFDLFVBQVUsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO0lBQ3JELENBQUMsQ0FBQztJQUVGLE1BQU0seUJBQXlCLEdBQUcsQ0FBQyxDQUFnQyxFQUFFLEVBQUU7UUFDckUsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ25CLGdCQUFnQixDQUNkLFNBQVMsQ0FBQyxJQUFJLEVBQ2QsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQ2xELENBQUM7SUFDSixDQUFDLENBQUM7SUFFRixPQUFPLENBQ0wsb0JBQUMsYUFBYTtRQUNaLG9CQUFDLE1BQU07WUFDTCxvQkFBQyxtQkFBbUI7Z0JBQ2xCLG9CQUFDLFFBQVEsT0FBRyxDQUNRO1lBQ3RCLG9CQUFDLEtBQUs7Z0JBQ0gsY0FBYyxDQUFDLFVBQVUsRUFBRSxrQkFBa0IsQ0FBQzttQ0FDekMsQ0FDRDtRQUNULG9CQUFDLFNBQVM7O1lBRTJDLEdBQUc7WUFDdEQsb0JBQUMsa0JBQWtCLElBQUMsSUFBSSxFQUFDLEdBQUcsRUFBQyxPQUFPLEVBQUUseUJBQXlCLHVCQUUxQyxDQUNYO1FBQ1osb0JBQUMsWUFBWSxJQUFDLE9BQU8sRUFBRSxtQkFBbUIscUJBQStCO1FBQ3pFLG9CQUFDLFdBQVcsSUFBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUseUJBRWhDLENBQ0EsQ0FDakIsQ0FBQztBQUNKLENBQUMsQ0FBQyJ9
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { TcData, VendorName } from './types';
|
|
3
|
+
declare global {
|
|
4
|
+
interface Window {
|
|
5
|
+
__tcfapi?: (command: string, version: number, callback: (data: TcData, success: boolean) => void, listenerId?: number) => void;
|
|
6
|
+
twttr?: {
|
|
7
|
+
widgets: {
|
|
8
|
+
load: (element?: HTMLElement) => void;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export declare type SocialMediaEmbedProps = {
|
|
14
|
+
element?: any;
|
|
15
|
+
url: string;
|
|
16
|
+
vendorName: VendorName;
|
|
17
|
+
id: string;
|
|
18
|
+
};
|
|
19
|
+
export declare const SocialMediaEmbed: FC<SocialMediaEmbedProps>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React, { useEffect } from 'react';
|
|
2
|
+
import { BlockedEmbedMessage } from './BlockedEmbedMessage';
|
|
3
|
+
import { checkVendorConsent } from './helpers/vendorConsent';
|
|
4
|
+
import { eventStatus } from './constants';
|
|
5
|
+
import { useSocialEmbedsContext } from '../../contexts/SocialEmbedsProvider';
|
|
6
|
+
import { Vendor } from './SocialVendor';
|
|
7
|
+
export const SocialMediaEmbed = ({ id, url, vendorName }) => {
|
|
8
|
+
const { setIsSocialEmbedAllowed, isAllowedOnce, isSocialEmbedAllowed } = useSocialEmbedsContext();
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
if (window.__tcfapi) {
|
|
11
|
+
window.__tcfapi('addEventListener', 2, (tcData, success) => {
|
|
12
|
+
if (success &&
|
|
13
|
+
(tcData.eventStatus === eventStatus.tcLoaded ||
|
|
14
|
+
tcData.eventStatus === eventStatus.userActionComplete)) {
|
|
15
|
+
const consent = checkVendorConsent(vendorName);
|
|
16
|
+
setIsSocialEmbedAllowed(prev => ({
|
|
17
|
+
...prev,
|
|
18
|
+
[vendorName]: consent
|
|
19
|
+
}));
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
}, [vendorName, setIsSocialEmbedAllowed]);
|
|
24
|
+
return isSocialEmbedAllowed[vendorName] || isAllowedOnce[vendorName] ? (React.createElement("div", { id: id },
|
|
25
|
+
React.createElement(Vendor, { vendorName: vendorName, url: url }))) : (React.createElement(BlockedEmbedMessage, { vendorName: vendorName }));
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU29jaWFsTWVkaWFFbWJlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NvY2lhbC1lbWJlZC9Tb2NpYWxNZWRpYUVtYmVkLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxFQUFNLFNBQVMsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUM3QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQXlCeEMsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQThCLENBQUMsRUFDMUQsRUFBRSxFQUNGLEdBQUcsRUFDSCxVQUFVLEVBQ1gsRUFBRSxFQUFFO0lBQ0gsTUFBTSxFQUNKLHVCQUF1QixFQUN2QixhQUFhLEVBQ2Isb0JBQW9CLEVBQ3JCLEdBQUcsc0JBQXNCLEVBQUUsQ0FBQztJQUU3QixTQUFTLENBQ1AsR0FBRyxFQUFFO1FBQ0gsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFO1lBQ25CLE1BQU0sQ0FBQyxRQUFRLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxFQUFFO2dCQUN6RCxJQUNFLE9BQU87b0JBQ1AsQ0FBQyxNQUFNLENBQUMsV0FBVyxLQUFLLFdBQVcsQ0FBQyxRQUFRO3dCQUMxQyxNQUFNLENBQUMsV0FBVyxLQUFLLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxFQUN4RDtvQkFDQSxNQUFNLE9BQU8sR0FBRyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDL0MsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUMvQixHQUFHLElBQUk7d0JBQ1AsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPO3FCQUN0QixDQUFDLENBQUMsQ0FBQztpQkFDTDtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDLEVBQ0QsQ0FBQyxVQUFVLEVBQUUsdUJBQXVCLENBQUMsQ0FDdEMsQ0FBQztJQUVGLE9BQU8sb0JBQW9CLENBQUMsVUFBVSxDQUFDLElBQUksYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNyRSw2QkFBSyxFQUFFLEVBQUUsRUFBRTtRQUNULG9CQUFDLE1BQU0sSUFBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUksQ0FDeEMsQ0FDUCxDQUFDLENBQUMsQ0FBQyxDQUNGLG9CQUFDLG1CQUFtQixJQUFDLFVBQVUsRUFBRSxVQUFVLEdBQUksQ0FDaEQsQ0FBQztBQUNKLENBQUMsQ0FBQyJ9
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
declare const vendors: {
|
|
2
|
+
twitter: ({ url }: {
|
|
3
|
+
url: string;
|
|
4
|
+
}) => JSX.Element;
|
|
5
|
+
youtube: ({ url }: {
|
|
6
|
+
url: string;
|
|
7
|
+
}) => JSX.Element;
|
|
8
|
+
tiktok: ({ url }: {
|
|
9
|
+
url: string;
|
|
10
|
+
}) => JSX.Element;
|
|
11
|
+
};
|
|
12
|
+
export declare type VendorName = keyof typeof vendors;
|
|
13
|
+
export declare const Vendor: ({ vendorName, url }: {
|
|
14
|
+
vendorName: VendorName;
|
|
15
|
+
url: string;
|
|
16
|
+
}) => JSX.Element;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Twitter } from './components/TwitterComponent';
|
|
3
|
+
import { Youtube } from './components/YoutubeComponent';
|
|
4
|
+
import { TikTok } from './components/TiktokComponent';
|
|
5
|
+
const vendors = {
|
|
6
|
+
twitter: Twitter,
|
|
7
|
+
youtube: Youtube,
|
|
8
|
+
tiktok: TikTok
|
|
9
|
+
};
|
|
10
|
+
export const Vendor = ({ vendorName, url }) => {
|
|
11
|
+
const Component = vendors[vendorName];
|
|
12
|
+
return React.createElement(Component, { url: url });
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU29jaWFsVmVuZG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc29jaWFsLWVtYmVkL1NvY2lhbFZlbmRvci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRXRELE1BQU0sT0FBTyxHQUFHO0lBQ2QsT0FBTyxFQUFFLE9BQU87SUFDaEIsT0FBTyxFQUFFLE9BQU87SUFDaEIsTUFBTSxFQUFFLE1BQU07Q0FDZixDQUFDO0FBSUYsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLENBQUMsRUFDckIsVUFBVSxFQUNWLEdBQUcsRUFJSixFQUFFLEVBQUU7SUFDSCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdEMsT0FBTyxvQkFBQyxTQUFTLElBQUMsR0FBRyxFQUFFLEdBQUcsR0FBSSxDQUFDO0FBQ2pDLENBQUMsQ0FBQyJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import '@testing-library/jest-dom/extend-expect';
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { render, screen, fireEvent } from '@testing-library/react';
|
|
3
|
+
import { BlockedEmbedMessage } from '../BlockedEmbedMessage';
|
|
4
|
+
import { enableCookies } from '../helpers/enableCookies';
|
|
5
|
+
import { openPrivacyModal } from '../helpers/privacyModal';
|
|
6
|
+
import '@testing-library/jest-dom/extend-expect';
|
|
7
|
+
import { useSocialEmbedsContext } from '../../../contexts/SocialEmbedsProvider';
|
|
8
|
+
// Mock dependencies
|
|
9
|
+
jest.mock('../helpers/enableCookies', () => ({
|
|
10
|
+
enableCookies: jest.fn()
|
|
11
|
+
}));
|
|
12
|
+
jest.mock('../helpers/privacyModal', () => ({
|
|
13
|
+
openPrivacyModal: jest.fn()
|
|
14
|
+
}));
|
|
15
|
+
jest.mock('../../../contexts/SocialEmbedsProvider', () => ({
|
|
16
|
+
useSocialEmbedsContext: jest.fn()
|
|
17
|
+
}));
|
|
18
|
+
jest.mock('../helpers/getVendorTitle', () => ({
|
|
19
|
+
getVendorTitle: jest.fn(() => 'Vendor Title')
|
|
20
|
+
}));
|
|
21
|
+
describe('BlockedEmbedMessage Component', () => {
|
|
22
|
+
const vendorName = 'twitter';
|
|
23
|
+
const defaultProps = {
|
|
24
|
+
vendorName
|
|
25
|
+
};
|
|
26
|
+
const mockContext = {
|
|
27
|
+
setIsSocialEmbedAllowed: jest.fn(),
|
|
28
|
+
setIsAllowedOnce: jest.fn(),
|
|
29
|
+
isSocialEmbedAllowed: { twitter: false, facebook: false },
|
|
30
|
+
isAllowedOnce: { twitter: false, facebook: false }
|
|
31
|
+
};
|
|
32
|
+
beforeEach(() => {
|
|
33
|
+
jest.clearAllMocks();
|
|
34
|
+
useSocialEmbedsContext.mockReturnValue(mockContext);
|
|
35
|
+
window.__TIMES_CONFIG__ = {
|
|
36
|
+
sourcepoint: {
|
|
37
|
+
gdprMessageId: 'mockMessageId'
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
});
|
|
41
|
+
afterEach(() => {
|
|
42
|
+
delete window.__TIMES_CONFIG__;
|
|
43
|
+
});
|
|
44
|
+
it('renders the component with correct content', () => {
|
|
45
|
+
render(React.createElement(BlockedEmbedMessage, Object.assign({}, defaultProps)));
|
|
46
|
+
expect(screen.getByText('Vendor Title content blocked')).toBeInTheDocument();
|
|
47
|
+
expect(screen.getByText('Enable cookies')).toBeInTheDocument();
|
|
48
|
+
expect(screen.getByText('Allow cookies once')).toBeInTheDocument();
|
|
49
|
+
expect(screen.getByText('privacy manager.')).toBeInTheDocument();
|
|
50
|
+
});
|
|
51
|
+
it('calls enableCookies when the Enable cookies button is clicked', () => {
|
|
52
|
+
render(React.createElement(BlockedEmbedMessage, Object.assign({}, defaultProps)));
|
|
53
|
+
const enableButton = screen.getByText('Enable cookies');
|
|
54
|
+
fireEvent.click(enableButton);
|
|
55
|
+
expect(enableCookies).toHaveBeenCalledWith(vendorName, mockContext.setIsSocialEmbedAllowed);
|
|
56
|
+
});
|
|
57
|
+
it('calls setIsAllowedOnce when Allow cookies once button is clicked', () => {
|
|
58
|
+
render(React.createElement(BlockedEmbedMessage, Object.assign({}, defaultProps)));
|
|
59
|
+
const allowButton = screen.getByText('Allow cookies once');
|
|
60
|
+
fireEvent.click(allowButton);
|
|
61
|
+
expect(mockContext.setIsAllowedOnce).toHaveBeenCalledWith(expect.any(Function));
|
|
62
|
+
});
|
|
63
|
+
it('calls openPrivacyModal when the privacy manager link is clicked', () => {
|
|
64
|
+
render(React.createElement(BlockedEmbedMessage, Object.assign({}, defaultProps)));
|
|
65
|
+
const privacyLink = screen.getByText('privacy manager.');
|
|
66
|
+
fireEvent.click(privacyLink);
|
|
67
|
+
expect(openPrivacyModal).toHaveBeenCalledWith('gdpr', 'mockMessageId');
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmxvY2tlZEVtYmVkTWVzc2FnZS50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc29jaWFsLWVtYmVkL19fdGVzdHNfXy9CbG9ja2VkRW1iZWRNZXNzYWdlLnRlc3QudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRSxPQUFPLEVBQ0wsbUJBQW1CLEVBRXBCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTNELE9BQU8seUNBQXlDLENBQUM7QUFDakQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFaEYsb0JBQW9CO0FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUMzQyxhQUFhLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtDQUN6QixDQUFDLENBQUMsQ0FBQztBQUVKLElBQUksQ0FBQyxJQUFJLENBQUMseUJBQXlCLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUMxQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO0NBQzVCLENBQUMsQ0FBQyxDQUFDO0FBRUosSUFBSSxDQUFDLElBQUksQ0FBQyx3Q0FBd0MsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELHNCQUFzQixFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7Q0FDbEMsQ0FBQyxDQUFDLENBQUM7QUFFSixJQUFJLENBQUMsSUFBSSxDQUFDLDJCQUEyQixFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDNUMsY0FBYyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDO0NBQzlDLENBQUMsQ0FBQyxDQUFDO0FBRUosUUFBUSxDQUFDLCtCQUErQixFQUFFLEdBQUcsRUFBRTtJQUM3QyxNQUFNLFVBQVUsR0FBZSxTQUFTLENBQUM7SUFFekMsTUFBTSxZQUFZLEdBQTZCO1FBQzdDLFVBQVU7S0FDWCxDQUFDO0lBRUYsTUFBTSxXQUFXLEdBQUc7UUFDbEIsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtRQUNsQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO1FBQzNCLG9CQUFvQixFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO1FBQ3pELGFBQWEsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRTtLQUNuRCxDQUFDO0lBRUYsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNwQixzQkFBb0MsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFbEUsTUFBYyxDQUFDLGdCQUFnQixHQUFHO1lBQ2pDLFdBQVcsRUFBRTtnQkFDWCxhQUFhLEVBQUUsZUFBZTthQUMvQjtTQUNGLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztJQUVILFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDYixPQUFRLE1BQWMsQ0FBQyxnQkFBZ0IsQ0FBQztJQUMxQyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw0Q0FBNEMsRUFBRSxHQUFHLEVBQUU7UUFDcEQsTUFBTSxDQUFDLG9CQUFDLG1CQUFtQixvQkFBSyxZQUFZLEVBQUksQ0FBQyxDQUFDO1FBRWxELE1BQU0sQ0FDSixNQUFNLENBQUMsU0FBUyxDQUFDLDhCQUE4QixDQUFDLENBQ2pELENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN0QixNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUMvRCxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNuRSxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUNuRSxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywrREFBK0QsRUFBRSxHQUFHLEVBQUU7UUFDdkUsTUFBTSxDQUFDLG9CQUFDLG1CQUFtQixvQkFBSyxZQUFZLEVBQUksQ0FBQyxDQUFDO1FBQ2xELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN4RCxTQUFTLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRTlCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxvQkFBb0IsQ0FDeEMsVUFBVSxFQUNWLFdBQVcsQ0FBQyx1QkFBdUIsQ0FDcEMsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGtFQUFrRSxFQUFFLEdBQUcsRUFBRTtRQUMxRSxNQUFNLENBQUMsb0JBQUMsbUJBQW1CLG9CQUFLLFlBQVksRUFBSSxDQUFDLENBQUM7UUFDbEQsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzNELFNBQVMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFN0IsTUFBTSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLG9CQUFvQixDQUN2RCxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUNyQixDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsaUVBQWlFLEVBQUUsR0FBRyxFQUFFO1FBQ3pFLE1BQU0sQ0FBQyxvQkFBQyxtQkFBbUIsb0JBQUssWUFBWSxFQUFJLENBQUMsQ0FBQztRQUNsRCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDekQsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUU3QixNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDekUsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import '@testing-library/jest-dom/extend-expect';
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { render, screen } from '@testing-library/react';
|
|
3
|
+
import { SocialMediaEmbed } from '../SocialMediaEmbed';
|
|
4
|
+
import { BlockedEmbedMessage } from '../BlockedEmbedMessage';
|
|
5
|
+
import { Vendor } from '../SocialVendor';
|
|
6
|
+
import { checkVendorConsent } from '../helpers/vendorConsent';
|
|
7
|
+
import { eventStatus } from '../constants';
|
|
8
|
+
import '@testing-library/jest-dom/extend-expect';
|
|
9
|
+
import { useSocialEmbedsContext } from '../../../contexts/SocialEmbedsProvider';
|
|
10
|
+
jest.mock('../../../contexts/SocialEmbedsProvider', () => ({
|
|
11
|
+
useSocialEmbedsContext: jest.fn()
|
|
12
|
+
}));
|
|
13
|
+
jest.mock('../BlockedEmbedMessage', () => ({
|
|
14
|
+
BlockedEmbedMessage: jest.fn(() => React.createElement("div", null, "Blocked Embed Message"))
|
|
15
|
+
}));
|
|
16
|
+
jest.mock('../SocialVendor', () => ({
|
|
17
|
+
Vendor: jest.fn(() => React.createElement("div", null, "Vendor Component"))
|
|
18
|
+
}));
|
|
19
|
+
jest.mock('../helpers/vendorConsent', () => ({
|
|
20
|
+
checkVendorConsent: jest.fn(() => true)
|
|
21
|
+
}));
|
|
22
|
+
describe('SocialMediaEmbed Component', () => {
|
|
23
|
+
const vendorName = 'twitter';
|
|
24
|
+
const defaultProps = {
|
|
25
|
+
id: 'test-id',
|
|
26
|
+
url: 'https://twitter.com/test/status/12345',
|
|
27
|
+
vendorName
|
|
28
|
+
};
|
|
29
|
+
const mockContext = {
|
|
30
|
+
setIsSocialEmbedAllowed: jest.fn(),
|
|
31
|
+
isAllowedOnce: { twitter: false },
|
|
32
|
+
isSocialEmbedAllowed: { twitter: false }
|
|
33
|
+
};
|
|
34
|
+
beforeEach(() => {
|
|
35
|
+
jest.clearAllMocks();
|
|
36
|
+
useSocialEmbedsContext.mockReturnValue(mockContext);
|
|
37
|
+
// Mock __tcfapi
|
|
38
|
+
window.__tcfapi = jest.fn();
|
|
39
|
+
});
|
|
40
|
+
afterEach(() => {
|
|
41
|
+
delete window.__tcfapi;
|
|
42
|
+
});
|
|
43
|
+
it('renders BlockedEmbedMessage when social embed is not allowed', () => {
|
|
44
|
+
render(React.createElement(SocialMediaEmbed, Object.assign({}, defaultProps)));
|
|
45
|
+
expect(screen.getByText('Blocked Embed Message')).toBeInTheDocument();
|
|
46
|
+
expect(BlockedEmbedMessage).toHaveBeenCalledWith(expect.objectContaining({
|
|
47
|
+
vendorName: defaultProps.vendorName
|
|
48
|
+
}), {});
|
|
49
|
+
});
|
|
50
|
+
it('renders Vendor component when social embed is allowed', () => {
|
|
51
|
+
useSocialEmbedsContext.mockReturnValue({
|
|
52
|
+
...mockContext,
|
|
53
|
+
isSocialEmbedAllowed: { twitter: true }
|
|
54
|
+
});
|
|
55
|
+
render(React.createElement(SocialMediaEmbed, Object.assign({}, defaultProps)));
|
|
56
|
+
expect(screen.getByText('Vendor Component')).toBeInTheDocument();
|
|
57
|
+
expect(Vendor).toHaveBeenCalledWith(expect.objectContaining({
|
|
58
|
+
vendorName: defaultProps.vendorName,
|
|
59
|
+
url: defaultProps.url
|
|
60
|
+
}), {});
|
|
61
|
+
});
|
|
62
|
+
it('calls checkVendorConsent and updates context state when __tcfapi is available', () => {
|
|
63
|
+
const tcData = { eventStatus: eventStatus.tcLoaded };
|
|
64
|
+
const updatedProps = {
|
|
65
|
+
...defaultProps
|
|
66
|
+
};
|
|
67
|
+
render(React.createElement(SocialMediaEmbed, Object.assign({}, updatedProps)));
|
|
68
|
+
const [command, version, callback] = window.__tcfapi.mock.calls[0];
|
|
69
|
+
expect(command).toBe('addEventListener');
|
|
70
|
+
expect(version).toBe(2);
|
|
71
|
+
// Simulate the callback
|
|
72
|
+
callback(tcData, true);
|
|
73
|
+
expect(checkVendorConsent).toHaveBeenCalledWith(vendorName);
|
|
74
|
+
expect(mockContext.setIsSocialEmbedAllowed).toHaveBeenCalledWith(expect.any(Function));
|
|
75
|
+
// Verify the updated state
|
|
76
|
+
const updateFunction = mockContext.setIsSocialEmbedAllowed.mock.calls[0][0];
|
|
77
|
+
const updatedState = updateFunction({ twitter: false });
|
|
78
|
+
expect(updatedState).toEqual({ twitter: true });
|
|
79
|
+
});
|
|
80
|
+
it('does not render Twitter widget if __tcfapi is unavailable', () => {
|
|
81
|
+
delete window.__tcfapi;
|
|
82
|
+
render(React.createElement(SocialMediaEmbed, Object.assign({}, defaultProps)));
|
|
83
|
+
expect(screen.getByText('Blocked Embed Message')).toBeInTheDocument();
|
|
84
|
+
expect(BlockedEmbedMessage).toHaveBeenCalled();
|
|
85
|
+
});
|
|
86
|
+
it('renders Vendor component if isAllowedOnce for the vendor is true', () => {
|
|
87
|
+
useSocialEmbedsContext.mockReturnValue({
|
|
88
|
+
...mockContext,
|
|
89
|
+
isAllowedOnce: { twitter: true }
|
|
90
|
+
});
|
|
91
|
+
render(React.createElement(SocialMediaEmbed, Object.assign({}, defaultProps)));
|
|
92
|
+
expect(screen.getByText('Vendor Component')).toBeInTheDocument();
|
|
93
|
+
expect(Vendor).toHaveBeenCalledWith(expect.objectContaining({
|
|
94
|
+
vendorName: defaultProps.vendorName,
|
|
95
|
+
url: defaultProps.url
|
|
96
|
+
}), {});
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU29jaWFsTWVkaWFFbWJlZC50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc29jaWFsLWVtYmVkL19fdGVzdHNfXy9Tb2NpYWxNZWRpYUVtYmVkLnRlc3QudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBeUIsTUFBTSxxQkFBcUIsQ0FBQztBQUM5RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMzQyxPQUFPLHlDQUF5QyxDQUFDO0FBQ2pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRWhGLElBQUksQ0FBQyxJQUFJLENBQUMsd0NBQXdDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUN6RCxzQkFBc0IsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO0NBQ2xDLENBQUMsQ0FBQyxDQUFDO0FBRUosSUFBSSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMseURBQWdDLENBQUM7Q0FDckUsQ0FBQyxDQUFDLENBQUM7QUFFSixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDbEMsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMs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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import '@testing-library/jest-dom';
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { render, screen } from '@testing-library/react';
|
|
3
|
+
import '@testing-library/jest-dom';
|
|
4
|
+
import { Vendor } from '../SocialVendor';
|
|
5
|
+
// Mock components
|
|
6
|
+
jest.mock('../components/TwitterComponent', () => ({
|
|
7
|
+
Twitter: jest.fn(() => (React.createElement("div", { "data-testid": "twitter-component" }, "Twitter Component")))
|
|
8
|
+
}));
|
|
9
|
+
jest.mock('../components/YoutubeComponent', () => ({
|
|
10
|
+
Youtube: jest.fn(() => (React.createElement("div", { "data-testid": "youtube-component" }, "Youtube Component")))
|
|
11
|
+
}));
|
|
12
|
+
jest.mock('../components/TiktokComponent', () => ({
|
|
13
|
+
TikTok: jest.fn(() => (React.createElement("div", { "data-testid": "tiktok-component" }, "TikTok Component")))
|
|
14
|
+
}));
|
|
15
|
+
describe('Vendor Component', () => {
|
|
16
|
+
const renderVendor = (vendorName, url) => render(React.createElement(Vendor, { vendorName: vendorName, url: url }));
|
|
17
|
+
it('renders the Twitter component when vendorName is "twitter"', () => {
|
|
18
|
+
renderVendor('twitter', 'https://twitter.com/some/tweet');
|
|
19
|
+
expect(screen.getByTestId('twitter-component')).toBeInTheDocument();
|
|
20
|
+
});
|
|
21
|
+
it('renders the Youtube component when vendorName is "youtube"', () => {
|
|
22
|
+
renderVendor('youtube', 'https://youtube.com/some/video');
|
|
23
|
+
expect(screen.getByTestId('youtube-component')).toBeInTheDocument();
|
|
24
|
+
});
|
|
25
|
+
it('renders the TikTok component when vendorName is "tiktok"', () => {
|
|
26
|
+
renderVendor('tiktok', 'https://www.tiktok.com/@user/video/1234567890');
|
|
27
|
+
expect(screen.getByTestId('tiktok-component')).toBeInTheDocument();
|
|
28
|
+
});
|
|
29
|
+
it('throws an error if an invalid vendorName is provided', () => {
|
|
30
|
+
const renderInvalidVendor = () => render(React.createElement(Vendor, { vendorName: 'invalid', url: "https://example.com" }));
|
|
31
|
+
expect(renderInvalidVendor).toThrowError();
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU29jaWFsVmVuZG9yLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9zb2NpYWwtZW1iZWQvX190ZXN0c19fL1NvY2lhbFZlbmRvci50ZXN0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLDJCQUEyQixDQUFDO0FBRW5DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QyxrQkFBa0I7QUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQ3JCLDRDQUFpQixtQkFBbUIsd0JBQXdCLENBQzdELENBQUM7Q0FDSCxDQUFDLENBQUMsQ0FBQztBQUVKLElBQUksQ0FBQyxJQUFJLENBQUMsZ0NBQWdDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNqRCxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUNyQiw0Q0FBaUIsbUJBQW1CLHdCQUF3QixDQUM3RCxDQUFDO0NBQ0gsQ0FBQyxDQUFDLENBQUM7QUFFSixJQUFJLENBQUMsSUFBSSxDQUFDLCtCQUErQixFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDaEQsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FDcEIsNENBQWlCLGtCQUFrQix1QkFBdUIsQ0FDM0QsQ0FBQztDQUNILENBQUMsQ0FBQyxDQUFDO0FBRUosUUFBUSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsRUFBRTtJQUNoQyxNQUFNLFlBQVksR0FBRyxDQUFDLFVBQXNCLEVBQUUsR0FBVyxFQUFFLEVBQUUsQ0FDM0QsTUFBTSxDQUFDLG9CQUFDLE1BQU0sSUFBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUksQ0FBQyxDQUFDO0lBRXZELEVBQUUsQ0FBQyw0REFBNEQsRUFBRSxHQUFHLEVBQUU7UUFDcEUsWUFBWSxDQUFDLFNBQXVCLEVBQUUsZ0NBQWdDLENBQUMsQ0FBQztRQUN4RSxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUN0RSxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw0REFBNEQsRUFBRSxHQUFHLEVBQUU7UUFDcEUsWUFBWSxDQUFDLFNBQXVCLEVBQUUsZ0NBQWdDLENBQUMsQ0FBQztRQUN4RSxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUN0RSxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywwREFBMEQsRUFBRSxHQUFHLEVBQUU7UUFDbEUsWUFBWSxDQUNWLFFBQXNCLEVBQ3RCLCtDQUErQyxDQUNoRCxDQUFDO1FBQ0YsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDckUsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsc0RBQXNELEVBQUUsR0FBRyxFQUFFO1FBQzlELE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxFQUFFLENBQy9CLE1BQU0sQ0FDSixvQkFBQyxNQUFNLElBQ0wsVUFBVSxFQUFFLFNBQXVCLEVBQ25DLEdBQUcsRUFBQyxxQkFBcUIsR0FDekIsQ0FDSCxDQUFDO1FBQ0osTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDN0MsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyJ9
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React, { useEffect } from 'react';
|
|
2
|
+
export const TikTok = ({ url }) => {
|
|
3
|
+
useEffect(() => {
|
|
4
|
+
const script = document.createElement('script');
|
|
5
|
+
script.src = 'https://www.tiktok.com/embed.js';
|
|
6
|
+
script.async = true;
|
|
7
|
+
document.body.appendChild(script);
|
|
8
|
+
return () => {
|
|
9
|
+
document.body.removeChild(script);
|
|
10
|
+
};
|
|
11
|
+
}, []);
|
|
12
|
+
const videoId = new URL(url).pathname.split('/').pop();
|
|
13
|
+
const citeUrl = new URL(url).origin + url;
|
|
14
|
+
return (React.createElement("blockquote", { className: "tiktok-embed", cite: citeUrl, "data-video-id": videoId, style: { maxWidth: '605px', minWidth: '325px' }, "data-testid": "tiktok-embed" },
|
|
15
|
+
React.createElement("section", null)));
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGlrdG9rQ29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc29jaWFsLWVtYmVkL2NvbXBvbmVudHMvVGlrdG9rQ29tcG9uZW50LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUV6QyxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBbUIsRUFBRSxFQUFFO0lBQ2pELFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDYixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sQ0FBQyxHQUFHLEdBQUcsaUNBQWlDLENBQUM7UUFDL0MsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDcEIsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFbEMsT0FBTyxHQUFHLEVBQUU7WUFDVixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQUM7SUFDSixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFUCxNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3ZELE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7SUFFMUMsT0FBTyxDQUNMLG9DQUNFLFNBQVMsRUFBQyxjQUFjLEVBQ3hCLElBQUksRUFBRSxPQUFPLG1CQUNFLE9BQU8sRUFDdEIsS0FBSyxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLGlCQUNuQyxjQUFjO1FBRTFCLG9DQUFXLENBQ0EsQ0FDZCxDQUFDO0FBQ0osQ0FBQyxDQUFDIn0=
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export const Twitter = ({ url }) => {
|
|
3
|
+
return (React.createElement("blockquote", { className: "twitter-tweet", "data-testid": "twitter-embed" },
|
|
4
|
+
React.createElement("a", { href: url })));
|
|
5
|
+
};
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHdpdHRlckNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NvY2lhbC1lbWJlZC9jb21wb25lbnRzL1R3aXR0ZXJDb21wb25lbnQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBbUIsRUFBRSxFQUFFO0lBQ2xELE9BQU8sQ0FDTCxvQ0FBWSxTQUFTLEVBQUMsZUFBZSxpQkFBYSxlQUFlO1FBQy9ELDJCQUFHLElBQUksRUFBRSxHQUFHLEdBQUksQ0FDTCxDQUNkLENBQUM7QUFDSixDQUFDLENBQUMifQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export const Youtube = ({ url }) => {
|
|
3
|
+
return (React.createElement("iframe", { width: "560", height: "315", src: url, title: "YouTube video player", allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" }));
|
|
4
|
+
};
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWW91dHViZUNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NvY2lhbC1lbWJlZC9jb21wb25lbnRzL1lvdXR1YmVDb21wb25lbnQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBbUIsRUFBRSxFQUFFO0lBQ2xELE9BQU8sQ0FDTCxnQ0FDRSxLQUFLLEVBQUMsS0FBSyxFQUNYLE1BQU0sRUFBQyxLQUFLLEVBQ1osR0FBRyxFQUFFLEdBQUcsRUFDUixLQUFLLEVBQUMsc0JBQXNCLEVBQzVCLEtBQUssRUFBQyxxR0FBcUcsR0FDM0csQ0FDSCxDQUFDO0FBQ0osQ0FBQyxDQUFDIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { render, cleanup } from '@testing-library/react';
|
|
3
|
+
import { TikTok } from '../TiktokComponent';
|
|
4
|
+
describe('TikTok Component', () => {
|
|
5
|
+
const tiktokUrl = 'https://www.tiktok.com/@user/video/1234567890123456789';
|
|
6
|
+
afterEach(() => {
|
|
7
|
+
cleanup();
|
|
8
|
+
jest.restoreAllMocks();
|
|
9
|
+
});
|
|
10
|
+
it('injects the TikTok embed script on mount', () => {
|
|
11
|
+
const appendChildSpy = jest.spyOn(document.body, 'appendChild');
|
|
12
|
+
render(React.createElement(TikTok, { url: tiktokUrl }));
|
|
13
|
+
const script = Array.from(document.body.getElementsByTagName('script')).find(el => el.src === 'https://www.tiktok.com/embed.js');
|
|
14
|
+
expect(script).toBeTruthy();
|
|
15
|
+
expect(appendChildSpy).toHaveBeenCalledWith(expect.any(HTMLScriptElement));
|
|
16
|
+
});
|
|
17
|
+
it('removes the TikTok embed script on unmount', () => {
|
|
18
|
+
const removeChildSpy = jest.spyOn(document.body, 'removeChild');
|
|
19
|
+
const { unmount } = render(React.createElement(TikTok, { url: tiktokUrl }));
|
|
20
|
+
unmount();
|
|
21
|
+
const script = Array.from(document.body.getElementsByTagName('script')).find(el => el.src === 'https://www.tiktok.com/embed.js');
|
|
22
|
+
expect(script).toBeFalsy();
|
|
23
|
+
expect(removeChildSpy).toHaveBeenCalledWith(expect.any(HTMLScriptElement));
|
|
24
|
+
});
|
|
25
|
+
it('does not throw an error if the script is already removed during unmount', () => {
|
|
26
|
+
jest.spyOn(document.body, 'removeChild').mockImplementation(node => {
|
|
27
|
+
if (!document.body.contains(node)) {
|
|
28
|
+
throw new Error('The node to be removed is not a child of this node');
|
|
29
|
+
}
|
|
30
|
+
return node; // Ensure the removed node is returned
|
|
31
|
+
});
|
|
32
|
+
const { unmount } = render(React.createElement(TikTok, { url: tiktokUrl }));
|
|
33
|
+
expect(() => unmount()).not.toThrow();
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGlrdG9rQ29tcG9uZW50LnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9zb2NpYWwtZW1iZWQvY29tcG9uZW50cy9fX3Rlc3RzX18vVGlrdG9rQ29tcG9uZW50LnRlc3QudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU1QyxRQUFRLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxFQUFFO0lBQ2hDLE1BQU0sU0FBUyxHQUFHLHdEQUF3RCxDQUFDO0lBRTNFLFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDYixPQUFPLEVBQUUsQ0FBQztRQUNWLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywwQ0FBMEMsRUFBRSxHQUFHLEVBQUU7UUFDbEQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBRWhFLE1BQU0sQ0FBQyxvQkFBQyxNQUFNLElBQUMsR0FBRyxFQUFFLFNBQVMsR0FBSSxDQUFDLENBQUM7UUFFbkMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FDdkIsUUFBUSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FDN0MsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLGlDQUFpQyxDQUFDLENBQUM7UUFFM0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzVCLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztJQUM3RSxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw0Q0FBNEMsRUFBRSxHQUFHLEVBQUU7UUFDcEQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBRWhFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxNQUFNLENBQUMsb0JBQUMsTUFBTSxJQUFDLEdBQUcsRUFBRSxTQUFTLEdBQUksQ0FBQyxDQUFDO1FBQ3ZELE9BQU8sRUFBRSxDQUFDO1FBRVYsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FDdkIsUUFBUSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FDN0MsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLGlDQUFpQyxDQUFDLENBQUM7UUFFM0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzNCLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztJQUM3RSxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyx5RUFBeUUsRUFBRSxHQUFHLEVBQUU7UUFDakYsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2pFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO2FBQ3ZFO1lBQ0QsT0FBTyxJQUFJLENBQUMsQ0FBQyxzQ0FBc0M7UUFDckQsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsTUFBTSxDQUFDLG9CQUFDLE1BQU0sSUFBQyxHQUFHLEVBQUUsU0FBUyxHQUFJLENBQUMsQ0FBQztRQUN2RCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDeEMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import '@testing-library/jest-dom/extend-expect';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { render, screen } from '@testing-library/react';
|
|
3
|
+
import '@testing-library/jest-dom/extend-expect';
|
|
4
|
+
import { Twitter } from '../TwitterComponent';
|
|
5
|
+
describe('Twitter Component', () => {
|
|
6
|
+
const twitterUrl = 'https://twitter.com/user/status/1234567890';
|
|
7
|
+
it('renders the Twitter blockquote with the correct URL', () => {
|
|
8
|
+
render(React.createElement(Twitter, { url: twitterUrl }));
|
|
9
|
+
// Find the blockquote using class name or test ID
|
|
10
|
+
const blockquote = screen.getByTestId('twitter-embed');
|
|
11
|
+
expect(blockquote).toHaveClass('twitter-tweet');
|
|
12
|
+
// Check if the anchor tag is rendered with the correct href
|
|
13
|
+
const anchor = blockquote.querySelector('a');
|
|
14
|
+
expect(anchor).toBeInTheDocument();
|
|
15
|
+
expect(anchor).toHaveAttribute('href', twitterUrl);
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHdpdHRlckNvbXBvbmVudC50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc29jaWFsLWVtYmVkL2NvbXBvbmVudHMvX190ZXN0c19fL1R3aXR0ZXJDb21wb25lbnQudGVzdC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyx5Q0FBeUMsQ0FBQztBQUNqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFOUMsUUFBUSxDQUFDLG1CQUFtQixFQUFFLEdBQUcsRUFBRTtJQUNqQyxNQUFNLFVBQVUsR0FBRyw0Q0FBNEMsQ0FBQztJQUVoRSxFQUFFLENBQUMscURBQXFELEVBQUUsR0FBRyxFQUFFO1FBQzdELE1BQU0sQ0FBQyxvQkFBQyxPQUFPLElBQUMsR0FBRyxFQUFFLFVBQVUsR0FBSSxDQUFDLENBQUM7UUFFckMsa0RBQWtEO1FBQ2xELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDdkQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUVoRCw0REFBNEQ7UUFDNUQsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNuQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNyRCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import '@testing-library/jest-dom/extend-expect';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { render, screen } from '@testing-library/react';
|
|
3
|
+
import '@testing-library/jest-dom/extend-expect';
|
|
4
|
+
import { Youtube } from '../YoutubeComponent';
|
|
5
|
+
describe('Youtube Component', () => {
|
|
6
|
+
const youtubeUrl = 'https://www.youtube.com/embed/dQw4w9WgXcQ';
|
|
7
|
+
it('renders the YouTube iframe with the correct attributes', () => {
|
|
8
|
+
render(React.createElement(Youtube, { url: youtubeUrl }));
|
|
9
|
+
// Get the iframe element
|
|
10
|
+
const iframe = screen.getByTitle('YouTube video player');
|
|
11
|
+
// Check if the iframe is rendered
|
|
12
|
+
expect(iframe).toBeInTheDocument();
|
|
13
|
+
// Check if the iframe has the correct attributes
|
|
14
|
+
expect(iframe).toHaveAttribute('src', youtubeUrl);
|
|
15
|
+
expect(iframe).toHaveAttribute('width', '560');
|
|
16
|
+
expect(iframe).toHaveAttribute('height', '315');
|
|
17
|
+
expect(iframe).toHaveAttribute('allow', 'accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share');
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWW91dHViZUNvbXBvbmVudC50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc29jaWFsLWVtYmVkL2NvbXBvbmVudHMvX190ZXN0c19fL1lvdXR1YmVDb21wb25lbnQudGVzdC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyx5Q0FBeUMsQ0FBQztBQUNqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFOUMsUUFBUSxDQUFDLG1CQUFtQixFQUFFLEdBQUcsRUFBRTtJQUNqQyxNQUFNLFVBQVUsR0FBRywyQ0FBMkMsQ0FBQztJQUUvRCxFQUFFLENBQUMsd0RBQXdELEVBQUUsR0FBRyxFQUFFO1FBQ2hFLE1BQU0sQ0FBQyxvQkFBQyxPQUFPLElBQUMsR0FBRyxFQUFFLFVBQVUsR0FBSSxDQUFDLENBQUM7UUFFckMseUJBQXlCO1FBQ3pCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUV6RCxrQ0FBa0M7UUFDbEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFFbkMsaURBQWlEO1FBQ2pELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQy9DLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2hELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxlQUFlLENBQzVCLE9BQU8sRUFDUCxxR0FBcUcsQ0FDdEcsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMifQ==
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare const modalType: {
|
|
2
|
+
readonly GDPR: "gdpr";
|
|
3
|
+
readonly CCPA: "ccpa";
|
|
4
|
+
};
|
|
5
|
+
export declare const eventStatus: {
|
|
6
|
+
readonly tcLoaded: "tcloaded";
|
|
7
|
+
readonly cmpIsShown: "cmpuishown";
|
|
8
|
+
readonly userActionComplete: "useractioncomplete";
|
|
9
|
+
};
|
|
10
|
+
export declare const vendors: {
|
|
11
|
+
readonly twitter: "twitter";
|
|
12
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export const modalType = {
|
|
2
|
+
GDPR: 'gdpr',
|
|
3
|
+
CCPA: 'ccpa'
|
|
4
|
+
};
|
|
5
|
+
export const eventStatus = {
|
|
6
|
+
tcLoaded: 'tcloaded',
|
|
7
|
+
cmpIsShown: 'cmpuishown',
|
|
8
|
+
userActionComplete: 'useractioncomplete'
|
|
9
|
+
};
|
|
10
|
+
export const vendors = {
|
|
11
|
+
twitter: 'twitter'
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc29jaWFsLWVtYmVkL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUc7SUFDdkIsSUFBSSxFQUFFLE1BQU07SUFDWixJQUFJLEVBQUUsTUFBTTtDQUNKLENBQUM7QUFFWCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUc7SUFDekIsUUFBUSxFQUFFLFVBQVU7SUFDcEIsVUFBVSxFQUFFLFlBQVk7SUFDeEIsa0JBQWtCLEVBQUUsb0JBQW9CO0NBQ2hDLENBQUM7QUFFWCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUc7SUFDckIsT0FBTyxFQUFFLFNBQVM7Q0FDVixDQUFDIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { enableCookies } from '../enableCookies';
|
|
2
|
+
jest.mock('../socialMediaVendors', () => ({
|
|
3
|
+
socialMediaVendors: {
|
|
4
|
+
facebook: { id: 'facebookId' },
|
|
5
|
+
twitter: { id: 'twitterId' }
|
|
6
|
+
}
|
|
7
|
+
}));
|
|
8
|
+
describe('enableCookies', () => {
|
|
9
|
+
const mockVendorId = 'facebookId';
|
|
10
|
+
const setIsSocialEmbedAllowed = jest.fn();
|
|
11
|
+
beforeEach(() => {
|
|
12
|
+
jest.clearAllMocks();
|
|
13
|
+
window.__tcfapi = jest.fn();
|
|
14
|
+
});
|
|
15
|
+
it('should call __tcfapi with "getCustomVendorConsents" for the vendor', () => {
|
|
16
|
+
window.__tcfapi = jest.fn((command, version, callback) => {
|
|
17
|
+
// tslint:disable-next-line:no-console
|
|
18
|
+
console.log('command, version', command, version);
|
|
19
|
+
callback({
|
|
20
|
+
grants: { [mockVendorId]: { purposeGrants: { 1: true } } }
|
|
21
|
+
}, true);
|
|
22
|
+
});
|
|
23
|
+
enableCookies('facebook', setIsSocialEmbedAllowed);
|
|
24
|
+
expect(window.__tcfapi).toHaveBeenCalledWith('getCustomVendorConsents', 2, expect.any(Function));
|
|
25
|
+
});
|
|
26
|
+
it('should call postCustomConsent if consent data and grants are available', () => {
|
|
27
|
+
const purposeGrants = { 1: true };
|
|
28
|
+
window.__tcfapi = jest.fn((command, version, callback) => {
|
|
29
|
+
// tslint:disable-next-line:no-console
|
|
30
|
+
console.log('command, version', command, version);
|
|
31
|
+
if (command === 'getCustomVendorConsents') {
|
|
32
|
+
callback({
|
|
33
|
+
grants: { [mockVendorId]: { purposeGrants } }
|
|
34
|
+
}, true);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
enableCookies('facebook', setIsSocialEmbedAllowed);
|
|
38
|
+
expect(window.__tcfapi).toHaveBeenCalledWith('postCustomConsent', 2, expect.any(Function), [mockVendorId], Object.keys(purposeGrants), []);
|
|
39
|
+
});
|
|
40
|
+
it('should not call __tcfapi if __tcfapi is not defined', () => {
|
|
41
|
+
delete window.__tcfapi;
|
|
42
|
+
enableCookies('facebook', setIsSocialEmbedAllowed);
|
|
43
|
+
expect(window.__tcfapi).toBeUndefined();
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5hYmxlQ29va2llcy50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc29jaWFsLWVtYmVkL2hlbHBlcnMvX190ZXN0c19fL2VuYWJsZUNvb2tpZXMudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFakQsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLGtCQUFrQixFQUFFO1FBQ2xCLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUU7UUFDOUIsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRTtLQUM3QjtDQUNGLENBQUMsQ0FBQyxDQUFDO0FBRUosUUFBUSxDQUFDLGVBQWUsRUFBRSxHQUFHLEVBQUU7SUFDN0IsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDO0lBQ2xDLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBRTFDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDcEIsTUFBYyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDdkMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsb0VBQW9FLEVBQUUsR0FBRyxFQUFFO1FBQzNFLE1BQWMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUU7WUFDaEUsc0NBQXNDO1lBQ3RDLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2xELFFBQVEsQ0FDTjtnQkFDRSxNQUFNLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsYUFBYSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7YUFDM0QsRUFDRCxJQUFJLENBQ0wsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsYUFBYSxDQUFDLFVBQVUsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1FBQ25ELE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsb0JBQW9CLENBQzFDLHlCQUF5QixFQUN6QixDQUFDLEVBQ0QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FDckIsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHdFQUF3RSxFQUFFLEdBQUcsRUFBRTtRQUNoRixNQUFNLGFBQWEsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUNqQyxNQUFjLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFO1lBQ2hFLHNDQUFzQztZQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNsRCxJQUFJLE9BQU8sS0FBSyx5QkFBeUIsRUFBRTtnQkFDekMsUUFBUSxDQUNOO29CQUNFLE1BQU0sRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxhQUFhLEVBQUUsRUFBRTtpQkFDOUMsRUFDRCxJQUFJLENBQ0wsQ0FBQzthQUNIO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxhQUFhLENBQUMsVUFBVSxFQUFFLHVCQUF1QixDQUFDLENBQUM7UUFFbkQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxvQkFBb0IsQ0FDMUMsbUJBQW1CLEVBQ25CLENBQUMsRUFDRCxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUNwQixDQUFDLFlBQVksQ0FBQyxFQUNkLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQzFCLEVBQUUsQ0FDSCxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMscURBQXFELEVBQUUsR0FBRyxFQUFFO1FBQzdELE9BQVEsTUFBYyxDQUFDLFFBQVEsQ0FBQztRQUVoQyxhQUFhLENBQUMsVUFBVSxFQUFFLHVCQUF1QixDQUFDLENBQUM7UUFFbkQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMxQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIn0=
|