@patternfly/chatbot 6.8.0-prerelease.8 → 6.9.0-prerelease.1
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/CodeModal/CodeModal.js +5 -0
- package/dist/cjs/MarkdownContent/MarkdownContent.d.ts +26 -7
- package/dist/cjs/MarkdownContent/MarkdownContent.js +79 -166
- package/dist/cjs/MarkdownContent/MarkdownRenderer.d.ts +6 -0
- package/dist/cjs/MarkdownContent/MarkdownRenderer.js +187 -0
- package/dist/cjs/Message/Message.d.ts +3 -4
- package/dist/cjs/Message/Message.js +0 -2
- package/dist/cjs/MessageBox/MessageBox.js +5 -1
- package/dist/cjs/index.d.ts +0 -8
- package/dist/cjs/index.js +1 -13
- package/dist/css/main.css +18 -3
- package/dist/css/main.css.map +1 -1
- package/dist/esm/CodeModal/CodeModal.js +5 -0
- package/dist/esm/MarkdownContent/MarkdownContent.d.ts +26 -7
- package/dist/esm/MarkdownContent/MarkdownContent.js +52 -165
- package/dist/esm/MarkdownContent/MarkdownRenderer.d.ts +6 -0
- package/dist/esm/MarkdownContent/MarkdownRenderer.js +182 -0
- package/dist/esm/Message/Message.d.ts +3 -4
- package/dist/esm/Message/Message.js +0 -2
- package/dist/esm/MessageBox/MessageBox.js +5 -1
- package/dist/esm/index.d.ts +0 -8
- package/dist/esm/index.js +0 -8
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/generate-index.js +41 -16
- package/generate-index.test.js +68 -0
- package/monaco-environment.js +45 -0
- package/package.json +20 -2
- package/patternfly-docs/content/extensions/chatbot/chatbot.md +1 -0
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/BotMessage.tsx +1 -1
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithQuickStart.tsx +2 -2
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/Messages.md +2 -2
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/UserMessage.tsx +1 -1
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/monitor-sampleapp-quickstart.ts +1 -0
- package/patternfly-docs/content/extensions/chatbot/tree-shaking.md +124 -0
- package/patternfly-docs/monaco-environment.js +45 -0
- package/patternfly-docs/patternfly-docs.css.js +6 -0
- package/src/Chatbot/Chatbot.scss +4 -0
- package/src/ChatbotContent/ChatbotContent.scss +1 -1
- package/src/ChatbotFooter/ChatbotFooter.scss +2 -2
- package/src/ChatbotHeader/ChatbotHeader.scss +4 -0
- package/src/ChatbotModal/ChatbotModal.scss +10 -0
- package/src/CodeModal/CodeModal.tsx +6 -0
- package/src/DeepThinking/DeepThinking.test.tsx +10 -12
- package/src/MarkdownContent/MarkdownContent.test.tsx +52 -5
- package/src/MarkdownContent/MarkdownContent.tsx +77 -220
- package/src/MarkdownContent/MarkdownRenderer.tsx +235 -0
- package/src/Message/Message.test.tsx +5 -0
- package/src/Message/Message.tsx +3 -5
- package/src/MessageBox/MessageBox.tsx +13 -1
- package/src/ResponseActions/ResponseActions.test.tsx +42 -48
- package/src/ToolCall/ToolCall.test.tsx +6 -9
- package/src/ToolResponse/ToolResponse.test.tsx +16 -22
- package/src/index.ts +0 -12
- package/src/test-utils/markdownTestUtils.ts +21 -0
- package/tsconfig.json +6 -1
- package/dist/cjs/AttachmentEdit/AttachmentEdit.test.d.ts +0 -1
- package/dist/cjs/AttachmentEdit/AttachmentEdit.test.js +0 -77
- package/dist/cjs/Chatbot/Chatbot.test.d.ts +0 -1
- package/dist/cjs/Chatbot/Chatbot.test.js +0 -32
- package/dist/cjs/ChatbotAlert/ChatbotAlert.test.d.ts +0 -1
- package/dist/cjs/ChatbotAlert/ChatbotAlert.test.js +0 -27
- package/dist/cjs/ChatbotContent/ChatbotContent.test.d.ts +0 -1
- package/dist/cjs/ChatbotContent/ChatbotContent.test.js +0 -22
- package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.test.d.ts +0 -1
- package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.test.js +0 -75
- package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.d.ts +0 -1
- package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +0 -601
- package/dist/cjs/ChatbotFooter/ChatbotFooter.test.d.ts +0 -1
- package/dist/cjs/ChatbotFooter/ChatbotFooter.test.js +0 -27
- package/dist/cjs/ChatbotFooter/ChatbotFooternote.test.d.ts +0 -1
- package/dist/cjs/ChatbotFooter/ChatbotFooternote.test.js +0 -87
- package/dist/cjs/ChatbotHeader/ChatbotHeader.test.d.ts +0 -1
- package/dist/cjs/ChatbotHeader/ChatbotHeader.test.js +0 -18
- package/dist/cjs/ChatbotHeader/ChatbotHeaderActions.test.d.ts +0 -1
- package/dist/cjs/ChatbotHeader/ChatbotHeaderActions.test.js +0 -18
- package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.test.d.ts +0 -1
- package/dist/cjs/ChatbotHeader/ChatbotHeaderCloseButton.test.js +0 -22
- package/dist/cjs/ChatbotHeader/ChatbotHeaderMain.test.d.ts +0 -1
- package/dist/cjs/ChatbotHeader/ChatbotHeaderMain.test.js +0 -18
- package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.test.d.ts +0 -1
- package/dist/cjs/ChatbotHeader/ChatbotHeaderMenu.test.js +0 -22
- package/dist/cjs/ChatbotHeader/ChatbotHeaderNewChatButton.test.d.ts +0 -1
- package/dist/cjs/ChatbotHeader/ChatbotHeaderNewChatButton.test.js +0 -22
- package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.d.ts +0 -1
- package/dist/cjs/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.js +0 -46
- package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.d.ts +0 -1
- package/dist/cjs/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.js +0 -44
- package/dist/cjs/ChatbotHeader/ChatbotHeaderTitle.test.d.ts +0 -1
- package/dist/cjs/ChatbotHeader/ChatbotHeaderTitle.test.js +0 -55
- package/dist/cjs/ChatbotModal/ChatbotModal.test.d.ts +0 -1
- package/dist/cjs/ChatbotModal/ChatbotModal.test.js +0 -16
- package/dist/cjs/ChatbotToggle/ChatbotToggle.test.d.ts +0 -1
- package/dist/cjs/ChatbotToggle/ChatbotToggle.test.js +0 -64
- package/dist/cjs/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.d.ts +0 -1
- package/dist/cjs/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.js +0 -61
- package/dist/cjs/CodeModal/CodeModal.test.d.ts +0 -1
- package/dist/cjs/CodeModal/CodeModal.test.js +0 -34
- package/dist/cjs/Compare/Compare.test.d.ts +0 -1
- package/dist/cjs/Compare/Compare.test.js +0 -18
- package/dist/cjs/DeepThinking/DeepThinking.test.d.ts +0 -1
- package/dist/cjs/DeepThinking/DeepThinking.test.js +0 -146
- package/dist/cjs/FileDetails/FileDetails.test.d.ts +0 -1
- package/dist/cjs/FileDetails/FileDetails.test.js +0 -42
- package/dist/cjs/FileDetailsLabel/FileDetailsLabel.test.d.ts +0 -1
- package/dist/cjs/FileDetailsLabel/FileDetailsLabel.test.js +0 -79
- package/dist/cjs/FileDropZone/FileDropZone.test.d.ts +0 -1
- package/dist/cjs/FileDropZone/FileDropZone.test.js +0 -100
- package/dist/cjs/FilePreview/FilePreview.test.d.ts +0 -1
- package/dist/cjs/FilePreview/FilePreview.test.js +0 -97
- package/dist/cjs/ImagePreview/ImagePreview.test.d.ts +0 -1
- package/dist/cjs/ImagePreview/ImagePreview.test.js +0 -225
- package/dist/cjs/MarkdownContent/MarkdownContent.test.d.ts +0 -1
- package/dist/cjs/MarkdownContent/MarkdownContent.test.js +0 -192
- package/dist/cjs/Message/CodeBlockMessage/CodeBlockMessage.test.d.ts +0 -1
- package/dist/cjs/Message/CodeBlockMessage/CodeBlockMessage.test.js +0 -131
- package/dist/cjs/Message/ErrorMessage/ErrorMessage.test.d.ts +0 -1
- package/dist/cjs/Message/ErrorMessage/ErrorMessage.test.js +0 -30
- package/dist/cjs/Message/Message.test.d.ts +0 -1
- package/dist/cjs/Message/Message.test.js +0 -1128
- package/dist/cjs/Message/MessageAndActions/MessageAndActions.test.d.ts +0 -1
- package/dist/cjs/Message/MessageAndActions/MessageAndActions.test.js +0 -25
- package/dist/cjs/Message/MessageAttachments/MessageAttachmentItem.test.d.ts +0 -1
- package/dist/cjs/Message/MessageAttachments/MessageAttachmentItem.test.js +0 -25
- package/dist/cjs/Message/MessageAttachments/MessageAttachmentsContainer.test.d.ts +0 -1
- package/dist/cjs/Message/MessageAttachments/MessageAttachmentsContainer.test.js +0 -25
- package/dist/cjs/Message/MessageLoading.test.d.ts +0 -1
- package/dist/cjs/Message/MessageLoading.test.js +0 -25
- package/dist/cjs/Message/QuickResponse/QuickResponse.test.d.ts +0 -1
- package/dist/cjs/Message/QuickResponse/QuickResponse.test.js +0 -109
- package/dist/cjs/Message/QuickStarts/QuickStartTileDescription.test.d.ts +0 -1
- package/dist/cjs/Message/QuickStarts/QuickStartTileDescription.test.js +0 -76
- package/dist/cjs/Message/UserFeedback/UserFeedback.test.d.ts +0 -1
- package/dist/cjs/Message/UserFeedback/UserFeedback.test.js +0 -181
- package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.test.d.ts +0 -1
- package/dist/cjs/Message/UserFeedback/UserFeedbackComplete.test.js +0 -243
- package/dist/cjs/MessageBar/AttachButton.test.d.ts +0 -1
- package/dist/cjs/MessageBar/AttachButton.test.js +0 -152
- package/dist/cjs/MessageBar/MessageBar.test.d.ts +0 -1
- package/dist/cjs/MessageBar/MessageBar.test.js +0 -338
- package/dist/cjs/MessageBar/SendButton.test.d.ts +0 -1
- package/dist/cjs/MessageBar/SendButton.test.js +0 -58
- package/dist/cjs/MessageBar/StopButton.test.d.ts +0 -1
- package/dist/cjs/MessageBar/StopButton.test.js +0 -58
- package/dist/cjs/MessageBox/JumpButton.test.d.ts +0 -1
- package/dist/cjs/MessageBox/JumpButton.test.js +0 -39
- package/dist/cjs/MessageBox/MessageBox.test.d.ts +0 -1
- package/dist/cjs/MessageBox/MessageBox.test.js +0 -294
- package/dist/cjs/MessageDivider/MessageDivider.test.d.ts +0 -1
- package/dist/cjs/MessageDivider/MessageDivider.test.js +0 -29
- package/dist/cjs/Onboarding/Onboarding.test.d.ts +0 -1
- package/dist/cjs/Onboarding/Onboarding.test.js +0 -80
- package/dist/cjs/PreviewAttachment/PreviewAttachment.test.d.ts +0 -1
- package/dist/cjs/PreviewAttachment/PreviewAttachment.test.js +0 -50
- package/dist/cjs/ResponseActions/ResponseActionButton.test.d.ts +0 -1
- package/dist/cjs/ResponseActions/ResponseActionButton.test.js +0 -54
- package/dist/cjs/ResponseActions/ResponseActions.test.d.ts +0 -1
- package/dist/cjs/ResponseActions/ResponseActions.test.js +0 -455
- package/dist/cjs/ResponseActions/ResponseActionsGroups.test.d.ts +0 -1
- package/dist/cjs/ResponseActions/ResponseActionsGroups.test.js +0 -25
- package/dist/cjs/Settings/SettingsForm.test.d.ts +0 -1
- package/dist/cjs/Settings/SettingsForm.test.js +0 -35
- package/dist/cjs/SourcesCard/SourcesCard.test.d.ts +0 -1
- package/dist/cjs/SourcesCard/SourcesCard.test.js +0 -39
- package/dist/cjs/SourcesCardBase/SourcesCardBase.test.d.ts +0 -1
- package/dist/cjs/SourcesCardBase/SourcesCardBase.test.js +0 -199
- package/dist/cjs/TermsOfUse/TermsOfUse.test.d.ts +0 -1
- package/dist/cjs/TermsOfUse/TermsOfUse.test.js +0 -77
- package/dist/cjs/ToolCall/ToolCall.test.d.ts +0 -1
- package/dist/cjs/ToolCall/ToolCall.test.js +0 -201
- package/dist/cjs/ToolResponse/ToolResponse.test.d.ts +0 -1
- package/dist/cjs/ToolResponse/ToolResponse.test.js +0 -184
- package/dist/cjs/__mocks__/monaco-editor.d.ts +0 -11
- package/dist/cjs/__mocks__/monaco-editor.js +0 -18
- package/dist/cjs/__mocks__/rehype-external-links.d.ts +0 -2
- package/dist/cjs/__mocks__/rehype-external-links.js +0 -4
- package/dist/cjs/__mocks__/rehype-highlight.d.ts +0 -2
- package/dist/cjs/__mocks__/rehype-highlight.js +0 -4
- package/dist/cjs/__mocks__/rehype-sanitize.d.ts +0 -2
- package/dist/cjs/__mocks__/rehype-sanitize.js +0 -4
- package/dist/cjs/__mocks__/rehype-unwrap-images.d.ts +0 -2
- package/dist/cjs/__mocks__/rehype-unwrap-images.js +0 -4
- package/dist/esm/AttachmentEdit/AttachmentEdit.test.d.ts +0 -1
- package/dist/esm/AttachmentEdit/AttachmentEdit.test.js +0 -72
- package/dist/esm/Chatbot/Chatbot.test.d.ts +0 -1
- package/dist/esm/Chatbot/Chatbot.test.js +0 -27
- package/dist/esm/ChatbotAlert/ChatbotAlert.test.d.ts +0 -1
- package/dist/esm/ChatbotAlert/ChatbotAlert.test.js +0 -22
- package/dist/esm/ChatbotContent/ChatbotContent.test.d.ts +0 -1
- package/dist/esm/ChatbotContent/ChatbotContent.test.js +0 -17
- package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.test.d.ts +0 -1
- package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.test.js +0 -70
- package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.d.ts +0 -1
- package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +0 -596
- package/dist/esm/ChatbotFooter/ChatbotFooter.test.d.ts +0 -1
- package/dist/esm/ChatbotFooter/ChatbotFooter.test.js +0 -22
- package/dist/esm/ChatbotFooter/ChatbotFooternote.test.d.ts +0 -1
- package/dist/esm/ChatbotFooter/ChatbotFooternote.test.js +0 -82
- package/dist/esm/ChatbotHeader/ChatbotHeader.test.d.ts +0 -1
- package/dist/esm/ChatbotHeader/ChatbotHeader.test.js +0 -13
- package/dist/esm/ChatbotHeader/ChatbotHeaderActions.test.d.ts +0 -1
- package/dist/esm/ChatbotHeader/ChatbotHeaderActions.test.js +0 -13
- package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.test.d.ts +0 -1
- package/dist/esm/ChatbotHeader/ChatbotHeaderCloseButton.test.js +0 -20
- package/dist/esm/ChatbotHeader/ChatbotHeaderMain.test.d.ts +0 -1
- package/dist/esm/ChatbotHeader/ChatbotHeaderMain.test.js +0 -13
- package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.test.d.ts +0 -1
- package/dist/esm/ChatbotHeader/ChatbotHeaderMenu.test.js +0 -20
- package/dist/esm/ChatbotHeader/ChatbotHeaderNewChatButton.test.d.ts +0 -1
- package/dist/esm/ChatbotHeader/ChatbotHeaderNewChatButton.test.js +0 -20
- package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.d.ts +0 -1
- package/dist/esm/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.js +0 -44
- package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.d.ts +0 -1
- package/dist/esm/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.js +0 -42
- package/dist/esm/ChatbotHeader/ChatbotHeaderTitle.test.d.ts +0 -1
- package/dist/esm/ChatbotHeader/ChatbotHeaderTitle.test.js +0 -50
- package/dist/esm/ChatbotModal/ChatbotModal.test.d.ts +0 -1
- package/dist/esm/ChatbotModal/ChatbotModal.test.js +0 -11
- package/dist/esm/ChatbotToggle/ChatbotToggle.test.d.ts +0 -1
- package/dist/esm/ChatbotToggle/ChatbotToggle.test.js +0 -59
- package/dist/esm/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.d.ts +0 -1
- package/dist/esm/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.js +0 -56
- package/dist/esm/CodeModal/CodeModal.test.d.ts +0 -1
- package/dist/esm/CodeModal/CodeModal.test.js +0 -29
- package/dist/esm/Compare/Compare.test.d.ts +0 -1
- package/dist/esm/Compare/Compare.test.js +0 -13
- package/dist/esm/DeepThinking/DeepThinking.test.d.ts +0 -1
- package/dist/esm/DeepThinking/DeepThinking.test.js +0 -141
- package/dist/esm/FileDetails/FileDetails.test.d.ts +0 -1
- package/dist/esm/FileDetails/FileDetails.test.js +0 -37
- package/dist/esm/FileDetailsLabel/FileDetailsLabel.test.d.ts +0 -1
- package/dist/esm/FileDetailsLabel/FileDetailsLabel.test.js +0 -74
- package/dist/esm/FileDropZone/FileDropZone.test.d.ts +0 -1
- package/dist/esm/FileDropZone/FileDropZone.test.js +0 -95
- package/dist/esm/FilePreview/FilePreview.test.d.ts +0 -1
- package/dist/esm/FilePreview/FilePreview.test.js +0 -92
- package/dist/esm/ImagePreview/ImagePreview.test.d.ts +0 -1
- package/dist/esm/ImagePreview/ImagePreview.test.js +0 -220
- package/dist/esm/MarkdownContent/MarkdownContent.test.d.ts +0 -1
- package/dist/esm/MarkdownContent/MarkdownContent.test.js +0 -187
- package/dist/esm/Message/CodeBlockMessage/CodeBlockMessage.test.d.ts +0 -1
- package/dist/esm/Message/CodeBlockMessage/CodeBlockMessage.test.js +0 -126
- package/dist/esm/Message/ErrorMessage/ErrorMessage.test.d.ts +0 -1
- package/dist/esm/Message/ErrorMessage/ErrorMessage.test.js +0 -25
- package/dist/esm/Message/Message.test.d.ts +0 -1
- package/dist/esm/Message/Message.test.js +0 -1123
- package/dist/esm/Message/MessageAndActions/MessageAndActions.test.d.ts +0 -1
- package/dist/esm/Message/MessageAndActions/MessageAndActions.test.js +0 -20
- package/dist/esm/Message/MessageAttachments/MessageAttachmentItem.test.d.ts +0 -1
- package/dist/esm/Message/MessageAttachments/MessageAttachmentItem.test.js +0 -20
- package/dist/esm/Message/MessageAttachments/MessageAttachmentsContainer.test.d.ts +0 -1
- package/dist/esm/Message/MessageAttachments/MessageAttachmentsContainer.test.js +0 -20
- package/dist/esm/Message/MessageLoading.test.d.ts +0 -1
- package/dist/esm/Message/MessageLoading.test.js +0 -20
- package/dist/esm/Message/QuickResponse/QuickResponse.test.d.ts +0 -1
- package/dist/esm/Message/QuickResponse/QuickResponse.test.js +0 -104
- package/dist/esm/Message/QuickStarts/QuickStartTileDescription.test.d.ts +0 -1
- package/dist/esm/Message/QuickStarts/QuickStartTileDescription.test.js +0 -48
- package/dist/esm/Message/UserFeedback/UserFeedback.test.d.ts +0 -1
- package/dist/esm/Message/UserFeedback/UserFeedback.test.js +0 -176
- package/dist/esm/Message/UserFeedback/UserFeedbackComplete.test.d.ts +0 -1
- package/dist/esm/Message/UserFeedback/UserFeedbackComplete.test.js +0 -238
- package/dist/esm/MessageBar/AttachButton.test.d.ts +0 -1
- package/dist/esm/MessageBar/AttachButton.test.js +0 -147
- package/dist/esm/MessageBar/MessageBar.test.d.ts +0 -1
- package/dist/esm/MessageBar/MessageBar.test.js +0 -333
- package/dist/esm/MessageBar/SendButton.test.d.ts +0 -1
- package/dist/esm/MessageBar/SendButton.test.js +0 -53
- package/dist/esm/MessageBar/StopButton.test.d.ts +0 -1
- package/dist/esm/MessageBar/StopButton.test.js +0 -53
- package/dist/esm/MessageBox/JumpButton.test.d.ts +0 -1
- package/dist/esm/MessageBox/JumpButton.test.js +0 -34
- package/dist/esm/MessageBox/MessageBox.test.d.ts +0 -1
- package/dist/esm/MessageBox/MessageBox.test.js +0 -289
- package/dist/esm/MessageDivider/MessageDivider.test.d.ts +0 -1
- package/dist/esm/MessageDivider/MessageDivider.test.js +0 -24
- package/dist/esm/Onboarding/Onboarding.test.d.ts +0 -1
- package/dist/esm/Onboarding/Onboarding.test.js +0 -75
- package/dist/esm/PreviewAttachment/PreviewAttachment.test.d.ts +0 -1
- package/dist/esm/PreviewAttachment/PreviewAttachment.test.js +0 -48
- package/dist/esm/ResponseActions/ResponseActionButton.test.d.ts +0 -1
- package/dist/esm/ResponseActions/ResponseActionButton.test.js +0 -49
- package/dist/esm/ResponseActions/ResponseActions.test.d.ts +0 -1
- package/dist/esm/ResponseActions/ResponseActions.test.js +0 -450
- package/dist/esm/ResponseActions/ResponseActionsGroups.test.d.ts +0 -1
- package/dist/esm/ResponseActions/ResponseActionsGroups.test.js +0 -20
- package/dist/esm/Settings/SettingsForm.test.d.ts +0 -1
- package/dist/esm/Settings/SettingsForm.test.js +0 -33
- package/dist/esm/SourcesCard/SourcesCard.test.d.ts +0 -1
- package/dist/esm/SourcesCard/SourcesCard.test.js +0 -34
- package/dist/esm/SourcesCardBase/SourcesCardBase.test.d.ts +0 -1
- package/dist/esm/SourcesCardBase/SourcesCardBase.test.js +0 -194
- package/dist/esm/TermsOfUse/TermsOfUse.test.d.ts +0 -1
- package/dist/esm/TermsOfUse/TermsOfUse.test.js +0 -72
- package/dist/esm/ToolCall/ToolCall.test.d.ts +0 -1
- package/dist/esm/ToolCall/ToolCall.test.js +0 -196
- package/dist/esm/ToolResponse/ToolResponse.test.d.ts +0 -1
- package/dist/esm/ToolResponse/ToolResponse.test.js +0 -179
- package/dist/esm/__mocks__/monaco-editor.d.ts +0 -11
- package/dist/esm/__mocks__/monaco-editor.js +0 -18
- package/dist/esm/__mocks__/rehype-external-links.d.ts +0 -2
- package/dist/esm/__mocks__/rehype-external-links.js +0 -2
- package/dist/esm/__mocks__/rehype-highlight.d.ts +0 -2
- package/dist/esm/__mocks__/rehype-highlight.js +0 -2
- package/dist/esm/__mocks__/rehype-sanitize.d.ts +0 -2
- package/dist/esm/__mocks__/rehype-sanitize.js +0 -2
- package/dist/esm/__mocks__/rehype-unwrap-images.d.ts +0 -2
- package/dist/esm/__mocks__/rehype-unwrap-images.js +0 -2
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
|
-
import { render, screen } from '@testing-library/react';
|
|
12
|
-
import userEvent from '@testing-library/user-event';
|
|
13
|
-
import '@testing-library/jest-dom';
|
|
14
|
-
import DeepThinking from './DeepThinking';
|
|
15
|
-
describe('DeepThinking', () => {
|
|
16
|
-
const defaultProps = {
|
|
17
|
-
toggleContent: 'Show thinking'
|
|
18
|
-
};
|
|
19
|
-
it('should render with required props only', () => {
|
|
20
|
-
render(_jsx(DeepThinking, Object.assign({}, defaultProps)));
|
|
21
|
-
expect(screen.getByText('Show thinking')).toBeTruthy();
|
|
22
|
-
});
|
|
23
|
-
it('should render subheading when provided', () => {
|
|
24
|
-
const subheading = 'Thought for 3 seconds';
|
|
25
|
-
render(_jsx(DeepThinking, Object.assign({}, defaultProps, { subheading: subheading })));
|
|
26
|
-
expect(screen.getByText(subheading)).toBeTruthy();
|
|
27
|
-
});
|
|
28
|
-
it('should render body content when provided', () => {
|
|
29
|
-
const body = "Here's why I think that";
|
|
30
|
-
render(_jsx(DeepThinking, Object.assign({}, defaultProps, { body: body })));
|
|
31
|
-
expect(screen.getByText(body)).toBeTruthy();
|
|
32
|
-
});
|
|
33
|
-
it('should render with complex content including React elements', () => {
|
|
34
|
-
const body = (_jsxs("div", { children: [_jsx("p", { children: "Complex body content" }), _jsxs("ul", { children: [_jsx("li", { children: "Item 1" }), _jsx("li", { children: "Item 2" })] })] }));
|
|
35
|
-
render(_jsx(DeepThinking, Object.assign({}, defaultProps, { body: body })));
|
|
36
|
-
expect(screen.getByText('Complex body content')).toBeTruthy();
|
|
37
|
-
expect(screen.getByText('Item 1')).toBeTruthy();
|
|
38
|
-
expect(screen.getByText('Item 2')).toBeTruthy();
|
|
39
|
-
});
|
|
40
|
-
it('should apply custom className from cardProps', () => {
|
|
41
|
-
const { container } = render(_jsx(DeepThinking, Object.assign({}, defaultProps, { cardProps: { className: 'custom-tool-response-class' } })));
|
|
42
|
-
expect(container.querySelector('.custom-tool-response-class')).toBeTruthy();
|
|
43
|
-
});
|
|
44
|
-
it('should pass through expandableSectionProps', () => {
|
|
45
|
-
render(_jsx(DeepThinking, Object.assign({}, defaultProps, { expandableSectionProps: { className: 'custom-expandable-class' } })));
|
|
46
|
-
expect(document.querySelector('.custom-expandable-class')).toBeTruthy();
|
|
47
|
-
});
|
|
48
|
-
it('should not render subheading span when subheading is not provided', () => {
|
|
49
|
-
const { container } = render(_jsx(DeepThinking, Object.assign({}, defaultProps)));
|
|
50
|
-
const subheadingContainer = container.querySelector('.pf-chatbot__tool-response-subheading');
|
|
51
|
-
expect(subheadingContainer).toBeFalsy();
|
|
52
|
-
});
|
|
53
|
-
it('should pass through cardBodyProps', () => {
|
|
54
|
-
render(_jsx(DeepThinking, Object.assign({}, defaultProps, { body: "Thinking content", cardBodyProps: { className: 'custom-card-body-class' } })));
|
|
55
|
-
const cardBody = screen.getByText('Thinking content').closest('.pf-v6-c-card__body');
|
|
56
|
-
expect(cardBody).toHaveClass('custom-card-body-class');
|
|
57
|
-
});
|
|
58
|
-
it('Renders expanded by default', () => {
|
|
59
|
-
render(_jsx(DeepThinking, Object.assign({}, defaultProps, { body: "Thinking content" })));
|
|
60
|
-
expect(screen.getByRole('button', { name: defaultProps.toggleContent })).toHaveAttribute('aria-expanded', 'true');
|
|
61
|
-
expect(screen.getByText('Thinking content')).toBeVisible();
|
|
62
|
-
});
|
|
63
|
-
it('Renders collapsed when isDefaultExpanded is false', () => {
|
|
64
|
-
render(_jsx(DeepThinking, Object.assign({ isDefaultExpanded: false }, defaultProps, { body: "Thinking content" })));
|
|
65
|
-
expect(screen.getByRole('button', { name: defaultProps.toggleContent })).toHaveAttribute('aria-expanded', 'false');
|
|
66
|
-
expect(screen.getByText('Thinking content')).not.toBeVisible();
|
|
67
|
-
});
|
|
68
|
-
it('expandableSectionProps.isExpanded overrides isDefaultExpanded', () => {
|
|
69
|
-
render(_jsx(DeepThinking, Object.assign({}, defaultProps, { isDefaultExpanded: false, body: "Thinking content", expandableSectionProps: { isExpanded: true } })));
|
|
70
|
-
expect(screen.getByRole('button', { name: defaultProps.toggleContent })).toHaveAttribute('aria-expanded', 'true');
|
|
71
|
-
expect(screen.getByText('Thinking content')).toBeVisible();
|
|
72
|
-
});
|
|
73
|
-
it('expandableSectionProps.onToggle overrides internal onToggle behavior', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
74
|
-
const user = userEvent.setup();
|
|
75
|
-
const customOnToggle = jest.fn();
|
|
76
|
-
render(_jsx(DeepThinking, Object.assign({}, defaultProps, { isDefaultExpanded: false, body: "Thinking content", expandableSectionProps: { onToggle: customOnToggle } })));
|
|
77
|
-
const toggleButton = screen.getByRole('button', { name: defaultProps.toggleContent });
|
|
78
|
-
expect(toggleButton).toHaveAttribute('aria-expanded', 'false');
|
|
79
|
-
yield user.click(toggleButton);
|
|
80
|
-
expect(customOnToggle).toHaveBeenCalled();
|
|
81
|
-
expect(toggleButton).toHaveAttribute('aria-expanded', 'false');
|
|
82
|
-
expect(screen.getByText('Thinking content')).not.toBeVisible();
|
|
83
|
-
}));
|
|
84
|
-
it('should render toggleContent as markdown when isToggleContentMarkdown is true', () => {
|
|
85
|
-
const toggleContent = '**Bold thinking**';
|
|
86
|
-
const { container } = render(_jsx(DeepThinking, { toggleContent: toggleContent, isToggleContentMarkdown: true }));
|
|
87
|
-
expect(container.querySelector('strong')).toBeTruthy();
|
|
88
|
-
expect(screen.getByText('Bold thinking')).toBeTruthy();
|
|
89
|
-
});
|
|
90
|
-
it('should not render toggleContent as markdown when isToggleContentMarkdown is false', () => {
|
|
91
|
-
const toggleContent = '**Bold thinking**';
|
|
92
|
-
const { container } = render(_jsx(DeepThinking, { toggleContent: toggleContent }));
|
|
93
|
-
expect(container.querySelector('strong')).toBeFalsy();
|
|
94
|
-
expect(screen.getByText('**Bold thinking**')).toBeTruthy();
|
|
95
|
-
});
|
|
96
|
-
it('should render subheading as markdown when isSubheadingMarkdown is true', () => {
|
|
97
|
-
const subheading = '**Bold subheading**';
|
|
98
|
-
const { container } = render(_jsx(DeepThinking, Object.assign({}, defaultProps, { subheading: subheading, isSubheadingMarkdown: true })));
|
|
99
|
-
expect(container.querySelector('strong')).toBeTruthy();
|
|
100
|
-
expect(screen.getByText('Bold subheading')).toBeTruthy();
|
|
101
|
-
});
|
|
102
|
-
it('should not render subheading as markdown when isSubheadingMarkdown is false', () => {
|
|
103
|
-
const subheading = '**Bold subheading**';
|
|
104
|
-
render(_jsx(DeepThinking, Object.assign({}, defaultProps, { subheading: subheading })));
|
|
105
|
-
expect(screen.getByText('**Bold subheading**')).toBeTruthy();
|
|
106
|
-
});
|
|
107
|
-
it('should render body as markdown when isBodyMarkdown is true', () => {
|
|
108
|
-
const body = '**Bold body**';
|
|
109
|
-
const { container } = render(_jsx(DeepThinking, Object.assign({}, defaultProps, { body: body, isBodyMarkdown: true })));
|
|
110
|
-
expect(container.querySelector('strong')).toBeTruthy();
|
|
111
|
-
expect(screen.getByText('Bold body')).toBeTruthy();
|
|
112
|
-
});
|
|
113
|
-
it('should not render body as markdown when isBodyMarkdown is false', () => {
|
|
114
|
-
const body = '**Bold body**';
|
|
115
|
-
render(_jsx(DeepThinking, Object.assign({}, defaultProps, { body: body })));
|
|
116
|
-
expect(screen.getByText('**Bold body**')).toBeTruthy();
|
|
117
|
-
});
|
|
118
|
-
it('should pass markdownContentProps to MarkdownContent component', () => {
|
|
119
|
-
const body = '**Bold body**';
|
|
120
|
-
const { container } = render(_jsx(DeepThinking, Object.assign({}, defaultProps, { body: body, isBodyMarkdown: true, markdownContentProps: { isPrimary: true } })));
|
|
121
|
-
expect(container.querySelector('.pf-m-primary')).toBeTruthy();
|
|
122
|
-
});
|
|
123
|
-
it('should render spinner when isLoading is true', () => {
|
|
124
|
-
render(_jsx(DeepThinking, Object.assign({}, defaultProps, { isLoading: true })));
|
|
125
|
-
expect(screen.getByLabelText('Contents')).toBeInTheDocument();
|
|
126
|
-
});
|
|
127
|
-
it('should not render spinner when isLoading is false', () => {
|
|
128
|
-
render(_jsx(DeepThinking, Object.assign({}, defaultProps)));
|
|
129
|
-
expect(screen.queryByLabelText('Contents')).not.toBeInTheDocument();
|
|
130
|
-
});
|
|
131
|
-
it('should pass spinnerProps to Spinner component', () => {
|
|
132
|
-
render(_jsx(DeepThinking, Object.assign({}, defaultProps, { isLoading: true, spinnerProps: { 'aria-label': 'Custom label' } })));
|
|
133
|
-
expect(screen.getByLabelText('Custom label')).toBeInTheDocument();
|
|
134
|
-
});
|
|
135
|
-
it('should not render spinner when isToggleContentMarkdown is true', () => {
|
|
136
|
-
const toggleContent = '**Bold thinking**';
|
|
137
|
-
render(_jsx(DeepThinking, { toggleContent: toggleContent, isToggleContentMarkdown: true, isLoading: true }));
|
|
138
|
-
expect(screen.queryByLabelText('Contents')).not.toBeInTheDocument();
|
|
139
|
-
expect(screen.getByText('Bold thinking')).toBeInTheDocument();
|
|
140
|
-
});
|
|
141
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import '@testing-library/jest-dom';
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { render, screen } from '@testing-library/react';
|
|
3
|
-
import '@testing-library/jest-dom';
|
|
4
|
-
import FileDetails from './FileDetails';
|
|
5
|
-
describe('FileDetails', () => {
|
|
6
|
-
it('should render file details', () => {
|
|
7
|
-
const { container } = render(_jsx(FileDetails, { fileName: "test.txt" }));
|
|
8
|
-
expect(container).toMatchSnapshot();
|
|
9
|
-
});
|
|
10
|
-
it('should render file details correctly if an extension we support is passed in', () => {
|
|
11
|
-
render(_jsx(FileDetails, { fileName: "test.txt", languageTestId: "language" }));
|
|
12
|
-
expect(screen.getByText('test')).toBeTruthy();
|
|
13
|
-
expect(screen.queryByText('test.txt')).toBeFalsy();
|
|
14
|
-
expect(screen.getByText('TEXT')).toBeTruthy();
|
|
15
|
-
expect(screen.getByTestId('language')).toBeTruthy();
|
|
16
|
-
});
|
|
17
|
-
it('should skip language if we do not support an extension', () => {
|
|
18
|
-
render(_jsx(FileDetails, { fileName: "test.joke", languageTestId: "language" }));
|
|
19
|
-
expect(screen.getByText('test')).toBeTruthy();
|
|
20
|
-
expect(screen.queryByTestId('language')).toBeFalsy();
|
|
21
|
-
});
|
|
22
|
-
it('should support image formats by rendering extension differently', () => {
|
|
23
|
-
render(_jsx(FileDetails, { fileName: "test.svg", languageTestId: "language" }));
|
|
24
|
-
expect(screen.getByText('test')).toBeTruthy();
|
|
25
|
-
expect(screen.queryByText('test.svg')).toBeFalsy();
|
|
26
|
-
expect(screen.queryByTestId('language')).toBeFalsy();
|
|
27
|
-
});
|
|
28
|
-
it('should handle truncation differently', () => {
|
|
29
|
-
render(_jsx(FileDetails, { fileName: "test.svg", languageTestId: "language", hasTruncation: false }));
|
|
30
|
-
expect(screen.getByText('test.svg')).toBeTruthy();
|
|
31
|
-
expect(screen.queryByTestId('language')).toBeFalsy();
|
|
32
|
-
});
|
|
33
|
-
it('should include file size if prop passed in', () => {
|
|
34
|
-
render(_jsx(FileDetails, { fileName: "test.joke", languageTestId: "language", fileSize: "100MB" }));
|
|
35
|
-
expect(screen.getByText('100MB')).toBeTruthy();
|
|
36
|
-
});
|
|
37
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import '@testing-library/jest-dom';
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
|
-
import { render, screen } from '@testing-library/react';
|
|
12
|
-
import '@testing-library/jest-dom';
|
|
13
|
-
import FileDetailsLabel from './FileDetailsLabel';
|
|
14
|
-
import userEvent from '@testing-library/user-event';
|
|
15
|
-
import { BellIcon } from '@patternfly/react-icons';
|
|
16
|
-
describe('FileDetailsLabel', () => {
|
|
17
|
-
it('should render file details label', () => {
|
|
18
|
-
const { container } = render(_jsx(FileDetailsLabel, { fileName: "test.txt" }));
|
|
19
|
-
expect(container).toMatchSnapshot();
|
|
20
|
-
});
|
|
21
|
-
it('should render file details correctly if an extension we support is passed in', () => {
|
|
22
|
-
render(_jsx(FileDetailsLabel, { fileName: "test.txt" }));
|
|
23
|
-
expect(screen.getByText('test')).toBeTruthy();
|
|
24
|
-
expect(screen.getByText('TEXT')).toBeTruthy();
|
|
25
|
-
});
|
|
26
|
-
it('should skip language if we do not support an extension', () => {
|
|
27
|
-
render(_jsx(FileDetailsLabel, { fileName: "test.joke", languageTestId: "language" }));
|
|
28
|
-
expect(screen.getByText('test')).toBeTruthy();
|
|
29
|
-
expect(screen.queryByTestId('language')).toBeFalsy();
|
|
30
|
-
});
|
|
31
|
-
it('should pass file size down', () => {
|
|
32
|
-
render(_jsx(FileDetailsLabel, { fileName: "test.svg", fileSize: "100MB" }));
|
|
33
|
-
expect(screen.getByText('100MB')).toBeTruthy();
|
|
34
|
-
});
|
|
35
|
-
it('should pass truncation prop down as true by default', () => {
|
|
36
|
-
render(_jsx(FileDetailsLabel, { fileName: "test.svg" }));
|
|
37
|
-
expect(screen.getByText('test')).toBeTruthy();
|
|
38
|
-
expect(screen.queryByText('test.svg')).toBeFalsy();
|
|
39
|
-
});
|
|
40
|
-
it('should pass truncation prop down when false', () => {
|
|
41
|
-
render(_jsx(FileDetailsLabel, { fileName: "test.svg", hasTruncation: false }));
|
|
42
|
-
expect(screen.getByText('test.svg')).toBeTruthy();
|
|
43
|
-
});
|
|
44
|
-
it('should not show spinner by default', () => {
|
|
45
|
-
render(_jsx(FileDetailsLabel, { fileName: "test.txt", spinnerTestId: "spinner" }));
|
|
46
|
-
expect(screen.queryByTestId('spinner')).toBeFalsy();
|
|
47
|
-
});
|
|
48
|
-
it('should show spinner if loading', () => {
|
|
49
|
-
render(_jsx(FileDetailsLabel, { fileName: "test.txt", isLoading: true, spinnerTestId: "spinner" }));
|
|
50
|
-
expect(screen.getByText('test')).toBeTruthy();
|
|
51
|
-
expect(screen.getByText('TEXT')).toBeTruthy();
|
|
52
|
-
expect(screen.queryByTestId('spinner')).toBeTruthy();
|
|
53
|
-
});
|
|
54
|
-
it('should call onClick prop', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
55
|
-
const spy = jest.fn();
|
|
56
|
-
render(_jsx(FileDetailsLabel, { fileName: "test.txt", onClick: spy }));
|
|
57
|
-
yield userEvent.click(screen.getByRole('button'));
|
|
58
|
-
expect(spy).toHaveBeenCalledTimes(1);
|
|
59
|
-
}));
|
|
60
|
-
it('should call onClose prop', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
61
|
-
const spy = jest.fn();
|
|
62
|
-
render(_jsx(FileDetailsLabel, { fileName: "test.txt", onClose: spy }));
|
|
63
|
-
yield userEvent.click(screen.getByRole('button', { name: /Close test.txt/i }));
|
|
64
|
-
expect(spy).toHaveBeenCalledTimes(1);
|
|
65
|
-
}));
|
|
66
|
-
it('should use closeButtonAriaLabel prop appropriately', () => {
|
|
67
|
-
render(_jsx(FileDetailsLabel, { fileName: "test.txt", onClose: jest.fn(), closeButtonAriaLabel: "Delete file" }));
|
|
68
|
-
expect(screen.getByRole('button', { name: /Delete file/i })).toBeTruthy();
|
|
69
|
-
});
|
|
70
|
-
it('should support custom close icon', () => {
|
|
71
|
-
render(_jsx(FileDetailsLabel, { fileName: "test.txt", onClose: jest.fn(), closeButtonIcon: _jsx(BellIcon, { "data-testid": "bell" }) }));
|
|
72
|
-
expect(screen.getByTestId('bell')).toBeTruthy();
|
|
73
|
-
});
|
|
74
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import '@testing-library/jest-dom';
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
|
-
import { render, screen } from '@testing-library/react';
|
|
12
|
-
import '@testing-library/jest-dom';
|
|
13
|
-
import FileDropZone from './FileDropZone';
|
|
14
|
-
import userEvent from '@testing-library/user-event';
|
|
15
|
-
describe('FileDropZone', () => {
|
|
16
|
-
it('should render file drop zone', () => {
|
|
17
|
-
const { container } = render(_jsx(FileDropZone, { onFileDrop: jest.fn() }));
|
|
18
|
-
expect(container).toMatchSnapshot();
|
|
19
|
-
});
|
|
20
|
-
it('should render children', () => {
|
|
21
|
-
render(_jsx(FileDropZone, { onFileDrop: jest.fn(), children: "Hi" }));
|
|
22
|
-
expect(screen.getByText('Hi')).toBeTruthy();
|
|
23
|
-
});
|
|
24
|
-
it('should call onFileDrop when file type is accepted', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
25
|
-
const onFileDrop = jest.fn();
|
|
26
|
-
const { container } = render(_jsx(FileDropZone, { "data-testid": "input", allowedFileTypes: { 'text/plain': ['.txt'] }, onFileDrop: onFileDrop }));
|
|
27
|
-
const file = new File(['Test'], 'example.text', { type: 'text/plain' });
|
|
28
|
-
const fileInput = container.querySelector('input[type="file"]');
|
|
29
|
-
yield userEvent.upload(fileInput, file);
|
|
30
|
-
expect(onFileDrop).toHaveBeenCalled();
|
|
31
|
-
}));
|
|
32
|
-
it('should not call onFileDrop when file type is not accepted', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
33
|
-
const onFileDrop = jest.fn();
|
|
34
|
-
const { container } = render(_jsx(FileDropZone, { "data-testid": "input", allowedFileTypes: { 'text/plain': ['.txt'] }, onFileDrop: onFileDrop }));
|
|
35
|
-
const file = new File(['[]'], 'example.json', { type: 'application/json' });
|
|
36
|
-
const fileInput = container.querySelector('input[type="file"]');
|
|
37
|
-
yield userEvent.upload(fileInput, file);
|
|
38
|
-
expect(onFileDrop).not.toHaveBeenCalled();
|
|
39
|
-
}));
|
|
40
|
-
it('should respect minSize restriction', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
41
|
-
const onAttachRejected = jest.fn();
|
|
42
|
-
const { container } = render(_jsx(FileDropZone, { onFileDrop: jest.fn(), minSize: 1000, onAttachRejected: onAttachRejected }));
|
|
43
|
-
const file = new File(['Test'], 'example.txt', { type: 'text/plain' });
|
|
44
|
-
const fileInput = container.querySelector('input[type="file"]');
|
|
45
|
-
yield userEvent.upload(fileInput, file);
|
|
46
|
-
expect(onAttachRejected).toHaveBeenCalled();
|
|
47
|
-
}));
|
|
48
|
-
it('should respect maxSize restriction', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
49
|
-
const onAttachRejected = jest.fn();
|
|
50
|
-
const { container } = render(_jsx(FileDropZone, { onFileDrop: jest.fn(), maxSize: 100, onAttachRejected: onAttachRejected }));
|
|
51
|
-
const largeContent = 'x'.repeat(200);
|
|
52
|
-
const file = new File([largeContent], 'example.txt', { type: 'text/plain' });
|
|
53
|
-
const fileInput = container.querySelector('input[type="file"]');
|
|
54
|
-
yield userEvent.upload(fileInput, file);
|
|
55
|
-
expect(onAttachRejected).toHaveBeenCalled();
|
|
56
|
-
}));
|
|
57
|
-
it('should respect maxFiles restriction', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
58
|
-
const onAttachRejected = jest.fn();
|
|
59
|
-
const { container } = render(_jsx(FileDropZone, { onFileDrop: jest.fn(), maxFiles: 1, onAttachRejected: onAttachRejected }));
|
|
60
|
-
const files = [
|
|
61
|
-
new File(['Test1'], 'example1.txt', { type: 'text/plain' }),
|
|
62
|
-
new File(['Test2'], 'example2.txt', { type: 'text/plain' })
|
|
63
|
-
];
|
|
64
|
-
const fileInput = container.querySelector('input[type="file"]');
|
|
65
|
-
yield userEvent.upload(fileInput, files);
|
|
66
|
-
expect(onAttachRejected).toHaveBeenCalled();
|
|
67
|
-
}));
|
|
68
|
-
it('should be disabled when isAttachmentDisabled is true', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
69
|
-
const onFileDrop = jest.fn();
|
|
70
|
-
const { container } = render(_jsx(FileDropZone, { onFileDrop: onFileDrop, isAttachmentDisabled: true }));
|
|
71
|
-
const file = new File(['Test'], 'example.text', { type: 'text/plain' });
|
|
72
|
-
const fileInput = container.querySelector('input[type="file"]');
|
|
73
|
-
yield userEvent.upload(fileInput, file);
|
|
74
|
-
expect(onFileDrop).not.toHaveBeenCalled();
|
|
75
|
-
}));
|
|
76
|
-
it('should call onAttach when files are attached', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
77
|
-
const onAttach = jest.fn();
|
|
78
|
-
const { container } = render(_jsx(FileDropZone, { onFileDrop: jest.fn(), onAttach: onAttach }));
|
|
79
|
-
const file = new File(['Test'], 'example.txt', { type: 'text/plain' });
|
|
80
|
-
const fileInput = container.querySelector('input[type="file"]');
|
|
81
|
-
yield userEvent.upload(fileInput, file);
|
|
82
|
-
expect(onAttach).toHaveBeenCalled();
|
|
83
|
-
}));
|
|
84
|
-
it('should use custom validator when provided', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
85
|
-
const validator = jest.fn().mockReturnValue({ message: 'Custom error' });
|
|
86
|
-
const onAttachRejected = jest.fn();
|
|
87
|
-
const onFileDrop = jest.fn();
|
|
88
|
-
const { container } = render(_jsx(FileDropZone, { onFileDrop: onFileDrop, validator: validator, onAttachRejected: onAttachRejected }));
|
|
89
|
-
const file = new File(['Test'], 'example.txt', { type: 'text/plain' });
|
|
90
|
-
const fileInput = container.querySelector('input[type="file"]');
|
|
91
|
-
yield userEvent.upload(fileInput, file);
|
|
92
|
-
expect(validator).toHaveBeenCalledWith(file);
|
|
93
|
-
expect(onAttachRejected).toHaveBeenCalled();
|
|
94
|
-
}));
|
|
95
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import '@testing-library/jest-dom';
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { render, screen } from '@testing-library/react';
|
|
3
|
-
import '@testing-library/jest-dom';
|
|
4
|
-
import FilePreview from './FilePreview';
|
|
5
|
-
import { ChatbotDisplayMode } from '../Chatbot';
|
|
6
|
-
import { Button } from '@patternfly/react-core';
|
|
7
|
-
describe('FilePreview', () => {
|
|
8
|
-
const defaultProps = {
|
|
9
|
-
isModalOpen: true,
|
|
10
|
-
handleModalToggle: jest.fn(),
|
|
11
|
-
fileName: 'test-file.txt',
|
|
12
|
-
children: 'File content preview'
|
|
13
|
-
};
|
|
14
|
-
beforeEach(() => {
|
|
15
|
-
jest.clearAllMocks();
|
|
16
|
-
});
|
|
17
|
-
it('should render with basic props', () => {
|
|
18
|
-
render(_jsx(FilePreview, Object.assign({}, defaultProps)));
|
|
19
|
-
expect(screen.getByText('File preview')).toBeInTheDocument();
|
|
20
|
-
expect(screen.getByText('test-file.txt')).toBeInTheDocument();
|
|
21
|
-
});
|
|
22
|
-
it('should render with custom title', () => {
|
|
23
|
-
const customTitle = 'Custom file preview title';
|
|
24
|
-
render(_jsx(FilePreview, Object.assign({}, defaultProps, { title: customTitle })));
|
|
25
|
-
expect(screen.getByRole('heading', { name: customTitle })).toBeTruthy();
|
|
26
|
-
});
|
|
27
|
-
it('should handle modal toggle when closed', () => {
|
|
28
|
-
const mockToggle = jest.fn();
|
|
29
|
-
render(_jsx(FilePreview, Object.assign({}, defaultProps, { isModalOpen: false, handleModalToggle: mockToggle })));
|
|
30
|
-
expect(screen.queryByRole('dialog')).not.toBeInTheDocument();
|
|
31
|
-
});
|
|
32
|
-
it('should apply default display mode class', () => {
|
|
33
|
-
render(_jsx(FilePreview, Object.assign({}, defaultProps)));
|
|
34
|
-
const modal = screen.getByRole('dialog');
|
|
35
|
-
expect(modal).toHaveClass('pf-chatbot__file-preview-modal--default');
|
|
36
|
-
});
|
|
37
|
-
it('should apply custom display mode class', () => {
|
|
38
|
-
render(_jsx(FilePreview, Object.assign({}, defaultProps, { displayMode: ChatbotDisplayMode.fullscreen })));
|
|
39
|
-
const modal = screen.getByRole('dialog');
|
|
40
|
-
expect(modal).toHaveClass('pf-chatbot__file-preview-modal--fullscreen');
|
|
41
|
-
});
|
|
42
|
-
it('should apply compact styling when isCompact is true', () => {
|
|
43
|
-
render(_jsx(FilePreview, Object.assign({}, defaultProps, { isCompact: true })));
|
|
44
|
-
const modal = screen.getByRole('dialog');
|
|
45
|
-
expect(modal).toHaveClass('pf-m-compact');
|
|
46
|
-
});
|
|
47
|
-
it('should not apply compact styling when isCompact is false', () => {
|
|
48
|
-
render(_jsx(FilePreview, Object.assign({}, defaultProps, { isCompact: false })));
|
|
49
|
-
const modal = screen.getByRole('dialog');
|
|
50
|
-
expect(modal).not.toHaveClass('pf-m-compact');
|
|
51
|
-
});
|
|
52
|
-
it('should apply custom className', () => {
|
|
53
|
-
const customClass = 'custom-file-preview';
|
|
54
|
-
render(_jsx(FilePreview, Object.assign({}, defaultProps, { className: customClass })));
|
|
55
|
-
const modal = screen.getByRole('dialog');
|
|
56
|
-
expect(modal).toHaveClass(customClass);
|
|
57
|
-
});
|
|
58
|
-
it('should pass through additional props to ChatbotModal', () => {
|
|
59
|
-
render(_jsx(FilePreview, Object.assign({}, defaultProps, { "data-testid": "file-preview-modal" })));
|
|
60
|
-
const modal = screen.getByTestId('file-preview-modal');
|
|
61
|
-
expect(modal).toBeInTheDocument();
|
|
62
|
-
});
|
|
63
|
-
it('should pass modalHeaderProps to ModalHeader', () => {
|
|
64
|
-
const modalHeaderProps = {
|
|
65
|
-
'data-testid': 'custom-header'
|
|
66
|
-
};
|
|
67
|
-
render(_jsx(FilePreview, Object.assign({}, defaultProps, { modalHeaderProps: modalHeaderProps })));
|
|
68
|
-
const header = screen.getByTestId('custom-header');
|
|
69
|
-
expect(header).toBeInTheDocument();
|
|
70
|
-
});
|
|
71
|
-
it('should pass modalBodyProps to ModalBody', () => {
|
|
72
|
-
const modalBodyProps = {
|
|
73
|
-
'data-testid': 'custom-body'
|
|
74
|
-
};
|
|
75
|
-
render(_jsx(FilePreview, Object.assign({}, defaultProps, { modalBodyProps: modalBodyProps })));
|
|
76
|
-
const body = screen.getByTestId('custom-body');
|
|
77
|
-
expect(body).toBeInTheDocument();
|
|
78
|
-
});
|
|
79
|
-
it('should pass ouiaId to ChatbotModal', () => {
|
|
80
|
-
const ouiaId = 'file-preview-ouia-id';
|
|
81
|
-
render(_jsx(FilePreview, Object.assign({}, defaultProps, { ouiaId: ouiaId })));
|
|
82
|
-
const modal = screen.getByRole('dialog');
|
|
83
|
-
expect(modal).toHaveAttribute('data-ouia-component-id', ouiaId);
|
|
84
|
-
});
|
|
85
|
-
it('should handle complex children', () => {
|
|
86
|
-
const complexChildren = (_jsxs("div", { children: [_jsx("h3", { children: "File details" }), _jsx("p", { children: "Size: 1.2 MB" }), _jsx(Button, { children: "Download" })] }));
|
|
87
|
-
render(_jsx(FilePreview, Object.assign({}, defaultProps, { children: complexChildren })));
|
|
88
|
-
expect(screen.getByRole('heading', { name: /File details/i })).toBeTruthy();
|
|
89
|
-
expect(screen.getByText('Size: 1.2 MB')).toBeTruthy();
|
|
90
|
-
expect(screen.getByRole('button', { name: /Download/i })).toBeTruthy();
|
|
91
|
-
});
|
|
92
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import '@testing-library/jest-dom';
|