This is an automated email from the ASF dual-hosted git repository.
dengliming pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shenyu-dashboard.git
The following commit(s) were added to refs/heads/master by this push:
new 5303e804 [ISSUE #650] Fix PropTypes validators declared in
defaultProps (#696)
5303e804 is described below
commit 5303e80487292981ca7eb79f5323c286f5e1ca6b
Author: Reginald Alfret V <[email protected]>
AuthorDate: Mon Sep 28 18:21:01 2026 +0530
[ISSUE #650] Fix PropTypes validators declared in defaultProps (#696)
* [ISSUE #650] Fix PropTypes validators declared in defaultProps
* [ISSUE #650] Add defaultProps for optional propTypes in
AddAndUpdateApiDoc and AddAndUpdateTag
---
.../Document/components/AddAndUpdateApiDoc.js | 10 +++-
src/routes/Document/components/AddAndUpdateTag.js | 10 +++-
src/routes/Document/components/modalProps.test.js | 63 ++++++++++++++++++++++
3 files changed, 81 insertions(+), 2 deletions(-)
diff --git a/src/routes/Document/components/AddAndUpdateApiDoc.js
b/src/routes/Document/components/AddAndUpdateApiDoc.js
index 2fa0538b..f392a349 100644
--- a/src/routes/Document/components/AddAndUpdateApiDoc.js
+++ b/src/routes/Document/components/AddAndUpdateApiDoc.js
@@ -27,7 +27,7 @@ import { getIntlContent } from "../../../utils/IntlUtils";
import { addApi, updateApi } from "../../../services/api";
class AddAndUpdateApiDoc extends Component {
- static defaultProps = {
+ static propTypes = {
form: PropTypes.object,
visible: PropTypes.bool,
formLoaded: PropTypes.func,
@@ -35,6 +35,14 @@ class AddAndUpdateApiDoc extends Component {
onCancel: PropTypes.func,
};
+ static defaultProps = {
+ form: null,
+ visible: false,
+ formLoaded: () => {},
+ onOk: () => {},
+ onCancel: () => {},
+ };
+
componentDidMount() {
const { form, formLoaded } = this.props;
formLoaded?.(form);
diff --git a/src/routes/Document/components/AddAndUpdateTag.js
b/src/routes/Document/components/AddAndUpdateTag.js
index 578feaa9..9338828d 100644
--- a/src/routes/Document/components/AddAndUpdateTag.js
+++ b/src/routes/Document/components/AddAndUpdateTag.js
@@ -24,7 +24,7 @@ import { getIntlContent } from "../../../utils/IntlUtils";
import { addTag, updateTag } from "../../../services/api";
class AddAndUpdateTag extends Component {
- static defaultProps = {
+ static propTypes = {
form: PropTypes.object,
visible: PropTypes.bool,
formLoaded: PropTypes.func,
@@ -32,6 +32,14 @@ class AddAndUpdateTag extends Component {
onCancel: PropTypes.func,
};
+ static defaultProps = {
+ form: null,
+ visible: false,
+ formLoaded: () => {},
+ onOk: () => {},
+ onCancel: () => {},
+ };
+
componentDidMount() {
const { form, formLoaded } = this.props;
formLoaded?.(form);
diff --git a/src/routes/Document/components/modalProps.test.js
b/src/routes/Document/components/modalProps.test.js
new file mode 100644
index 00000000..d527264a
--- /dev/null
+++ b/src/routes/Document/components/modalProps.test.js
@@ -0,0 +1,63 @@
+/* eslint-disable react/forbid-foreign-prop-types */
+/*
+ * 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.
+ */
+
+import AddAndUpdateApiDoc from "./AddAndUpdateApiDoc";
+import AddAndUpdateTag from "./AddAndUpdateTag";
+
+jest.mock("../../../services/api", () => ({
+ addApi: jest.fn(),
+ updateApi: jest.fn(),
+ addTag: jest.fn(),
+ updateTag: jest.fn(),
+}));
+
+describe("AddAndUpdateApiDoc and AddAndUpdateTag props", () => {
+ it("should have correct propTypes and defaultProps on AddAndUpdateApiDoc",
() => {
+ const Component = AddAndUpdateApiDoc.WrappedComponent;
+ expect(Component.propTypes).toBeDefined();
+ expect(typeof Component.propTypes.form).toBe("function");
+ expect(typeof Component.propTypes.visible).toBe("function");
+ expect(typeof Component.propTypes.formLoaded).toBe("function");
+ expect(typeof Component.propTypes.onOk).toBe("function");
+ expect(typeof Component.propTypes.onCancel).toBe("function");
+
+ expect(Component.defaultProps).toBeDefined();
+ expect(Component.defaultProps.visible).toBe(false);
+ expect(Component.defaultProps.form).toBeNull();
+ expect(typeof Component.defaultProps.formLoaded).toBe("function");
+ expect(typeof Component.defaultProps.onOk).toBe("function");
+ expect(typeof Component.defaultProps.onCancel).toBe("function");
+ });
+
+ it("should have correct propTypes and defaultProps on AddAndUpdateTag", ()
=> {
+ const Component = AddAndUpdateTag.WrappedComponent;
+ expect(Component.propTypes).toBeDefined();
+ expect(typeof Component.propTypes.form).toBe("function");
+ expect(typeof Component.propTypes.visible).toBe("function");
+ expect(typeof Component.propTypes.formLoaded).toBe("function");
+ expect(typeof Component.propTypes.onOk).toBe("function");
+ expect(typeof Component.propTypes.onCancel).toBe("function");
+
+ expect(Component.defaultProps).toBeDefined();
+ expect(Component.defaultProps.visible).toBe(false);
+ expect(Component.defaultProps.form).toBeNull();
+ expect(typeof Component.defaultProps.formLoaded).toBe("function");
+ expect(typeof Component.defaultProps.onOk).toBe("function");
+ expect(typeof Component.defaultProps.onCancel).toBe("function");
+ });
+});