@patternfly/chatbot 2.2.0-prerelease.15 → 2.2.0-prerelease.17
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/cjs/AttachmentEdit/AttachmentEdit.test.d.ts +1 -0
- package/dist/cjs/AttachmentEdit/AttachmentEdit.test.js +52 -0
- package/dist/cjs/Chatbot/Chatbot.test.d.ts +1 -0
- package/dist/cjs/Chatbot/Chatbot.test.js +28 -0
- package/dist/cjs/ChatbotAlert/ChatbotAlert.test.d.ts +1 -0
- package/dist/cjs/ChatbotAlert/ChatbotAlert.test.js +27 -0
- package/dist/cjs/ChatbotContent/ChatbotContent.test.d.ts +1 -0
- package/dist/cjs/ChatbotContent/ChatbotContent.test.js +18 -0
- package/dist/cjs/ChatbotFooter/ChatbotFooter.test.d.ts +1 -0
- package/dist/cjs/ChatbotFooter/ChatbotFooter.test.js +18 -0
- package/dist/cjs/ChatbotFooter/ChatbotFooternote.test.d.ts +1 -0
- package/dist/cjs/ChatbotFooter/ChatbotFooternote.test.js +87 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeader.test.d.ts +1 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeader.test.js +18 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderActions.test.d.ts +1 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderActions.test.js +18 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.test.d.ts +1 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.test.js +20 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderMain.test.d.ts +1 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderMain.test.js +18 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.test.d.ts +1 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.test.js +20 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.d.ts +1 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.js +43 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.d.ts +1 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.js +41 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderTitle.test.d.ts +1 -0
- package/dist/cjs/ChatbotHeader/ChatbotHeaderTitle.test.js +47 -0
- package/dist/cjs/Message/Message.js +13 -3
- package/dist/cjs/Message/Message.test.js +38 -3
- package/dist/cjs/Message/TextMessage/TextMessage.d.ts +2 -1
- package/dist/cjs/Message/TextMessage/TextMessage.js +2 -2
- package/dist/cjs/MessageBar/MessageBar.test.js +4 -4
- package/dist/cjs/MessageBox/MessageBox.test.d.ts +1 -0
- package/dist/cjs/MessageBox/MessageBox.test.js +22 -0
- package/dist/cjs/PreviewAttachment/PreviewAttachment.test.d.ts +1 -0
- package/dist/cjs/PreviewAttachment/PreviewAttachment.test.js +28 -0
- package/dist/cjs/Settings/SettingsForm.test.d.ts +1 -0
- package/dist/cjs/Settings/SettingsForm.test.js +26 -0
- package/dist/css/main.css +30 -41
- package/dist/css/main.css.map +1 -1
- package/dist/esm/AttachmentEdit/AttachmentEdit.test.d.ts +1 -0
- package/dist/esm/AttachmentEdit/AttachmentEdit.test.js +47 -0
- package/dist/esm/Chatbot/Chatbot.test.d.ts +1 -0
- package/dist/esm/Chatbot/Chatbot.test.js +23 -0
- package/dist/esm/ChatbotAlert/ChatbotAlert.test.d.ts +1 -0
- package/dist/esm/ChatbotAlert/ChatbotAlert.test.js +22 -0
- package/dist/esm/ChatbotContent/ChatbotContent.test.d.ts +1 -0
- package/dist/esm/ChatbotContent/ChatbotContent.test.js +13 -0
- package/dist/esm/ChatbotFooter/ChatbotFooter.test.d.ts +1 -0
- package/dist/esm/ChatbotFooter/ChatbotFooter.test.js +13 -0
- package/dist/esm/ChatbotFooter/ChatbotFooternote.test.d.ts +1 -0
- package/dist/esm/ChatbotFooter/ChatbotFooternote.test.js +82 -0
- package/dist/esm/ChatbotHeader/ChatbotHeader.test.d.ts +1 -0
- package/dist/esm/ChatbotHeader/ChatbotHeader.test.js +13 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderActions.test.d.ts +1 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderActions.test.js +13 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.test.d.ts +1 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.test.js +15 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderMain.test.d.ts +1 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderMain.test.js +13 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.test.d.ts +1 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.test.js +15 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.d.ts +1 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.js +38 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.d.ts +1 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.js +36 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderTitle.test.d.ts +1 -0
- package/dist/esm/ChatbotHeader/ChatbotHeaderTitle.test.js +42 -0
- package/dist/esm/Message/Message.js +14 -4
- package/dist/esm/Message/Message.test.js +38 -3
- package/dist/esm/Message/TextMessage/TextMessage.d.ts +2 -1
- package/dist/esm/Message/TextMessage/TextMessage.js +3 -3
- package/dist/esm/MessageBar/MessageBar.test.js +4 -4
- package/dist/esm/MessageBox/MessageBox.test.d.ts +1 -0
- package/dist/esm/MessageBox/MessageBox.test.js +17 -0
- package/dist/esm/PreviewAttachment/PreviewAttachment.test.d.ts +1 -0
- package/dist/esm/PreviewAttachment/PreviewAttachment.test.js +23 -0
- package/dist/esm/Settings/SettingsForm.test.d.ts +1 -0
- package/dist/esm/Settings/SettingsForm.test.js +21 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/BotMessage.tsx +142 -13
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/UserMessage.tsx +182 -12
- package/src/AttachmentEdit/AttachmentEdit.test.tsx +55 -0
- package/src/Chatbot/Chatbot.test.tsx +31 -0
- package/src/ChatbotAlert/ChatbotAlert.test.tsx +31 -0
- package/src/ChatbotContent/ChatbotContent.test.tsx +15 -0
- package/src/ChatbotFooter/ChatbotFooter.test.tsx +15 -0
- package/src/ChatbotFooter/ChatbotFooternote.test.tsx +84 -0
- package/src/ChatbotHeader/ChatbotHeader.test.tsx +15 -0
- package/src/ChatbotHeader/ChatbotHeaderActions.test.tsx +17 -0
- package/src/ChatbotHeader/ChatbotHeaderCloseButton.test.tsx +20 -0
- package/src/ChatbotHeader/ChatbotHeaderMain.test.tsx +17 -0
- package/src/ChatbotHeader/ChatbotHeaderMenu.test.tsx +19 -0
- package/src/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.tsx +45 -0
- package/src/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.tsx +43 -0
- package/src/ChatbotHeader/ChatbotHeaderTitle.test.tsx +59 -0
- package/src/Message/CodeBlockMessage/CodeBlockMessage.scss +3 -3
- package/src/Message/ListMessage/ListMessage.scss +5 -5
- package/src/Message/Message.scss +3 -11
- package/src/Message/Message.test.tsx +40 -3
- package/src/Message/Message.tsx +23 -4
- package/src/Message/MessageLoading.scss +2 -2
- package/src/Message/TextMessage/TextMessage.scss +8 -11
- package/src/Message/TextMessage/TextMessage.tsx +3 -3
- package/src/MessageBar/MessageBar.test.tsx +4 -4
- package/src/MessageBox/MessageBox.test.tsx +26 -0
- package/src/PreviewAttachment/PreviewAttachment.test.tsx +51 -0
- package/src/Settings/SettingsForm.test.tsx +28 -0
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1,52 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
const react_1 = __importDefault(require("react"));
|
7
|
+
const react_2 = require("@testing-library/react");
|
8
|
+
const AttachmentEdit_1 = __importDefault(require("./AttachmentEdit"));
|
9
|
+
describe('AttachmentEdit', () => {
|
10
|
+
it('should open AttachmentEdit modal', () => {
|
11
|
+
const props = {
|
12
|
+
code: 'code',
|
13
|
+
fileName: 'fileName',
|
14
|
+
onCancel: jest.fn(),
|
15
|
+
onSave: jest.fn(),
|
16
|
+
isModalOpen: true,
|
17
|
+
handleModalToggle: jest.fn()
|
18
|
+
};
|
19
|
+
(0, react_2.render)(react_1.default.createElement(AttachmentEdit_1.default, Object.assign({}, props)));
|
20
|
+
expect(react_2.screen.getByText('Edit attachment')).toBeTruthy();
|
21
|
+
});
|
22
|
+
it('should call onSave handler when the save button is clicked', () => {
|
23
|
+
const onSaveHandler = jest.fn();
|
24
|
+
const props = {
|
25
|
+
code: 'code',
|
26
|
+
fileName: 'fileName',
|
27
|
+
onCancel: jest.fn(),
|
28
|
+
onSave: onSaveHandler,
|
29
|
+
isModalOpen: true,
|
30
|
+
handleModalToggle: jest.fn()
|
31
|
+
};
|
32
|
+
(0, react_2.render)(react_1.default.createElement(AttachmentEdit_1.default, Object.assign({}, props)));
|
33
|
+
// Click on save button
|
34
|
+
react_2.fireEvent.click(react_2.screen.getByText('Save'));
|
35
|
+
expect(onSaveHandler).toHaveBeenCalledWith(expect.any(Object), 'code');
|
36
|
+
});
|
37
|
+
it('should call cancel handler when the cancel button is clicked', () => {
|
38
|
+
const onCancelHandler = jest.fn();
|
39
|
+
const props = {
|
40
|
+
code: 'code',
|
41
|
+
fileName: 'fileName',
|
42
|
+
onCancel: onCancelHandler,
|
43
|
+
onSave: jest.fn(),
|
44
|
+
isModalOpen: true,
|
45
|
+
handleModalToggle: jest.fn()
|
46
|
+
};
|
47
|
+
(0, react_2.render)(react_1.default.createElement(AttachmentEdit_1.default, Object.assign({}, props)));
|
48
|
+
// Click on cancel button
|
49
|
+
react_2.fireEvent.click(react_2.screen.getByText('Cancel'));
|
50
|
+
expect(onCancelHandler).toHaveBeenCalled();
|
51
|
+
});
|
52
|
+
});
|
@@ -0,0 +1 @@
|
|
1
|
+
import '@testing-library/jest-dom';
|
@@ -0,0 +1,28 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
require("@testing-library/jest-dom");
|
7
|
+
const react_1 = __importDefault(require("react"));
|
8
|
+
const react_2 = require("@testing-library/react");
|
9
|
+
const Chatbot_1 = __importDefault(require("./Chatbot"));
|
10
|
+
describe('Chatbot', () => {
|
11
|
+
it('should render Chatbot with default display mode', () => {
|
12
|
+
(0, react_2.render)(react_1.default.createElement(Chatbot_1.default, null, "Chatbot Content"));
|
13
|
+
expect(react_2.screen.getByText('Chatbot Content')).toBeTruthy();
|
14
|
+
});
|
15
|
+
it('should render Chatbot with custom ariaLabel', () => {
|
16
|
+
(0, react_2.render)(react_1.default.createElement(Chatbot_1.default, { ariaLabel: "Chatbot" }, "Chatbot Content"));
|
17
|
+
expect(react_2.screen.getByLabelText('Chatbot')).toBeTruthy();
|
18
|
+
});
|
19
|
+
it('should render Chatbot with custom className', () => {
|
20
|
+
const { container } = (0, react_2.render)(react_1.default.createElement(Chatbot_1.default, { ariaLabel: "Chatbot", className: "custom-class" }, "Chatbot Content"));
|
21
|
+
const chatbotElement = container.querySelector('.custom-class');
|
22
|
+
expect(chatbotElement).toBeInTheDocument();
|
23
|
+
});
|
24
|
+
it('should not render Chatbot', () => {
|
25
|
+
(0, react_2.render)(react_1.default.createElement(Chatbot_1.default, { isVisible: false }, "Chatbot Content"));
|
26
|
+
expect(react_2.screen.queryByLabelText('Chatbot')).toBeFalsy();
|
27
|
+
});
|
28
|
+
});
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1,27 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
const react_1 = __importDefault(require("react"));
|
7
|
+
const react_2 = require("@testing-library/react");
|
8
|
+
const ChatbotAlert_1 = __importDefault(require("./ChatbotAlert"));
|
9
|
+
describe('ChatbotAlert', () => {
|
10
|
+
it('should render ChatbotAlert with default variant', () => {
|
11
|
+
(0, react_2.render)(react_1.default.createElement(ChatbotAlert_1.default, { title: "Chatbot Alert" }));
|
12
|
+
expect(react_2.screen.getByText('Chatbot Alert')).toBeTruthy();
|
13
|
+
});
|
14
|
+
it('should render ChatbotAlert with children', () => {
|
15
|
+
(0, react_2.render)(react_1.default.createElement(ChatbotAlert_1.default, { title: "Chatbot Alert" }, "Chatbot Alert Content"));
|
16
|
+
expect(react_2.screen.getByText('Chatbot Alert Content')).toBeTruthy();
|
17
|
+
});
|
18
|
+
it('should call onClose handler when onClose button is clicked', () => {
|
19
|
+
const onCloseHandler = jest.fn();
|
20
|
+
(0, react_2.render)(react_1.default.createElement(ChatbotAlert_1.default, { title: "Chatbot Alert", onClose: onCloseHandler }, "Chatbot Alert Content"));
|
21
|
+
expect(react_2.screen.getByText('Chatbot Alert')).toBeTruthy();
|
22
|
+
expect(react_2.screen.getByText('Chatbot Alert Content')).toBeTruthy();
|
23
|
+
// click on the close button
|
24
|
+
react_2.fireEvent.click(react_2.screen.getByRole('button'));
|
25
|
+
expect(onCloseHandler).toHaveBeenCalled();
|
26
|
+
});
|
27
|
+
});
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1,18 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
const react_1 = __importDefault(require("react"));
|
7
|
+
const react_2 = require("@testing-library/react");
|
8
|
+
const ChatbotContent_1 = __importDefault(require("./ChatbotContent"));
|
9
|
+
describe('ChatbotContent', () => {
|
10
|
+
it('should render ChatbotContent with children', () => {
|
11
|
+
(0, react_2.render)(react_1.default.createElement(ChatbotContent_1.default, null, "Chatbot Content"));
|
12
|
+
expect(react_2.screen.getByText('Chatbot Content')).toBeTruthy();
|
13
|
+
});
|
14
|
+
it('should render ChatbotContent with custom classname', () => {
|
15
|
+
const { container } = (0, react_2.render)(react_1.default.createElement(ChatbotContent_1.default, { className: "custom-class" }, "Chatbot Content"));
|
16
|
+
expect(container.querySelector('.custom-class')).toBeTruthy();
|
17
|
+
});
|
18
|
+
});
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1,18 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
const react_1 = __importDefault(require("react"));
|
7
|
+
const react_2 = require("@testing-library/react");
|
8
|
+
const ChatbotFooter_1 = __importDefault(require("./ChatbotFooter"));
|
9
|
+
describe('ChatbotFooter', () => {
|
10
|
+
it('should render ChatbotFooter with children', () => {
|
11
|
+
(0, react_2.render)(react_1.default.createElement(ChatbotFooter_1.default, null, "Chatbot Content"));
|
12
|
+
expect(react_2.screen.getByText('Chatbot Content')).toBeTruthy();
|
13
|
+
});
|
14
|
+
it('should render ChatbotFooter with custom classname', () => {
|
15
|
+
const { container } = (0, react_2.render)(react_1.default.createElement(ChatbotFooter_1.default, { className: "custom-class" }, "Chatbot Content"));
|
16
|
+
expect(container.querySelector('.custom-class')).toBeTruthy();
|
17
|
+
});
|
18
|
+
});
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1,87 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
+
});
|
10
|
+
};
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
13
|
+
};
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
15
|
+
const react_1 = __importDefault(require("react"));
|
16
|
+
const react_2 = require("@testing-library/react");
|
17
|
+
const ChatbotFootnote_1 = __importDefault(require("./ChatbotFootnote"));
|
18
|
+
describe('ChatbotFooternote', () => {
|
19
|
+
const onClick = jest.fn();
|
20
|
+
const popoverProps = {
|
21
|
+
title: 'Verify accuracy',
|
22
|
+
description: 'description',
|
23
|
+
bannerImage: {
|
24
|
+
src: 'src',
|
25
|
+
alt: 'alt'
|
26
|
+
},
|
27
|
+
cta: {
|
28
|
+
label: 'Got it',
|
29
|
+
onClick
|
30
|
+
},
|
31
|
+
link: {
|
32
|
+
label: 'label',
|
33
|
+
url: 'url'
|
34
|
+
}
|
35
|
+
};
|
36
|
+
it('should render ChatbotFooternote', () => {
|
37
|
+
(0, react_2.render)(react_1.default.createElement(ChatbotFootnote_1.default, { label: "Chatbot footer" }));
|
38
|
+
expect(react_2.screen.getByText('Chatbot footer')).toBeTruthy();
|
39
|
+
});
|
40
|
+
it('should render ChatbotFooternote with popover', () => __awaiter(void 0, void 0, void 0, function* () {
|
41
|
+
(0, react_2.render)(react_1.default.createElement(ChatbotFootnote_1.default, { label: "Chatbot footer", popover: popoverProps }));
|
42
|
+
// click on the footer button
|
43
|
+
(0, react_2.act)(() => {
|
44
|
+
react_2.fireEvent.click(react_2.screen.getByRole('button'));
|
45
|
+
});
|
46
|
+
yield (0, react_2.waitFor)(() => {
|
47
|
+
// Check if the popover is visible and click on the cta button
|
48
|
+
react_2.screen.getByLabelText('More information');
|
49
|
+
react_2.screen.getByText('Verify accuracy');
|
50
|
+
react_2.fireEvent.click(react_2.screen.getByRole('button', { name: 'Got it' }));
|
51
|
+
expect(onClick).toHaveBeenCalled();
|
52
|
+
});
|
53
|
+
}));
|
54
|
+
it('should call onClick handler when popover cta button is clicked', () => __awaiter(void 0, void 0, void 0, function* () {
|
55
|
+
(0, react_2.render)(react_1.default.createElement(ChatbotFootnote_1.default, { label: "Chatbot footer", popover: popoverProps }));
|
56
|
+
// click on the footer button
|
57
|
+
(0, react_2.act)(() => {
|
58
|
+
react_2.fireEvent.click(react_2.screen.getByRole('button'));
|
59
|
+
});
|
60
|
+
yield (0, react_2.waitFor)(() => {
|
61
|
+
// Check if the popover is visible and click on the cta button
|
62
|
+
react_2.screen.getByLabelText('More information');
|
63
|
+
react_2.screen.getByText('Verify accuracy');
|
64
|
+
react_2.fireEvent.click(react_2.screen.getByRole('button', { name: 'Got it' }));
|
65
|
+
expect(onClick).toHaveBeenCalled();
|
66
|
+
});
|
67
|
+
}));
|
68
|
+
it('should close the popover when escape is pressed', () => __awaiter(void 0, void 0, void 0, function* () {
|
69
|
+
(0, react_2.render)(react_1.default.createElement(ChatbotFootnote_1.default, { label: "Chatbot footer", popover: popoverProps }));
|
70
|
+
// click on the footer button
|
71
|
+
(0, react_2.act)(() => {
|
72
|
+
react_2.fireEvent.click(react_2.screen.getByRole('button'));
|
73
|
+
});
|
74
|
+
yield (0, react_2.waitFor)(() => {
|
75
|
+
// Check if the popover is visible and click on the cta button
|
76
|
+
react_2.screen.getByLabelText('More information');
|
77
|
+
react_2.screen.getByText('Verify accuracy');
|
78
|
+
});
|
79
|
+
(0, react_2.act)(() => {
|
80
|
+
// trigger escape to close the popover
|
81
|
+
react_2.fireEvent.keyDown(document, { key: 'Escape', code: 'Escape' });
|
82
|
+
});
|
83
|
+
yield (0, react_2.waitFor)(() => {
|
84
|
+
expect(react_2.screen.queryByText('Verify accuracy')).toBeFalsy();
|
85
|
+
});
|
86
|
+
}));
|
87
|
+
});
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1,18 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
const react_1 = __importDefault(require("react"));
|
7
|
+
const react_2 = require("@testing-library/react");
|
8
|
+
const ChatbotHeader_1 = __importDefault(require("./ChatbotHeader"));
|
9
|
+
describe('ChatbotHeader', () => {
|
10
|
+
it('should render ChatbotHeader with children', () => {
|
11
|
+
(0, react_2.render)(react_1.default.createElement(ChatbotHeader_1.default, null, "Chatbot Header"));
|
12
|
+
expect(react_2.screen.getByText('Chatbot Header')).toBeTruthy();
|
13
|
+
});
|
14
|
+
it('should render ChatbotHeader with custom classname', () => {
|
15
|
+
const { container } = (0, react_2.render)(react_1.default.createElement(ChatbotHeader_1.default, { className: "custom-header-class" }, "Chatbot Content"));
|
16
|
+
expect(container.querySelector('.custom-header-class')).toBeTruthy();
|
17
|
+
});
|
18
|
+
});
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1,18 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
const react_1 = __importDefault(require("react"));
|
7
|
+
const react_2 = require("@testing-library/react");
|
8
|
+
const ChatbotHeaderActions_1 = __importDefault(require("./ChatbotHeaderActions"));
|
9
|
+
describe('ChatbotHeaderActions', () => {
|
10
|
+
it('should render ChatbotHeaderActions with children', () => {
|
11
|
+
(0, react_2.render)(react_1.default.createElement(ChatbotHeaderActions_1.default, null, "Chatbot Header"));
|
12
|
+
expect(react_2.screen.getByText('Chatbot Header')).toBeTruthy();
|
13
|
+
});
|
14
|
+
it('should render ChatbotHeaderActions with custom classname', () => {
|
15
|
+
const { container } = (0, react_2.render)(react_1.default.createElement(ChatbotHeaderActions_1.default, { className: "custom-header-action-class" }, "Chatbot Content"));
|
16
|
+
expect(container.querySelector('.custom-header-action-class')).toBeTruthy();
|
17
|
+
});
|
18
|
+
});
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1,20 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
const react_1 = __importDefault(require("react"));
|
7
|
+
const react_2 = require("@testing-library/react");
|
8
|
+
const ChatbotHeaderCloseButton_1 = require("./ChatbotHeaderCloseButton");
|
9
|
+
describe('ChatbotHeaderCloseButton', () => {
|
10
|
+
it('should render ChatbotHeaderCloseButton', () => {
|
11
|
+
const { container } = (0, react_2.render)(react_1.default.createElement(ChatbotHeaderCloseButton_1.ChatbotHeaderCloseButton, { className: "custom-header-close-button", onClick: jest.fn() }));
|
12
|
+
expect(container.querySelector('.custom-header-close-button')).toBeTruthy();
|
13
|
+
});
|
14
|
+
it('should call onClick handler when close button is pressed', () => {
|
15
|
+
const onClick = jest.fn();
|
16
|
+
(0, react_2.render)(react_1.default.createElement(ChatbotHeaderCloseButton_1.ChatbotHeaderCloseButton, { className: "custom-header-close-button", onClick: onClick }));
|
17
|
+
react_2.fireEvent.click(react_2.screen.getByRole('button', { name: 'Close' }));
|
18
|
+
expect(onClick).toHaveBeenCalled();
|
19
|
+
});
|
20
|
+
});
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1,18 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
const react_1 = __importDefault(require("react"));
|
7
|
+
const react_2 = require("@testing-library/react");
|
8
|
+
const ChatbotHeaderMain_1 = __importDefault(require("./ChatbotHeaderMain"));
|
9
|
+
describe('ChatbotHeaderMain', () => {
|
10
|
+
it('should render ChatbotHeaderMain with children', () => {
|
11
|
+
(0, react_2.render)(react_1.default.createElement(ChatbotHeaderMain_1.default, null, "Chatbot Header Main"));
|
12
|
+
expect(react_2.screen.getByText('Chatbot Header Main')).toBeTruthy();
|
13
|
+
});
|
14
|
+
it('should render ChatbotHeaderMain with custom classname', () => {
|
15
|
+
const { container } = (0, react_2.render)(react_1.default.createElement(ChatbotHeaderMain_1.default, { className: "custom-header-class" }, "Chatbot Content"));
|
16
|
+
expect(container.querySelector('.custom-header-class')).toBeTruthy();
|
17
|
+
});
|
18
|
+
});
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1,20 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
const react_1 = __importDefault(require("react"));
|
7
|
+
const react_2 = require("@testing-library/react");
|
8
|
+
const ChatbotHeaderMenu_1 = require("./ChatbotHeaderMenu");
|
9
|
+
describe('ChatbotHeaderMenu', () => {
|
10
|
+
it('should render ChatbotHeaderMenu with custom class', () => {
|
11
|
+
const { container } = (0, react_2.render)(react_1.default.createElement(ChatbotHeaderMenu_1.ChatbotHeaderMenu, { className: "custom-header-menu", onMenuToggle: jest.fn() }));
|
12
|
+
expect(container.querySelector('.custom-header-menu')).toBeTruthy();
|
13
|
+
});
|
14
|
+
it('should call onMenuToggle when ChatbotHeaderMenu button is clicked', () => {
|
15
|
+
const onMenuToggle = jest.fn();
|
16
|
+
(0, react_2.render)(react_1.default.createElement(ChatbotHeaderMenu_1.ChatbotHeaderMenu, { className: "custom-header-menu", onMenuToggle: onMenuToggle }));
|
17
|
+
react_2.fireEvent.click(react_2.screen.getByRole('button', { name: 'Toggle menu' }));
|
18
|
+
expect(onMenuToggle).toHaveBeenCalled();
|
19
|
+
});
|
20
|
+
});
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1,43 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
+
});
|
10
|
+
};
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
13
|
+
};
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
15
|
+
const react_1 = __importDefault(require("react"));
|
16
|
+
const react_core_1 = require("@patternfly/react-core");
|
17
|
+
const react_2 = require("@testing-library/react");
|
18
|
+
const ChatbotHeaderOptionsDropdown_1 = require("./ChatbotHeaderOptionsDropdown");
|
19
|
+
describe('ChatbotHeaderOptionsDropdown', () => {
|
20
|
+
const dropdownItems = (react_1.default.createElement(react_1.default.Fragment, null,
|
21
|
+
react_1.default.createElement(react_core_1.DropdownItem, null, "Option 1"),
|
22
|
+
react_1.default.createElement(react_core_1.DropdownItem, null, "Option 2"),
|
23
|
+
react_1.default.createElement(react_core_1.DropdownItem, null, "Option 3")));
|
24
|
+
it('should render ChatbotHeaderOptionsDropdown', () => {
|
25
|
+
(0, react_2.render)(react_1.default.createElement(ChatbotHeaderOptionsDropdown_1.ChatbotHeaderOptionsDropdown, null, dropdownItems));
|
26
|
+
expect(react_2.screen.getByRole('button', { name: 'Chatbot options' })).toBeTruthy();
|
27
|
+
});
|
28
|
+
it('should call onselect handler when a dropdown item is clicked', () => __awaiter(void 0, void 0, void 0, function* () {
|
29
|
+
const onSelect = jest.fn();
|
30
|
+
const { container } = (0, react_2.render)(react_1.default.createElement(ChatbotHeaderOptionsDropdown_1.ChatbotHeaderOptionsDropdown, { className: "custom-header-options-dropdown", onSelect: onSelect }, dropdownItems));
|
31
|
+
(0, react_2.act)(() => {
|
32
|
+
react_2.fireEvent.click(react_2.screen.getByRole('button', { name: 'Chatbot options' }));
|
33
|
+
});
|
34
|
+
yield (0, react_2.waitFor)(() => {
|
35
|
+
expect(container.querySelector('.custom-header-options-dropdown')).toBeTruthy();
|
36
|
+
expect(react_2.screen.getByText('Option 1'));
|
37
|
+
expect(react_2.screen.getByText('Option 2'));
|
38
|
+
expect(react_2.screen.getByText('Option 3'));
|
39
|
+
react_2.fireEvent.click(react_2.screen.getByText('Option 3'));
|
40
|
+
expect(onSelect).toHaveBeenCalled();
|
41
|
+
});
|
42
|
+
}));
|
43
|
+
});
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1,41 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
+
});
|
10
|
+
};
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
13
|
+
};
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
15
|
+
const react_1 = __importDefault(require("react"));
|
16
|
+
const react_core_1 = require("@patternfly/react-core");
|
17
|
+
const react_2 = require("@testing-library/react");
|
18
|
+
const ChatbotHeaderSelectorDropdown_1 = require("./ChatbotHeaderSelectorDropdown");
|
19
|
+
describe('ChatbotHeaderSelectorDropdown', () => {
|
20
|
+
const dropdownItems = (react_1.default.createElement(react_1.default.Fragment, null,
|
21
|
+
react_1.default.createElement(react_core_1.DropdownItem, null, "Option 1"),
|
22
|
+
react_1.default.createElement(react_core_1.DropdownItem, null, "Option 2"),
|
23
|
+
react_1.default.createElement(react_core_1.DropdownItem, null, "Option 3")));
|
24
|
+
it('should render ChatbotHeaderSelectorDropdown', () => {
|
25
|
+
(0, react_2.render)(react_1.default.createElement(ChatbotHeaderSelectorDropdown_1.ChatbotHeaderSelectorDropdown, { value: "Option 1" }, dropdownItems));
|
26
|
+
expect(react_2.screen.getByRole('button', { name: 'Chatbot selector' })).toBeTruthy();
|
27
|
+
});
|
28
|
+
it('should call onselect handler when a dropdown item is clicked', () => __awaiter(void 0, void 0, void 0, function* () {
|
29
|
+
const onSelect = jest.fn();
|
30
|
+
const { container } = (0, react_2.render)(react_1.default.createElement(ChatbotHeaderSelectorDropdown_1.ChatbotHeaderSelectorDropdown, { value: "Option 1", className: "custom-header-selector-dropdown", onSelect: onSelect }, dropdownItems));
|
31
|
+
(0, react_2.act)(() => {
|
32
|
+
react_2.fireEvent.click(react_2.screen.getByRole('button', { name: 'Chatbot selector' }));
|
33
|
+
});
|
34
|
+
yield (0, react_2.waitFor)(() => {
|
35
|
+
expect(container.querySelector('.custom-header-selector-dropdown')).toBeTruthy();
|
36
|
+
expect(react_2.screen.getByText('Option 3'));
|
37
|
+
react_2.fireEvent.click(react_2.screen.getByText('Option 3'));
|
38
|
+
expect(onSelect).toHaveBeenCalled();
|
39
|
+
});
|
40
|
+
}));
|
41
|
+
});
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1,47 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
const react_1 = __importDefault(require("react"));
|
7
|
+
const react_2 = require("@testing-library/react");
|
8
|
+
const Chatbot_1 = require("../Chatbot/Chatbot");
|
9
|
+
const ChatbotHeaderTitle_1 = __importDefault(require("./ChatbotHeaderTitle"));
|
10
|
+
describe('ChatbotHeaderTitle', () => {
|
11
|
+
it('should render ChatbotHeaderTitle with children', () => {
|
12
|
+
(0, react_2.render)(react_1.default.createElement(ChatbotHeaderTitle_1.default, null, "Chatbot Header Title"));
|
13
|
+
expect(react_2.screen.getByText('Chatbot Header Title')).toBeTruthy();
|
14
|
+
});
|
15
|
+
it('should render ChatbotHeaderTitle with custom classname', () => {
|
16
|
+
const { container } = (0, react_2.render)(react_1.default.createElement(ChatbotHeaderTitle_1.default, { className: "custom-header-class" }, "Chatbot Header Title"));
|
17
|
+
expect(container.querySelector('.custom-header-class')).toBeTruthy();
|
18
|
+
});
|
19
|
+
it('should render title for default display mode', () => {
|
20
|
+
(0, react_2.render)(react_1.default.createElement(ChatbotHeaderTitle_1.default, { displayMode: Chatbot_1.ChatbotDisplayMode.default, showOnDefault: 'Default header title' }));
|
21
|
+
expect(react_2.screen.getByText('Default header title')).toBeTruthy();
|
22
|
+
});
|
23
|
+
it('should render title for docked display mode', () => {
|
24
|
+
(0, react_2.render)(react_1.default.createElement(ChatbotHeaderTitle_1.default, { displayMode: Chatbot_1.ChatbotDisplayMode.docked, showOnDocked: 'Docked header title' }));
|
25
|
+
expect(react_2.screen.getByText('Docked header title')).toBeTruthy();
|
26
|
+
});
|
27
|
+
it('should fallback to default title when docked display mode title is not configured', () => {
|
28
|
+
(0, react_2.render)(react_1.default.createElement(ChatbotHeaderTitle_1.default, { displayMode: Chatbot_1.ChatbotDisplayMode.docked, showOnDefault: 'Default header title' }));
|
29
|
+
expect(react_2.screen.getByText('Default header title')).toBeTruthy();
|
30
|
+
});
|
31
|
+
it('should render title for embedded display mode', () => {
|
32
|
+
(0, react_2.render)(react_1.default.createElement(ChatbotHeaderTitle_1.default, { displayMode: Chatbot_1.ChatbotDisplayMode.embedded, showOnEmbedded: 'Embedded header title' }));
|
33
|
+
expect(react_2.screen.getByText('Embedded header title')).toBeTruthy();
|
34
|
+
});
|
35
|
+
it('should fallback to default title when embedded display mode title is not configured', () => {
|
36
|
+
(0, react_2.render)(react_1.default.createElement(ChatbotHeaderTitle_1.default, { displayMode: Chatbot_1.ChatbotDisplayMode.embedded, showOnDefault: 'Default header title' }));
|
37
|
+
expect(react_2.screen.getByText('Default header title')).toBeTruthy();
|
38
|
+
});
|
39
|
+
it('should render title for fullscreen display mode', () => {
|
40
|
+
(0, react_2.render)(react_1.default.createElement(ChatbotHeaderTitle_1.default, { displayMode: Chatbot_1.ChatbotDisplayMode.fullscreen, showOnFullScreen: 'Fullscreen header title', className: "custom-header-class" }));
|
41
|
+
expect(react_2.screen.getByText('Fullscreen header title')).toBeTruthy();
|
42
|
+
});
|
43
|
+
it('should fallback to default title when fullscreen display mode title is not configured', () => {
|
44
|
+
(0, react_2.render)(react_1.default.createElement(ChatbotHeaderTitle_1.default, { displayMode: Chatbot_1.ChatbotDisplayMode.fullscreen, showOnDefault: 'Default header title' }));
|
45
|
+
expect(react_2.screen.getByText('Default header title')).toBeTruthy();
|
46
|
+
});
|
47
|
+
});
|
@@ -57,11 +57,21 @@ const MessageBase = (_a) => {
|
|
57
57
|
react_1.default.createElement("div", { className: "pf-chatbot__message-response" },
|
58
58
|
react_1.default.createElement("div", { className: "pf-chatbot__message-and-actions" },
|
59
59
|
isLoading ? (react_1.default.createElement(MessageLoading_1.default, { loadingWord: loadingWord })) : (react_1.default.createElement(react_markdown_1.default, { components: {
|
60
|
-
p: TextMessage_1.default,
|
61
|
-
code: (
|
60
|
+
p: (props) => react_1.default.createElement(TextMessage_1.default, Object.assign({ component: react_core_1.ContentVariants.p }, props)),
|
61
|
+
code: (_a) => {
|
62
|
+
var { children } = _a, props = __rest(_a, ["children"]);
|
63
|
+
return (react_1.default.createElement(CodeBlockMessage_1.default, Object.assign({}, props, codeBlockProps), children));
|
64
|
+
},
|
62
65
|
ul: UnorderedListMessage_1.default,
|
63
66
|
ol: (props) => react_1.default.createElement(OrderedListMessage_1.default, Object.assign({}, props)),
|
64
|
-
li: ListItemMessage_1.default
|
67
|
+
li: ListItemMessage_1.default,
|
68
|
+
h1: (props) => react_1.default.createElement(TextMessage_1.default, Object.assign({ component: react_core_1.ContentVariants.h1 }, props)),
|
69
|
+
h2: (props) => react_1.default.createElement(TextMessage_1.default, Object.assign({ component: react_core_1.ContentVariants.h2 }, props)),
|
70
|
+
h3: (props) => react_1.default.createElement(TextMessage_1.default, Object.assign({ component: react_core_1.ContentVariants.h3 }, props)),
|
71
|
+
h4: (props) => react_1.default.createElement(TextMessage_1.default, Object.assign({ component: react_core_1.ContentVariants.h4 }, props)),
|
72
|
+
h5: (props) => react_1.default.createElement(TextMessage_1.default, Object.assign({ component: react_core_1.ContentVariants.h5 }, props)),
|
73
|
+
h6: (props) => react_1.default.createElement(TextMessage_1.default, Object.assign({ component: react_core_1.ContentVariants.h6 }, props)),
|
74
|
+
blockquote: (props) => react_1.default.createElement(TextMessage_1.default, Object.assign({ component: react_core_1.ContentVariants.blockquote }, props))
|
65
75
|
}, remarkPlugins: [remark_gfm_1.default] }, content)),
|
66
76
|
!isLoading && sources && react_1.default.createElement(SourcesCard_1.default, Object.assign({}, sources)),
|
67
77
|
quickStarts && quickStarts.quickStart && (react_1.default.createElement(QuickStartTile_1.default, { quickStart: quickStarts.quickStart, onSelectQuickStart: quickStarts.onSelectQuickStart, minuteWord: quickStarts.minuteWord, minuteWordPlural: quickStarts.minuteWordPlural, prerequisiteWord: quickStarts.prerequisiteWord, prerequisiteWordPlural: quickStarts.prerequisiteWordPlural, quickStartButtonAriaLabel: quickStarts.quickStartButtonAriaLabel })),
|
@@ -77,6 +77,22 @@ const ORDERED_LIST_WITH_CODE = `
|
|
77
77
|
|
78
78
|
3. Item 3
|
79
79
|
`;
|
80
|
+
const HEADING = `
|
81
|
+
# h1 Heading
|
82
|
+
|
83
|
+
## h2 Heading
|
84
|
+
|
85
|
+
### h3 Heading
|
86
|
+
|
87
|
+
#### h4 Heading
|
88
|
+
|
89
|
+
##### h5 Heading
|
90
|
+
|
91
|
+
###### h6 Heading
|
92
|
+
`;
|
93
|
+
const BLOCK_QUOTES = `> Blockquotes can also be nested...
|
94
|
+
>> ...by using additional greater-than signs (>) right next to each other...
|
95
|
+
> > > ...or with spaces between each sign.`;
|
80
96
|
const checkListItemsRendered = () => {
|
81
97
|
const items = ['Item 1', 'Item 2', 'Item 3'];
|
82
98
|
expect(react_2.screen.getAllByRole('listitem')).toHaveLength(3);
|
@@ -312,12 +328,16 @@ describe('Message', () => {
|
|
312
328
|
(0, react_2.render)(react_1.default.createElement(Message_1.default, { avatar: "./img", role: "user", name: "User", content: CODE_MESSAGE }));
|
313
329
|
expect(react_2.screen.getByText('Here is some YAML code:')).toBeTruthy();
|
314
330
|
expect(react_2.screen.getByRole('button', { name: 'Copy code button' })).toBeTruthy();
|
315
|
-
expect(react_2.screen.getByText(/
|
331
|
+
expect(react_2.screen.getByText(/yaml/)).toBeTruthy();
|
332
|
+
expect(react_2.screen.getByText(/apiVersion:/i)).toBeTruthy();
|
333
|
+
expect(react_2.screen.getByText(/helm.openshift.io\/v1beta1/i)).toBeTruthy();
|
316
334
|
expect(react_2.screen.getByText(/metadata:/i)).toBeTruthy();
|
317
|
-
expect(react_2.screen.getByText(/name
|
335
|
+
expect(react_2.screen.getByText(/name:/i)).toBeTruthy();
|
336
|
+
expect(react_2.screen.getByText(/azure-sample-repo0oooo00ooo/i)).toBeTruthy();
|
318
337
|
expect(react_2.screen.getByText(/spec/i)).toBeTruthy();
|
319
338
|
expect(react_2.screen.getByText(/connectionConfig:/i)).toBeTruthy();
|
320
|
-
expect(react_2.screen.getByText(/url
|
339
|
+
expect(react_2.screen.getByText(/url:/i)).toBeTruthy();
|
340
|
+
expect(react_2.screen.getByText(/https:\/\/raw.githubusercontent.com\/Azure-Samples\/helm-charts\/master\/docs/i)).toBeTruthy();
|
321
341
|
});
|
322
342
|
it('can click copy code button', () => __awaiter(void 0, void 0, void 0, function* () {
|
323
343
|
// need explicit setup since RTL stubs clipboard if you do this
|
@@ -383,4 +403,19 @@ describe('Message', () => {
|
|
383
403
|
} }));
|
384
404
|
expect(react_2.screen.getAllByRole('img')[1]).toHaveAttribute('src', 'test.png');
|
385
405
|
}));
|
406
|
+
it('should handle block quote correctly', () => {
|
407
|
+
(0, react_2.render)(react_1.default.createElement(Message_1.default, { avatar: "./img", role: "user", name: "User", content: BLOCK_QUOTES }));
|
408
|
+
expect(react_2.screen.getByText(/Blockquotes can also be nested.../)).toBeTruthy();
|
409
|
+
expect(react_2.screen.getByText('...by using additional greater-than signs (>) right next to each other...')).toBeTruthy();
|
410
|
+
expect(react_2.screen.getByText(/...or with spaces between each sign./)).toBeTruthy();
|
411
|
+
});
|
412
|
+
it('should handle heading correctly', () => {
|
413
|
+
(0, react_2.render)(react_1.default.createElement(Message_1.default, { avatar: "./img", role: "user", name: "User", content: HEADING }));
|
414
|
+
expect(react_2.screen.getByRole('heading', { name: /h1 Heading/i })).toBeTruthy();
|
415
|
+
expect(react_2.screen.getByRole('heading', { name: /h2 Heading/i })).toBeTruthy();
|
416
|
+
expect(react_2.screen.getByRole('heading', { name: /h3 Heading/i })).toBeTruthy();
|
417
|
+
expect(react_2.screen.getByRole('heading', { name: /h4 Heading/i })).toBeTruthy();
|
418
|
+
expect(react_2.screen.getByRole('heading', { name: /h5 Heading/i })).toBeTruthy();
|
419
|
+
expect(react_2.screen.getByRole('heading', { name: /h6 Heading/i })).toBeTruthy();
|
420
|
+
});
|
386
421
|
});
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import React from 'react';
|
2
2
|
import { ExtraProps } from 'react-markdown';
|
3
|
-
|
3
|
+
import { ContentProps } from '@patternfly/react-core';
|
4
|
+
declare const TextMessage: ({ component, children, ...props }: ContentProps & ExtraProps) => React.JSX.Element;
|
4
5
|
export default TextMessage;
|