mirror of https://github.com/langgenius/dify.git
68 lines
2.0 KiB
TypeScript
68 lines
2.0 KiB
TypeScript
import type { SimpleDetail } from '../store'
|
|
import { renderHook } from '@testing-library/react'
|
|
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
|
import { useSubscriptionList } from './use-subscription-list'
|
|
|
|
let mockDetail: SimpleDetail | undefined
|
|
const mockRefetch = vi.fn()
|
|
|
|
const mockTriggerSubscriptions = vi.fn()
|
|
|
|
vi.mock('@/service/use-triggers', () => ({
|
|
useTriggerSubscriptions: (...args: unknown[]) => mockTriggerSubscriptions(...args),
|
|
}))
|
|
|
|
vi.mock('../store', () => ({
|
|
usePluginStore: (selector: (state: { detail: SimpleDetail | undefined }) => SimpleDetail | undefined) =>
|
|
selector({ detail: mockDetail }),
|
|
}))
|
|
|
|
beforeEach(() => {
|
|
vi.clearAllMocks()
|
|
mockDetail = undefined
|
|
mockTriggerSubscriptions.mockReturnValue({
|
|
data: [],
|
|
isLoading: false,
|
|
refetch: mockRefetch,
|
|
})
|
|
})
|
|
|
|
describe('useSubscriptionList', () => {
|
|
it('should request subscriptions with provider from store', () => {
|
|
mockDetail = {
|
|
id: 'detail-1',
|
|
plugin_id: 'plugin-1',
|
|
name: 'Plugin',
|
|
plugin_unique_identifier: 'plugin-uid',
|
|
provider: 'test-provider',
|
|
declaration: {},
|
|
}
|
|
|
|
const { result } = renderHook(() => useSubscriptionList())
|
|
|
|
expect(mockTriggerSubscriptions).toHaveBeenCalledWith('test-provider')
|
|
expect(result.current.detail).toEqual(mockDetail)
|
|
})
|
|
|
|
it('should request subscriptions with empty provider when detail is missing', () => {
|
|
const { result } = renderHook(() => useSubscriptionList())
|
|
|
|
expect(mockTriggerSubscriptions).toHaveBeenCalledWith('')
|
|
expect(result.current.detail).toBeUndefined()
|
|
})
|
|
|
|
it('should return data from trigger subscription hook', () => {
|
|
mockTriggerSubscriptions.mockReturnValue({
|
|
data: [{ id: 'sub-1' }],
|
|
isLoading: true,
|
|
refetch: mockRefetch,
|
|
})
|
|
|
|
const { result } = renderHook(() => useSubscriptionList())
|
|
|
|
expect(result.current.subscriptions).toEqual([{ id: 'sub-1' }])
|
|
expect(result.current.isLoading).toBe(true)
|
|
expect(result.current.refetch).toBe(mockRefetch)
|
|
})
|
|
})
|