style: normalize python formatting gates
This commit is contained in:
@@ -1,36 +1,39 @@
|
||||
"""
|
||||
创建 Workspace Use Case 测试
|
||||
"""
|
||||
import pytest
|
||||
|
||||
from unittest.mock import Mock
|
||||
|
||||
import pytest
|
||||
|
||||
from packages.application.workspace import (
|
||||
CreateWorkspaceUseCase,
|
||||
CreateWorkspaceRequest,
|
||||
CreateWorkspaceUseCase,
|
||||
)
|
||||
from packages.domain.entities import User
|
||||
|
||||
|
||||
class TestCreateWorkspaceUseCase:
|
||||
"""创建工作空间测试"""
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mock_workspace_repo(self):
|
||||
repo = Mock()
|
||||
repo.save = Mock()
|
||||
return repo
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mock_member_repo(self):
|
||||
repo = Mock()
|
||||
repo.save = Mock()
|
||||
return repo
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mock_user_repo(self):
|
||||
repo = Mock()
|
||||
repo.find_by_id = Mock(return_value=None)
|
||||
return repo
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def use_case(self, mock_workspace_repo, mock_member_repo, mock_user_repo):
|
||||
return CreateWorkspaceUseCase(
|
||||
@@ -38,7 +41,7 @@ class TestCreateWorkspaceUseCase:
|
||||
workspace_member_repository=mock_member_repo,
|
||||
user_repository=mock_user_repo,
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def test_user(self):
|
||||
return User(
|
||||
@@ -47,123 +50,129 @@ class TestCreateWorkspaceUseCase:
|
||||
username="testuser",
|
||||
display_name="Test User",
|
||||
)
|
||||
|
||||
def test_create_workspace_success_free_plan(self, use_case, mock_workspace_repo, mock_member_repo, mock_user_repo, test_user):
|
||||
|
||||
def test_create_workspace_success_free_plan(
|
||||
self, use_case, mock_workspace_repo, mock_member_repo, mock_user_repo, test_user
|
||||
):
|
||||
"""测试创建免费工作空间"""
|
||||
mock_user_repo.find_by_id.return_value = test_user
|
||||
|
||||
|
||||
request = CreateWorkspaceRequest(
|
||||
name="My Workspace",
|
||||
owner_user_id="user-123",
|
||||
subscription_plan="free",
|
||||
)
|
||||
|
||||
|
||||
response, error = use_case.execute(request)
|
||||
|
||||
|
||||
assert error is None
|
||||
assert response is not None
|
||||
assert response.name == "My Workspace"
|
||||
assert response.subscription_plan == "free"
|
||||
assert response.max_projects == 3
|
||||
assert response.max_storage_gb == 10
|
||||
|
||||
|
||||
# 验证保存了 workspace
|
||||
mock_workspace_repo.save.assert_called_once()
|
||||
workspace = mock_workspace_repo.save.call_args[0][0]
|
||||
assert workspace.name == "My Workspace"
|
||||
assert workspace.owner_user_id == "user-123"
|
||||
|
||||
|
||||
# 验证创建了 owner 成员
|
||||
mock_member_repo.save.assert_called_once()
|
||||
member = mock_member_repo.save.call_args[0][0]
|
||||
assert member.user_id == "user-123"
|
||||
assert member.role == "owner"
|
||||
|
||||
def test_create_workspace_pro_plan(self, use_case, mock_workspace_repo, mock_member_repo, mock_user_repo, test_user):
|
||||
|
||||
def test_create_workspace_pro_plan(
|
||||
self, use_case, mock_workspace_repo, mock_member_repo, mock_user_repo, test_user
|
||||
):
|
||||
"""测试创建 Pro 工作空间"""
|
||||
mock_user_repo.find_by_id.return_value = test_user
|
||||
|
||||
|
||||
request = CreateWorkspaceRequest(
|
||||
name="Pro Workspace",
|
||||
owner_user_id="user-123",
|
||||
subscription_plan="pro",
|
||||
)
|
||||
|
||||
|
||||
response, error = use_case.execute(request)
|
||||
|
||||
|
||||
assert error is None
|
||||
assert response is not None
|
||||
assert response.subscription_plan == "pro"
|
||||
assert response.max_projects == 999999 # unlimited
|
||||
assert response.max_storage_gb == 100
|
||||
|
||||
def test_create_workspace_enterprise_plan(self, use_case, mock_workspace_repo, mock_member_repo, mock_user_repo, test_user):
|
||||
|
||||
def test_create_workspace_enterprise_plan(
|
||||
self, use_case, mock_workspace_repo, mock_member_repo, mock_user_repo, test_user
|
||||
):
|
||||
"""测试创建 Enterprise 工作空间"""
|
||||
mock_user_repo.find_by_id.return_value = test_user
|
||||
|
||||
|
||||
request = CreateWorkspaceRequest(
|
||||
name="Enterprise Workspace",
|
||||
owner_user_id="user-123",
|
||||
subscription_plan="enterprise",
|
||||
)
|
||||
|
||||
|
||||
response, error = use_case.execute(request)
|
||||
|
||||
|
||||
assert error is None
|
||||
assert response is not None
|
||||
assert response.subscription_plan == "enterprise"
|
||||
assert response.max_projects == 999999
|
||||
assert response.max_storage_gb == 1000
|
||||
|
||||
|
||||
def test_create_workspace_missing_name(self, use_case):
|
||||
"""测试缺少名称"""
|
||||
request = CreateWorkspaceRequest(
|
||||
name="",
|
||||
owner_user_id="user-123",
|
||||
)
|
||||
|
||||
|
||||
response, error = use_case.execute(request)
|
||||
|
||||
|
||||
assert response is None
|
||||
assert error == "Workspace name is required"
|
||||
|
||||
|
||||
def test_create_workspace_name_too_long(self, use_case):
|
||||
"""测试名称过长"""
|
||||
request = CreateWorkspaceRequest(
|
||||
name="A" * 101,
|
||||
owner_user_id="user-123",
|
||||
)
|
||||
|
||||
|
||||
response, error = use_case.execute(request)
|
||||
|
||||
|
||||
assert response is None
|
||||
assert error == "Workspace name is too long (max 100 characters)"
|
||||
|
||||
|
||||
def test_create_workspace_user_not_found(self, use_case, mock_user_repo):
|
||||
"""测试用户不存在"""
|
||||
mock_user_repo.find_by_id.return_value = None
|
||||
|
||||
|
||||
request = CreateWorkspaceRequest(
|
||||
name="My Workspace",
|
||||
owner_user_id="nonexistent-user",
|
||||
)
|
||||
|
||||
|
||||
response, error = use_case.execute(request)
|
||||
|
||||
|
||||
assert response is None
|
||||
assert error == "Owner user not found"
|
||||
|
||||
|
||||
def test_create_workspace_invalid_plan(self, use_case, mock_user_repo, test_user):
|
||||
"""测试无效的订阅计划"""
|
||||
mock_user_repo.find_by_id.return_value = test_user
|
||||
|
||||
|
||||
request = CreateWorkspaceRequest(
|
||||
name="My Workspace",
|
||||
owner_user_id="user-123",
|
||||
subscription_plan="invalid_plan",
|
||||
)
|
||||
|
||||
|
||||
response, error = use_case.execute(request)
|
||||
|
||||
|
||||
assert response is None
|
||||
assert "Invalid subscription plan" in error
|
||||
|
||||
Reference in New Issue
Block a user