mirror of
https://github.com/langgenius/dify.git
synced 2025-12-19 17:27:16 -05:00
73 lines
2.1 KiB
TypeScript
73 lines
2.1 KiB
TypeScript
import { render, screen } from '@testing-library/react'
|
|
import ChatVariableTrigger from './chat-variable-trigger'
|
|
|
|
const mockUseNodesReadOnly = jest.fn()
|
|
const mockUseIsChatMode = jest.fn()
|
|
|
|
jest.mock('@/app/components/workflow/hooks', () => ({
|
|
__esModule: true,
|
|
useNodesReadOnly: () => mockUseNodesReadOnly(),
|
|
}))
|
|
|
|
jest.mock('../../hooks', () => ({
|
|
__esModule: true,
|
|
useIsChatMode: () => mockUseIsChatMode(),
|
|
}))
|
|
|
|
jest.mock('@/app/components/workflow/header/chat-variable-button', () => ({
|
|
__esModule: true,
|
|
default: ({ disabled }: { disabled: boolean }) => (
|
|
<button data-testid='chat-variable-button' type='button' disabled={disabled}>
|
|
ChatVariableButton
|
|
</button>
|
|
),
|
|
}))
|
|
|
|
describe('ChatVariableTrigger', () => {
|
|
beforeEach(() => {
|
|
jest.clearAllMocks()
|
|
})
|
|
|
|
// Verifies conditional rendering when chat mode is off.
|
|
describe('Rendering', () => {
|
|
it('should not render when not in chat mode', () => {
|
|
// Arrange
|
|
mockUseIsChatMode.mockReturnValue(false)
|
|
mockUseNodesReadOnly.mockReturnValue({ nodesReadOnly: false })
|
|
|
|
// Act
|
|
render(<ChatVariableTrigger />)
|
|
|
|
// Assert
|
|
expect(screen.queryByRole('button', { name: 'ChatVariableButton' })).not.toBeInTheDocument()
|
|
})
|
|
})
|
|
|
|
// Verifies the disabled state reflects read-only nodes.
|
|
describe('Props', () => {
|
|
it('should render enabled ChatVariableButton when nodes are editable', () => {
|
|
// Arrange
|
|
mockUseIsChatMode.mockReturnValue(true)
|
|
mockUseNodesReadOnly.mockReturnValue({ nodesReadOnly: false })
|
|
|
|
// Act
|
|
render(<ChatVariableTrigger />)
|
|
|
|
// Assert
|
|
expect(screen.getByRole('button', { name: 'ChatVariableButton' })).toBeEnabled()
|
|
})
|
|
|
|
it('should render disabled ChatVariableButton when nodes are read-only', () => {
|
|
// Arrange
|
|
mockUseIsChatMode.mockReturnValue(true)
|
|
mockUseNodesReadOnly.mockReturnValue({ nodesReadOnly: true })
|
|
|
|
// Act
|
|
render(<ChatVariableTrigger />)
|
|
|
|
// Assert
|
|
expect(screen.getByRole('button', { name: 'ChatVariableButton' })).toBeDisabled()
|
|
})
|
|
})
|
|
})
|