diff --git a/src/dashboard/apigateway/apigateway/apis/web/resource_version/views.py b/src/dashboard/apigateway/apigateway/apis/web/resource_version/views.py index f4edc3e8c..c257df52b 100644 --- a/src/dashboard/apigateway/apigateway/apis/web/resource_version/views.py +++ b/src/dashboard/apigateway/apigateway/apis/web/resource_version/views.py @@ -233,9 +233,11 @@ def get(self, request, *args, **kwargs): source_resource_version_id = data.get("source_resource_version_id") target_resource_version_id = data.get("target_resource_version_id") + version = ResourceVersionHandler.get_latest_version_by_gateway(request.gateway.id) + source_resource_data = [] - # 如果 source_resource_version_id 和 target_resource_version_id 都不为空,则 source_resource_data数据不为空 - if source_resource_version_id and target_resource_version_id: + # 如果 source_resource_version_id不为空,并且不是第一次生成版本 + if source_resource_version_id and version != "": source_resource_data = ResourceVersionHandler.get_data_by_id_or_new( request.gateway, source_resource_version_id ) diff --git a/src/dashboard/apigateway/apigateway/tests/apis/web/resource_version/test_views.py b/src/dashboard/apigateway/apigateway/tests/apis/web/resource_version/test_views.py index be821512b..e11aababb 100644 --- a/src/dashboard/apigateway/apigateway/tests/apis/web/resource_version/test_views.py +++ b/src/dashboard/apigateway/apigateway/tests/apis/web/resource_version/test_views.py @@ -229,14 +229,13 @@ def test_get(self, request_view): class TestResourceVersionDiffApi: - def test_resource_version_diff( + def test_resource_version_diff_without_resource_version( self, request_view, fake_backend, fake_stage, fake_gateway, fake_resource, - fake_resource_version_v2, echo_plugin_stage_binding, ): resp = request_view( @@ -297,6 +296,34 @@ def test_resource_version_diff( } } + def test_resource_version_diff_with_resource_version( + self, + request_view, + fake_backend, + fake_stage, + fake_gateway, + fake_resource_version_v2, + echo_plugin_stage_binding, + ): + resp = request_view( + method="GET", + view_name="gateway.resource_version.diff", + gateway=fake_gateway, + path_params={ + "gateway_id": fake_gateway.id, + }, + data={"source_resource_version_id": fake_resource_version_v2.id, "target_resource_version_id": ""}, + ) + assert resp.status_code == 200 + result = resp.json() + assert result == { + "data": { + "add": [], + "delete": [], + "update": [], + } + } + class TestResourceVersionGetApi: def test_resource_version_get(self, request_view):