frontend auto testing rules (#28679)

Co-authored-by: CodingOnStar <hanxujiang@dify.ai>
Co-authored-by: 姜涵煦 <hanxujiang@jianghanxudeMacBook-Pro.local>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
This commit is contained in:
Coding On Star
2025-11-26 15:18:07 +08:00
committed by GitHub
parent 591414307a
commit dbecba710b
16 changed files with 2293 additions and 80 deletions

View File

@@ -2,6 +2,7 @@
* Test suite for app redirection utility functions
* Tests navigation path generation based on user permissions and app modes
*/
import { AppModeEnum } from '@/types/app'
import { getRedirection, getRedirectionPath } from './app-redirection'
describe('app-redirection', () => {
@@ -12,44 +13,44 @@ describe('app-redirection', () => {
*/
describe('getRedirectionPath', () => {
test('returns overview path when user is not editor', () => {
const app = { id: 'app-123', mode: 'chat' as const }
const app = { id: 'app-123', mode: AppModeEnum.CHAT }
const result = getRedirectionPath(false, app)
expect(result).toBe('/app/app-123/overview')
})
test('returns workflow path for workflow mode when user is editor', () => {
const app = { id: 'app-123', mode: 'workflow' as const }
const app = { id: 'app-123', mode: AppModeEnum.WORKFLOW }
const result = getRedirectionPath(true, app)
expect(result).toBe('/app/app-123/workflow')
})
test('returns workflow path for advanced-chat mode when user is editor', () => {
const app = { id: 'app-123', mode: 'advanced-chat' as const }
const app = { id: 'app-123', mode: AppModeEnum.ADVANCED_CHAT }
const result = getRedirectionPath(true, app)
expect(result).toBe('/app/app-123/workflow')
})
test('returns configuration path for chat mode when user is editor', () => {
const app = { id: 'app-123', mode: 'chat' as const }
const app = { id: 'app-123', mode: AppModeEnum.CHAT }
const result = getRedirectionPath(true, app)
expect(result).toBe('/app/app-123/configuration')
})
test('returns configuration path for completion mode when user is editor', () => {
const app = { id: 'app-123', mode: 'completion' as const }
const app = { id: 'app-123', mode: AppModeEnum.COMPLETION }
const result = getRedirectionPath(true, app)
expect(result).toBe('/app/app-123/configuration')
})
test('returns configuration path for agent-chat mode when user is editor', () => {
const app = { id: 'app-456', mode: 'agent-chat' as const }
const app = { id: 'app-456', mode: AppModeEnum.AGENT_CHAT }
const result = getRedirectionPath(true, app)
expect(result).toBe('/app/app-456/configuration')
})
test('handles different app IDs', () => {
const app1 = { id: 'abc-123', mode: 'chat' as const }
const app2 = { id: 'xyz-789', mode: 'workflow' as const }
const app1 = { id: 'abc-123', mode: AppModeEnum.CHAT }
const app2 = { id: 'xyz-789', mode: AppModeEnum.WORKFLOW }
expect(getRedirectionPath(false, app1)).toBe('/app/abc-123/overview')
expect(getRedirectionPath(true, app2)).toBe('/app/xyz-789/workflow')
@@ -64,7 +65,7 @@ describe('app-redirection', () => {
* Tests that the redirection function is called with the correct path
*/
test('calls redirection function with correct path for non-editor', () => {
const app = { id: 'app-123', mode: 'chat' as const }
const app = { id: 'app-123', mode: AppModeEnum.CHAT }
const mockRedirect = jest.fn()
getRedirection(false, app, mockRedirect)
@@ -74,7 +75,7 @@ describe('app-redirection', () => {
})
test('calls redirection function with workflow path for editor', () => {
const app = { id: 'app-123', mode: 'workflow' as const }
const app = { id: 'app-123', mode: AppModeEnum.WORKFLOW }
const mockRedirect = jest.fn()
getRedirection(true, app, mockRedirect)
@@ -84,7 +85,7 @@ describe('app-redirection', () => {
})
test('calls redirection function with configuration path for chat mode editor', () => {
const app = { id: 'app-123', mode: 'chat' as const }
const app = { id: 'app-123', mode: AppModeEnum.CHAT }
const mockRedirect = jest.fn()
getRedirection(true, app, mockRedirect)
@@ -94,7 +95,7 @@ describe('app-redirection', () => {
})
test('works with different redirection functions', () => {
const app = { id: 'app-123', mode: 'workflow' as const }
const app = { id: 'app-123', mode: AppModeEnum.WORKFLOW }
const paths: string[] = []
const customRedirect = (path: string) => paths.push(path)