[PR #28810] test: add unit tests for document service validation and configuration #32189

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

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

State: closed
Merged: Yes


Summary

This PR adds comprehensive unit tests for DocumentService and DatasetService validation and configuration methods, covering critical validation logic for document creation, model configuration, and data source processing.

Fix: #28801

Test Coverage

1. Dataset Service — Document Form Validation (check_doc_form)

  • Matching form types validation (should pass)
  • Mismatched form types error handling
  • Dataset with no form set (allows any form type)
  • Various form type combinations validation

2. Dataset Service — Model Configuration Validation

check_dataset_model_setting

  • Valid high_quality indexing configuration
  • Economy indexing skips model validation
  • LLMBadRequestError handling (model not available)
  • ProviderTokenNotInitError handling (token not initialized)
  • ModelManager integration validation

check_embedding_model_setting

  • Valid embedding model configuration
  • LLMBadRequestError handling
  • ProviderTokenNotInitError handling
  • ModelManager integration with TEXT_EMBEDDING model type

check_reranking_model_setting

  • Valid reranking model configuration
  • LLMBadRequestError handling
  • ProviderTokenNotInitError handling
  • ModelManager integration with RERANK model type

3. Document Service — Document Creation Validation (document_create_args_validate)

  • Valid configuration with data source only
  • Valid configuration with process rule only
  • Valid configuration with both data source and process rule
  • Missing both data source and process rule error handling
  • Delegation to data_source_args_validate and process_rule_args_validate

4. Document Service — Data Source Validation (data_source_args_validate)

  • Valid upload_file configurations
  • Valid notion_import configurations
  • Valid website_crawl configurations
  • Missing data source error handling
  • Invalid data source type error handling
  • Missing info_list error handling
  • Missing file_info_list for upload_file error handling
  • Missing notion_info_list for notion_import error handling
  • Missing website_info_list for website_crawl error handling
  • Data source type validation against Document.DATA_SOURCES

5. Document Service — Process Rule Validation (process_rule_args_validate)

  • Automatic mode validation (rules set to None)
  • Custom mode validation with complete rules
  • Hierarchical mode validation with parent_mode
  • Missing process rule error handling
  • Missing mode error handling
  • Invalid mode error handling (not in MODES)
  • Missing rules for non-automatic mode error handling
  • Missing pre_processing_rules error handling
  • Missing pre_processing_rule id error handling
  • Invalid pre_processing_rule enabled type error handling
  • Missing segmentation error handling
  • Missing segmentation separator error handling
  • Invalid segmentation separator type error handling
  • Missing max_tokens error handling
  • Invalid max_tokens type error handling
  • Hierarchical full-doc mode skips max_tokens validation
  • Pre-processing rule deduplication logic

Validation Logic Coverage

The test suite comprehensively covers:

  • Form Type Validation: Ensures document forms match dataset configuration
  • Model Configuration: Validates embedding and reranking model availability
  • Data Source Validation: Validates all three data source types (upload_file, notion_import, website_crawl)
  • Process Rule Validation: Validates all three process rule modes (automatic, custom, hierarchical)
  • Error Handling: Comprehensive error message validation and error type checking

Test Structure

  • Test Data Factory: Centralized mock object creation for consistency
  • Comprehensive Documentation: Extensive comments explaining test scenarios, architecture, and validation logic
  • Error Path Coverage: All error conditions and edge cases are tested
  • Mock Strategy: Proper isolation using unittest.mock for dependencies (ModelManager, Document constants)
  • Validation Testing: Ensures all validation rules are correctly enforced

Files Changed

  • api/tests/unit_tests/services/document_service_validation.py (1,716 lines)

Testing Approach

  • Follows existing test patterns from other service test files
  • Uses Arrange-Act-Assert structure
  • Comprehensive mocking of dependencies (ModelManager, Document.DATA_SOURCES, DatasetProcessRule.MODES)
  • Tests both success and error paths
  • Validates error messages and error types
  • Ensures proper delegation between validation methods

Integration Points

These tests ensure proper integration with:

  • ModelManager: Model availability and configuration validation
  • Document Constants: DATA_SOURCES validation
  • DatasetProcessRule Constants: MODES validation
  • Error Handling: LLMBadRequestError and ProviderTokenNotInitError conversion

Related Issues

This test suite addresses the need for comprehensive coverage of document validation and configuration functionality, ensuring safe refactoring and preventing regressions in critical validation logic that protects data integrity and prevents invalid configurations.

Contribution by Gittensor, learn more at https://gittensor.io/

**Original Pull Request:** https://github.com/langgenius/dify/pull/28810 **State:** closed **Merged:** Yes --- ## Summary This PR adds comprehensive unit tests for DocumentService and DatasetService validation and configuration methods, covering critical validation logic for document creation, model configuration, and data source processing. Fix: #28801 ## Test Coverage ### 1. Dataset Service — Document Form Validation (`check_doc_form`) - ✅ Matching form types validation (should pass) - ✅ Mismatched form types error handling - ✅ Dataset with no form set (allows any form type) - ✅ Various form type combinations validation ### 2. Dataset Service — Model Configuration Validation #### `check_dataset_model_setting` - ✅ Valid high_quality indexing configuration - ✅ Economy indexing skips model validation - ✅ LLMBadRequestError handling (model not available) - ✅ ProviderTokenNotInitError handling (token not initialized) - ✅ ModelManager integration validation #### `check_embedding_model_setting` - ✅ Valid embedding model configuration - ✅ LLMBadRequestError handling - ✅ ProviderTokenNotInitError handling - ✅ ModelManager integration with TEXT_EMBEDDING model type #### `check_reranking_model_setting` - ✅ Valid reranking model configuration - ✅ LLMBadRequestError handling - ✅ ProviderTokenNotInitError handling - ✅ ModelManager integration with RERANK model type ### 3. Document Service — Document Creation Validation (`document_create_args_validate`) - ✅ Valid configuration with data source only - ✅ Valid configuration with process rule only - ✅ Valid configuration with both data source and process rule - ✅ Missing both data source and process rule error handling - ✅ Delegation to data_source_args_validate and process_rule_args_validate ### 4. Document Service — Data Source Validation (`data_source_args_validate`) - ✅ Valid upload_file configurations - ✅ Valid notion_import configurations - ✅ Valid website_crawl configurations - ✅ Missing data source error handling - ✅ Invalid data source type error handling - ✅ Missing info_list error handling - ✅ Missing file_info_list for upload_file error handling - ✅ Missing notion_info_list for notion_import error handling - ✅ Missing website_info_list for website_crawl error handling - ✅ Data source type validation against Document.DATA_SOURCES ### 5. Document Service — Process Rule Validation (`process_rule_args_validate`) - ✅ Automatic mode validation (rules set to None) - ✅ Custom mode validation with complete rules - ✅ Hierarchical mode validation with parent_mode - ✅ Missing process rule error handling - ✅ Missing mode error handling - ✅ Invalid mode error handling (not in MODES) - ✅ Missing rules for non-automatic mode error handling - ✅ Missing pre_processing_rules error handling - ✅ Missing pre_processing_rule id error handling - ✅ Invalid pre_processing_rule enabled type error handling - ✅ Missing segmentation error handling - ✅ Missing segmentation separator error handling - ✅ Invalid segmentation separator type error handling - ✅ Missing max_tokens error handling - ✅ Invalid max_tokens type error handling - ✅ Hierarchical full-doc mode skips max_tokens validation - ✅ Pre-processing rule deduplication logic ## Validation Logic Coverage The test suite comprehensively covers: - **Form Type Validation**: Ensures document forms match dataset configuration - **Model Configuration**: Validates embedding and reranking model availability - **Data Source Validation**: Validates all three data source types (upload_file, notion_import, website_crawl) - **Process Rule Validation**: Validates all three process rule modes (automatic, custom, hierarchical) - **Error Handling**: Comprehensive error message validation and error type checking ## Test Structure - **Test Data Factory**: Centralized mock object creation for consistency - **Comprehensive Documentation**: Extensive comments explaining test scenarios, architecture, and validation logic - **Error Path Coverage**: All error conditions and edge cases are tested - **Mock Strategy**: Proper isolation using `unittest.mock` for dependencies (ModelManager, Document constants) - **Validation Testing**: Ensures all validation rules are correctly enforced ## Files Changed - `api/tests/unit_tests/services/document_service_validation.py` (1,716 lines) ## Testing Approach - Follows existing test patterns from other service test files - Uses Arrange-Act-Assert structure - Comprehensive mocking of dependencies (ModelManager, Document.DATA_SOURCES, DatasetProcessRule.MODES) - Tests both success and error paths - Validates error messages and error types - Ensures proper delegation between validation methods ## Integration Points These tests ensure proper integration with: - **ModelManager**: Model availability and configuration validation - **Document Constants**: DATA_SOURCES validation - **DatasetProcessRule Constants**: MODES validation - **Error Handling**: LLMBadRequestError and ProviderTokenNotInitError conversion ## Related Issues This test suite addresses the need for comprehensive coverage of document validation and configuration functionality, ensuring safe refactoring and preventing regressions in critical validation logic that protects data integrity and prevents invalid configurations. Contribution by Gittensor, learn more at https://gittensor.io/
yindo added the pull-request label 2026-02-21 20:50:55 -05:00
yindo closed this issue 2026-02-21 20:50:55 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: langgenius/dify#32189