| | """Tests for feature flags functionality.""" |
| |
|
| | from comfy_api.feature_flags import ( |
| | get_connection_feature, |
| | supports_feature, |
| | get_server_features, |
| | SERVER_FEATURE_FLAGS, |
| | ) |
| |
|
| |
|
| | class TestFeatureFlags: |
| | """Test suite for feature flags functions.""" |
| |
|
| | def test_get_server_features_returns_copy(self): |
| | """Test that get_server_features returns a copy of the server flags.""" |
| | features = get_server_features() |
| | |
| | features["test_flag"] = True |
| | |
| | assert "test_flag" not in SERVER_FEATURE_FLAGS |
| |
|
| | def test_get_server_features_contains_expected_flags(self): |
| | """Test that server features contain expected flags.""" |
| | features = get_server_features() |
| | assert "supports_preview_metadata" in features |
| | assert features["supports_preview_metadata"] is True |
| | assert "max_upload_size" in features |
| | assert isinstance(features["max_upload_size"], (int, float)) |
| |
|
| | def test_get_connection_feature_with_missing_sid(self): |
| | """Test getting feature for non-existent session ID.""" |
| | sockets_metadata = {} |
| | result = get_connection_feature(sockets_metadata, "missing_sid", "some_feature") |
| | assert result is False |
| |
|
| | def test_get_connection_feature_with_custom_default(self): |
| | """Test getting feature with custom default value.""" |
| | sockets_metadata = {} |
| | result = get_connection_feature( |
| | sockets_metadata, "missing_sid", "some_feature", default="custom_default" |
| | ) |
| | assert result == "custom_default" |
| |
|
| | def test_get_connection_feature_with_feature_flags(self): |
| | """Test getting feature from connection with feature flags.""" |
| | sockets_metadata = { |
| | "sid1": { |
| | "feature_flags": { |
| | "supports_preview_metadata": True, |
| | "custom_feature": "value", |
| | }, |
| | } |
| | } |
| | result = get_connection_feature(sockets_metadata, "sid1", "supports_preview_metadata") |
| | assert result is True |
| |
|
| | result = get_connection_feature(sockets_metadata, "sid1", "custom_feature") |
| | assert result == "value" |
| |
|
| | def test_get_connection_feature_missing_feature(self): |
| | """Test getting non-existent feature from connection.""" |
| | sockets_metadata = { |
| | "sid1": {"feature_flags": {"existing_feature": True}} |
| | } |
| | result = get_connection_feature(sockets_metadata, "sid1", "missing_feature") |
| | assert result is False |
| |
|
| | def test_supports_feature_returns_boolean(self): |
| | """Test that supports_feature always returns boolean.""" |
| | sockets_metadata = { |
| | "sid1": { |
| | "feature_flags": { |
| | "bool_feature": True, |
| | "string_feature": "value", |
| | "none_feature": None, |
| | }, |
| | } |
| | } |
| |
|
| | |
| | assert supports_feature(sockets_metadata, "sid1", "bool_feature") is True |
| |
|
| | |
| | assert supports_feature(sockets_metadata, "sid1", "string_feature") is False |
| | assert supports_feature(sockets_metadata, "sid1", "none_feature") is False |
| | assert supports_feature(sockets_metadata, "sid1", "missing_feature") is False |
| |
|
| | def test_supports_feature_with_missing_connection(self): |
| | """Test supports_feature with missing connection.""" |
| | sockets_metadata = {} |
| | assert supports_feature(sockets_metadata, "missing_sid", "any_feature") is False |
| |
|
| | def test_empty_feature_flags_dict(self): |
| | """Test connection with empty feature flags dictionary.""" |
| | sockets_metadata = {"sid1": {"feature_flags": {}}} |
| | result = get_connection_feature(sockets_metadata, "sid1", "any_feature") |
| | assert result is False |
| | assert supports_feature(sockets_metadata, "sid1", "any_feature") is False |
| |
|