mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2026-02-06 19:42:34 +08:00
Split the ~1000 line app/assets/database/queries.py into focused modules: - queries/asset.py - Asset entity queries (asset_exists_by_hash, get_asset_by_hash) - queries/asset_info.py - AssetInfo queries (~15 functions) - queries/cache_state.py - AssetCacheState queries (list_cache_states_by_asset_id, pick_best_live_path, prune_orphaned_assets, fast_db_consistency_pass) - queries/tags.py - Tag queries (8 functions including ensure_tags_exist, add/remove tag functions, list_tags_with_usage) - queries/__init__.py - Re-exports all public functions for backward compatibility Also adds comprehensive unit tests using in-memory SQLite: - tests-unit/assets_test/queries/conftest.py - Session fixture - tests-unit/assets_test/queries/test_asset.py - 5 tests - tests-unit/assets_test/queries/test_asset_info.py - 23 tests - tests-unit/assets_test/queries/test_cache_state.py - 8 tests - tests-unit/assets_test/queries/test_metadata.py - 12 tests for _apply_metadata_filter - tests-unit/assets_test/queries/test_tags.py - 23 tests All 71 unit tests pass. Existing integration tests unaffected. Amp-Thread-ID: https://ampcode.com/threads/T-019c24bb-475b-7442-9ff9-8288edea3345 Co-authored-by: Amp <amp@ampcode.com>
40 lines
1.4 KiB
Python
40 lines
1.4 KiB
Python
from sqlalchemy.orm import Session
|
|
|
|
from app.assets.database.models import Asset
|
|
from app.assets.database.queries import asset_exists_by_hash, get_asset_by_hash
|
|
|
|
|
|
class TestAssetExistsByHash:
|
|
def test_returns_false_for_nonexistent(self, session: Session):
|
|
assert asset_exists_by_hash(session, asset_hash="nonexistent") is False
|
|
|
|
def test_returns_true_for_existing(self, session: Session):
|
|
asset = Asset(hash="blake3:abc123", size_bytes=100)
|
|
session.add(asset)
|
|
session.commit()
|
|
|
|
assert asset_exists_by_hash(session, asset_hash="blake3:abc123") is True
|
|
|
|
def test_does_not_match_null_hash(self, session: Session):
|
|
asset = Asset(hash=None, size_bytes=100)
|
|
session.add(asset)
|
|
session.commit()
|
|
|
|
assert asset_exists_by_hash(session, asset_hash="") is False
|
|
|
|
|
|
class TestGetAssetByHash:
|
|
def test_returns_none_for_nonexistent(self, session: Session):
|
|
assert get_asset_by_hash(session, asset_hash="nonexistent") is None
|
|
|
|
def test_returns_asset_for_existing(self, session: Session):
|
|
asset = Asset(hash="blake3:def456", size_bytes=200, mime_type="image/png")
|
|
session.add(asset)
|
|
session.commit()
|
|
|
|
result = get_asset_by_hash(session, asset_hash="blake3:def456")
|
|
assert result is not None
|
|
assert result.id == asset.id
|
|
assert result.size_bytes == 200
|
|
assert result.mime_type == "image/png"
|