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");
+  });
+});

Reply via email to