mirror of
https://github.com/apache/superset.git
synced 2026-05-12 19:35:17 +00:00
Fix rebase
This commit is contained in:
@@ -221,116 +221,6 @@ def test_update_semantic_layer_copies_data(mocker: MockerFixture) -> None:
|
|||||||
assert original_data == {"description": "Original"}
|
assert original_data == {"description": "Original"}
|
||||||
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
# UpdateSemanticLayerCommand tests
|
|
||||||
# =============================================================================
|
|
||||||
|
|
||||||
|
|
||||||
def test_update_semantic_layer_success(mocker: MockerFixture) -> None:
|
|
||||||
"""Test successful update of a semantic layer."""
|
|
||||||
mock_model = MagicMock()
|
|
||||||
mock_model.type = "snowflake"
|
|
||||||
|
|
||||||
dao = mocker.patch(
|
|
||||||
"superset.commands.semantic_layer.update.SemanticLayerDAO",
|
|
||||||
)
|
|
||||||
dao.find_by_uuid.return_value = mock_model
|
|
||||||
dao.update.return_value = mock_model
|
|
||||||
|
|
||||||
data = {"name": "Updated", "description": "New desc"}
|
|
||||||
result = UpdateSemanticLayerCommand("some-uuid", data).run()
|
|
||||||
|
|
||||||
assert result == mock_model
|
|
||||||
dao.find_by_uuid.assert_called_once_with("some-uuid")
|
|
||||||
dao.update.assert_called_once_with(mock_model, attributes=data)
|
|
||||||
|
|
||||||
|
|
||||||
def test_update_semantic_layer_not_found(mocker: MockerFixture) -> None:
|
|
||||||
"""Test that SemanticLayerNotFoundError is raised when model is missing."""
|
|
||||||
dao = mocker.patch(
|
|
||||||
"superset.commands.semantic_layer.update.SemanticLayerDAO",
|
|
||||||
)
|
|
||||||
dao.find_by_uuid.return_value = None
|
|
||||||
|
|
||||||
with pytest.raises(SemanticLayerNotFoundError):
|
|
||||||
UpdateSemanticLayerCommand("missing-uuid", {"name": "test"}).run()
|
|
||||||
|
|
||||||
|
|
||||||
def test_update_semantic_layer_duplicate_name(mocker: MockerFixture) -> None:
|
|
||||||
"""Test that SemanticLayerInvalidError is raised for duplicate names."""
|
|
||||||
mock_model = MagicMock()
|
|
||||||
mock_model.type = "snowflake"
|
|
||||||
|
|
||||||
dao = mocker.patch(
|
|
||||||
"superset.commands.semantic_layer.update.SemanticLayerDAO",
|
|
||||||
)
|
|
||||||
dao.find_by_uuid.return_value = mock_model
|
|
||||||
dao.validate_update_uniqueness.return_value = False
|
|
||||||
|
|
||||||
with pytest.raises(SemanticLayerInvalidError):
|
|
||||||
UpdateSemanticLayerCommand("some-uuid", {"name": "Duplicate"}).run()
|
|
||||||
|
|
||||||
|
|
||||||
def test_update_semantic_layer_validates_configuration(
|
|
||||||
mocker: MockerFixture,
|
|
||||||
) -> None:
|
|
||||||
"""Test that configuration is validated against the plugin."""
|
|
||||||
mock_model = MagicMock()
|
|
||||||
mock_model.type = "snowflake"
|
|
||||||
|
|
||||||
dao = mocker.patch(
|
|
||||||
"superset.commands.semantic_layer.update.SemanticLayerDAO",
|
|
||||||
)
|
|
||||||
dao.find_by_uuid.return_value = mock_model
|
|
||||||
dao.update.return_value = mock_model
|
|
||||||
|
|
||||||
mock_cls = MagicMock()
|
|
||||||
mocker.patch.dict(
|
|
||||||
"superset.commands.semantic_layer.update.registry",
|
|
||||||
{"snowflake": mock_cls},
|
|
||||||
)
|
|
||||||
|
|
||||||
config = {"account": "test"}
|
|
||||||
UpdateSemanticLayerCommand("some-uuid", {"configuration": config}).run()
|
|
||||||
|
|
||||||
mock_cls.from_configuration.assert_called_once_with(config)
|
|
||||||
|
|
||||||
|
|
||||||
def test_update_semantic_layer_skips_name_check_when_no_name(
|
|
||||||
mocker: MockerFixture,
|
|
||||||
) -> None:
|
|
||||||
"""Test that name uniqueness is not checked when name is not provided."""
|
|
||||||
mock_model = MagicMock()
|
|
||||||
mock_model.type = "snowflake"
|
|
||||||
|
|
||||||
dao = mocker.patch(
|
|
||||||
"superset.commands.semantic_layer.update.SemanticLayerDAO",
|
|
||||||
)
|
|
||||||
dao.find_by_uuid.return_value = mock_model
|
|
||||||
dao.update.return_value = mock_model
|
|
||||||
|
|
||||||
UpdateSemanticLayerCommand("some-uuid", {"description": "Updated"}).run()
|
|
||||||
|
|
||||||
dao.validate_update_uniqueness.assert_not_called()
|
|
||||||
|
|
||||||
|
|
||||||
def test_update_semantic_layer_copies_data(mocker: MockerFixture) -> None:
|
|
||||||
"""Test that the command copies input data and does not mutate it."""
|
|
||||||
mock_model = MagicMock()
|
|
||||||
mock_model.type = "snowflake"
|
|
||||||
|
|
||||||
dao = mocker.patch(
|
|
||||||
"superset.commands.semantic_layer.update.SemanticLayerDAO",
|
|
||||||
)
|
|
||||||
dao.find_by_uuid.return_value = mock_model
|
|
||||||
dao.update.return_value = mock_model
|
|
||||||
|
|
||||||
original_data = {"description": "Original"}
|
|
||||||
UpdateSemanticLayerCommand("some-uuid", original_data).run()
|
|
||||||
|
|
||||||
assert original_data == {"description": "Original"}
|
|
||||||
|
|
||||||
|
|
||||||
def _make_view_model(
|
def _make_view_model(
|
||||||
uuid: str = "view-uuid-1",
|
uuid: str = "view-uuid-1",
|
||||||
name: str = "my_view",
|
name: str = "my_view",
|
||||||
|
|||||||
Reference in New Issue
Block a user