[PR #28907] feat: add comprehensive unit tests for AppGenerateService #32229

Closed
opened 2026-02-21 20:51:00 -05:00 by yindo · 0 comments
Owner

Original Pull Request: https://github.com/langgenius/dify/pull/28907

State: closed
Merged: No


Add 25 test methods covering:

Chat Mode Tests (3 tests):

  • Streaming and blocking response generation
  • End user vs account user handling
  • Conversation context management

Completion Mode Tests (2 tests):

  • Streaming text generation
  • Blocking completion with usage stats

Agent Mode Tests (1 test):

  • Agent chat with tool usage flow
  • Tool calls and responses

Workflow Mode Tests (3 tests):

  • Successful workflow execution
  • Root node execution
  • Workflow not found error handling

Rate Limiting Tests (3 tests):

  • Rate limit enforcement
  • Rate limit release after completion
  • Concurrent requests within limit

Quota Management Tests (3 tests):

  • Quota consumption when billing enabled
  • Quota exceeded error handling
  • No quota check when billing disabled

Invoke Sources Tests (3 tests):

  • Web app invocation
  • Service API invocation
  • Explore page invocation

Advanced Chat Tests (1 test):

  • Context-aware conversation handling

Edge Cases Tests (6 tests):

  • Empty arguments handling
  • Very long input (10k+ characters)
  • Special characters and emojis
  • Generator exception handling
  • None conversation_id (new conversation)
  • Max active requests configuration

Test Classes:

  • TestAppGenerateServiceChatMode (3 tests)
  • TestAppGenerateServiceCompletionMode (2 tests)
  • TestAppGenerateServiceAgentMode (1 test)
  • TestAppGenerateServiceWorkflowMode (3 tests)
  • TestAppGenerateServiceRateLimiting (3 tests)
  • TestAppGenerateServiceQuotaManagement (3 tests)
  • TestAppGenerateServiceInvokeSources (3 tests)
  • TestAppGenerateServiceAdvancedChat (1 test)
  • TestAppGenerateServiceEdgeCases (6 tests)

Coverage includes all app modes, rate limiting, quota management, streaming vs blocking, error handling, and edge cases.

Fix #28906

Important

  1. Make sure you have read our contribution guidelines
  2. Ensure there is an associated issue and you have been assigned to it
  3. Use the correct syntax to link this PR: Fixes #<issue number>.

Summary

Screenshots

Before After
... ...
diffy_unit_test

Checklist

  • This change requires a documentation update, included: Dify Document
  • I understand that this PR may be closed in case there was no previous discussion or issues. (This doesn't apply to typos!)
  • I've added a test for each change that was introduced, and I tried as much as possible to make a single atomic change.
  • I've updated the documentation accordingly.
  • I ran dev/reformat(backend) and cd web && npx lint-staged(frontend) to appease the lint gods
**Original Pull Request:** https://github.com/langgenius/dify/pull/28907 **State:** closed **Merged:** No --- Add 25 test methods covering: Chat Mode Tests (3 tests): - Streaming and blocking response generation - End user vs account user handling - Conversation context management Completion Mode Tests (2 tests): - Streaming text generation - Blocking completion with usage stats Agent Mode Tests (1 test): - Agent chat with tool usage flow - Tool calls and responses Workflow Mode Tests (3 tests): - Successful workflow execution - Root node execution - Workflow not found error handling Rate Limiting Tests (3 tests): - Rate limit enforcement - Rate limit release after completion - Concurrent requests within limit Quota Management Tests (3 tests): - Quota consumption when billing enabled - Quota exceeded error handling - No quota check when billing disabled Invoke Sources Tests (3 tests): - Web app invocation - Service API invocation - Explore page invocation Advanced Chat Tests (1 test): - Context-aware conversation handling Edge Cases Tests (6 tests): - Empty arguments handling - Very long input (10k+ characters) - Special characters and emojis - Generator exception handling - None conversation_id (new conversation) - Max active requests configuration Test Classes: - TestAppGenerateServiceChatMode (3 tests) - TestAppGenerateServiceCompletionMode (2 tests) - TestAppGenerateServiceAgentMode (1 test) - TestAppGenerateServiceWorkflowMode (3 tests) - TestAppGenerateServiceRateLimiting (3 tests) - TestAppGenerateServiceQuotaManagement (3 tests) - TestAppGenerateServiceInvokeSources (3 tests) - TestAppGenerateServiceAdvancedChat (1 test) - TestAppGenerateServiceEdgeCases (6 tests) Coverage includes all app modes, rate limiting, quota management, streaming vs blocking, error handling, and edge cases. Fix #28906 > [!IMPORTANT] > > 1. Make sure you have read our [contribution guidelines](https://github.com/langgenius/dify/blob/main/CONTRIBUTING.md) > 1. Ensure there is an associated issue and you have been assigned to it > 1. Use the correct syntax to link this PR: `Fixes #<issue number>`. ## Summary <!-- Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change. --> ## Screenshots | Before | After | |--------|-------| | ... | ... | <img width="827" height="385" alt="diffy_unit_test" src="https://github.com/user-attachments/assets/be3e9dae-c0f8-4f0e-8407-f467235b7c0b" /> ## Checklist - [ ] This change requires a documentation update, included: [Dify Document](https://github.com/langgenius/dify-docs) - [x] I understand that this PR may be closed in case there was no previous discussion or issues. (This doesn't apply to typos!) - [x] I've added a test for each change that was introduced, and I tried as much as possible to make a single atomic change. - [x] I've updated the documentation accordingly. - [x] I ran `dev/reformat`(backend) and `cd web && npx lint-staged`(frontend) to appease the lint gods
yindo added the pull-request label 2026-02-21 20:51:00 -05:00
yindo closed this issue 2026-02-21 20:51:00 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: langgenius/dify#32229