You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@apisix.apache.org by ju...@apache.org on 2021/05/03 07:54:12 UTC
[apisix-dashboard] branch master updated: fix:When create the upstream, some properties can still be edited on … (#1828)
This is an automated email from the ASF dual-hosted git repository.
juzhiyuan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix-dashboard.git
The following commit(s) were added to refs/heads/master by this push:
new 6b997d1 fix:When create the upstream, some properties can still be edited on … (#1828)
6b997d1 is described below
commit 6b997d1fddf47ed62561a4599647884c7168b617
Author: jiemoxiaolong <sh...@163.com>
AuthorDate: Mon May 3 15:54:05 2021 +0800
fix:When create the upstream, some properties can still be edited on … (#1828)
Co-authored-by: guoqqqi <72...@users.noreply.github.com>
---
...create-route-when-not-select-upsteam-id.spec.js | 101 +++++++++++++++++++++
...create-service-with-not-select-upstream.spec.js | 69 ++++++++++++++
.../upstream/create_and_delete_upstream.spec.js | 1 +
web/src/components/Upstream/UpstreamForm.tsx | 1 +
4 files changed, 172 insertions(+)
diff --git a/web/cypress/integration/route/create-route-when-not-select-upsteam-id.spec.js b/web/cypress/integration/route/create-route-when-not-select-upsteam-id.spec.js
new file mode 100644
index 0000000..71f3fa2
--- /dev/null
+++ b/web/cypress/integration/route/create-route-when-not-select-upsteam-id.spec.js
@@ -0,0 +1,101 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/* eslint-disable no-undef */
+
+context('Create Route without Upstream', () => {
+ beforeEach(() => {
+ cy.login();
+
+ cy.fixture('selector.json').as('domSelector');
+ cy.fixture('data.json').as('data');
+ });
+
+
+ it('should create route wittout upstream ', function () {
+ cy.visit('/');
+ cy.get('[role=menu]').should('be.visible').within(() => {
+ cy.contains('Route').click();
+ });
+ cy.contains('Create').click();
+
+ cy.contains('Next').click().click();
+ cy.get(this.domSelector.name).type(this.data.routeName);
+ cy.contains('Next').click();
+
+ cy.get(this.domSelector.nodes_0_host).clear().type(this.data.ip1);
+ cy.get(this.domSelector.nodes_0_port).type(this.data.port);
+ cy.get(this.domSelector.nodes_0_weight).type(this.data.weight);
+ cy.contains('Next').click();
+ cy.contains('Next').click();
+ cy.get(this.domSelector.input).should('be.disabled');
+ cy.contains('Submit').click();
+ cy.contains(this.data.submitSuccess).should('be.visible');
+ cy.contains('Goto List').click();
+ cy.url().should('contains', 'routes/list');
+ });
+
+ it('should edit this route ', function () {
+ cy.visit('/');
+ cy.contains('Route').click();
+ cy.get(this.domSelector.nameSelector).type(this.data.routeName);
+
+ cy.contains('Search').click();
+ cy.contains(this.data.routeName).siblings().contains('Configure').click();
+
+ cy.get(this.domSelector.name).should('value', this.data.routeName);
+ cy.contains('Next').click({
+ force: true
+ });
+
+ // check if the changes have been saved
+ cy.get(this.domSelector.nodes_0_host).should('value', this.data.ip1);
+ cy.get(this.domSelector.nodes_0_host).clear().type(this.data.ip2);
+ cy.get(this.domSelector.nodes_0_port).type(this.data.port);
+ cy.get(this.domSelector.nodes_0_weight).type(this.data.weight);
+ cy.contains('Next').click();
+ cy.contains('Next').click();
+ cy.get(this.domSelector.input).should('be.disabled');
+ cy.contains('Submit').click();
+ cy.contains(this.data.submitSuccess).should('be.visible');
+ cy.contains('Goto List').click();
+ cy.url().should('contains', 'routes/list');
+
+ // check if the changes have been saved
+ cy.get(this.domSelector.nameSelector).type(this.data.routeName);
+ cy.contains('Search').click();
+
+ cy.contains(this.data.routeName).siblings().contains('Configure').click();
+ // ensure it has already changed to edit page
+ cy.get(this.domSelector.name).should('value', this.data.routeName);
+ cy.contains('Next').click({
+ force: true
+ });
+ cy.get(this.domSelector.nodes_0_host).should('value', this.data.ip2);
+ });
+
+ it('should delete this test route', function () {
+ cy.visit('/routes/list');
+ cy.get(this.domSelector.nameSelector).type(this.data.routeName);
+ cy.contains('Search').click();
+ cy.contains(this.data.routeName).siblings().contains('More').click();
+ cy.contains('Delete').click();
+ cy.get(this.domSelector.deleteAlert).should('be.visible').within(() => {
+ cy.contains('OK').click();
+ });
+ cy.get(this.domSelector.notification).should('contain', this.data.deleteRouteSuccess);
+ });
+});
diff --git a/web/cypress/integration/service/create-service-with-not-select-upstream.spec.js b/web/cypress/integration/service/create-service-with-not-select-upstream.spec.js
new file mode 100644
index 0000000..aec999a
--- /dev/null
+++ b/web/cypress/integration/service/create-service-with-not-select-upstream.spec.js
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/* eslint-disable no-undef */
+
+context('Edit Service with not select Upstream', () => {
+ beforeEach(() => {
+ cy.login();
+
+ cy.fixture('selector.json').as('domSelector');
+ cy.fixture('data.json').as('data');
+ });
+
+ it('should create a test service', function () {
+ cy.visit('/');
+ cy.contains('Service').click();
+ cy.contains('Create').click();
+ cy.get(this.domSelector.name).type(this.data.serviceName);
+ cy.get(this.domSelector.description).type(this.data.description);
+ cy.get(this.domSelector.nodes_0_host).click();
+ cy.get(this.domSelector.nodes_0_host).type(this.data.ip1);
+ cy.get(this.domSelector.nodes_0_port).clear().type('7000');
+ cy.get(this.domSelector.nodes_0_weight).clear().type(1);
+ cy.contains('Next').click();
+ cy.contains('Next').click();
+ cy.get(this.domSelector.input).should('be.disabled');
+ cy.contains('Submit').click();
+ cy.get(this.domSelector.notification).should('contain', this.data.createServiceSuccess);
+ });
+
+ it('should edit the service', function () {
+ cy.visit('/service/list');
+
+ cy.get(this.domSelector.nameSearch).type(this.data.serviceName);
+ cy.contains('Search').click();
+ cy.contains(this.data.serviceName).siblings().contains('Configure').click();
+ cy.wait(500);
+ cy.get(this.domSelector.nodes_0_host).should('not.be.disabled').clear().type(this.data.ip2);
+ cy.get(this.domSelector.nodes_0_port).type(this.data.port);
+ cy.get(this.domSelector.nodes_0_weight).type(this.data.weight);
+ cy.contains('Next').click();
+ cy.contains('Next').click();
+ cy.get(this.domSelector.input).should('be.disabled');
+ cy.contains('Submit').click();
+ cy.get(this.domSelector.notification).should('contain', this.data.editServiceSuccess);
+ });
+
+ it('should delete this service and upstream', function () {
+ cy.visit('/service/list');
+ cy.get(this.domSelector.nameSearch).type(this.data.serviceName);
+ cy.contains('Search').click();
+ cy.contains(this.data.serviceName).siblings().contains('Delete').click();
+ cy.contains('button', 'Confirm').click();
+ cy.get(this.domSelector.notification).should('contain', this.data.deleteServiceSuccess);
+ });
+});
diff --git a/web/cypress/integration/upstream/create_and_delete_upstream.spec.js b/web/cypress/integration/upstream/create_and_delete_upstream.spec.js
index 4f2c0fa..86c672d 100644
--- a/web/cypress/integration/upstream/create_and_delete_upstream.spec.js
+++ b/web/cypress/integration/upstream/create_and_delete_upstream.spec.js
@@ -36,6 +36,7 @@ context('Create and Delete Upstream', () => {
cy.get(this.domSelector.nodes_0_port).clear().type('7000');
cy.get(this.domSelector.nodes_0_weight).clear().type(1);
cy.contains('Next').click();
+ cy.get(this.domSelector.input).should('be.disabled');
cy.contains('Submit').click();
cy.get(this.domSelector.notification).should('contain', this.data.createUpstreamSuccess);
cy.contains(this.data.createUpstreamSuccess);
diff --git a/web/src/components/Upstream/UpstreamForm.tsx b/web/src/components/Upstream/UpstreamForm.tsx
index c8a606b..8f07e6e 100644
--- a/web/src/components/Upstream/UpstreamForm.tsx
+++ b/web/src/components/Upstream/UpstreamForm.tsx
@@ -83,6 +83,7 @@ const UpstreamForm: React.FC<Props> = forwardRef(
const resetForm = (upstream_id: string) => {
if (upstream_id === undefined) {
+ setReadonly(disabled);
return
}