From fc631381c74689f3051b0917036024c3ab10e3ce Mon Sep 17 00:00:00 2001 From: Fine0830 Date: Wed, 6 Aug 2025 18:35:45 +0800 Subject: [PATCH] test: implement comprehensive unit tests for components (#487) --- src/__tests__/App.spec.ts | 8 - .../Graph/{Selector.vue => GraphSelector.vue} | 0 src/components/Graph/Legend.vue | 4 +- src/components/Radio.vue | 9 +- src/components/SelectSingle.vue | 21 +- src/components/__tests__/DateCalendar.spec.ts | 694 +++++++++++++ src/components/__tests__/Radio.spec.ts | 520 ++++++++++ src/components/__tests__/SelectSingle.spec.ts | 488 ++++++++++ src/components/__tests__/Selector.spec.ts | 402 ++++++++ src/components/__tests__/TimePicker.spec.ts | 921 ++++++++++++++++++ src/store/modules/demand-log.ts | 3 + src/store/modules/event.ts | 6 +- src/store/modules/log.ts | 3 + src/store/modules/selectors.ts | 4 +- src/store/modules/trace.ts | 6 + src/types/components.d.ts | 1 + .../components/PolicyList.vue | 2 +- .../related/trace/utils/d3-trace-list.ts | 1 + .../related/trace/utils/d3-trace-tree.ts | 1 + 19 files changed, 3070 insertions(+), 24 deletions(-) rename src/components/Graph/{Selector.vue => GraphSelector.vue} (100%) create mode 100644 src/components/__tests__/DateCalendar.spec.ts create mode 100644 src/components/__tests__/Radio.spec.ts create mode 100644 src/components/__tests__/SelectSingle.spec.ts create mode 100644 src/components/__tests__/Selector.spec.ts create mode 100644 src/components/__tests__/TimePicker.spec.ts diff --git a/src/__tests__/App.spec.ts b/src/__tests__/App.spec.ts index 15cb545e..f1a083c2 100644 --- a/src/__tests__/App.spec.ts +++ b/src/__tests__/App.spec.ts @@ -93,8 +93,6 @@ describe("App Component", () => { }); it("should apply correct CSS classes", () => { - const wrapper = mount(App); - // The App component itself doesn't have the 'app' class, it's on the #app element const appElement = document.getElementById("app"); expect(appElement?.className).toContain("app"); @@ -163,9 +161,6 @@ describe("App Component", () => { it("should not throw errors for undefined route names", async () => { mockRoute.name = undefined; - - const wrapper = mount(App); - // Should not throw error expect(() => { vi.advanceTimersByTime(500); @@ -174,9 +169,6 @@ describe("App Component", () => { it("should handle null route names", async () => { mockRoute.name = null; - - const wrapper = mount(App); - // Should not throw error expect(() => { vi.advanceTimersByTime(500); diff --git a/src/components/Graph/Selector.vue b/src/components/Graph/GraphSelector.vue similarity index 100% rename from src/components/Graph/Selector.vue rename to src/components/Graph/GraphSelector.vue diff --git a/src/components/Graph/Legend.vue b/src/components/Graph/Legend.vue index 4cb566c9..38172839 100644 --- a/src/components/Graph/Legend.vue +++ b/src/components/Graph/Legend.vue @@ -13,7 +13,7 @@ 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. --> diff --git a/src/components/SelectSingle.vue b/src/components/SelectSingle.vue index 796df39b..d4b80451 100644 --- a/src/components/SelectSingle.vue +++ b/src/components/SelectSingle.vue @@ -64,6 +64,18 @@ limitations under the License. --> selected.value = { label: "", value: "" }; emit("change", ""); } + + document.body.addEventListener("click", handleClick, false); + + function handleClick() { + visible.value = false; + } + + function setPopper(event: MouseEvent) { + event.stopPropagation(); + visible.value = !visible.value; + } + watch( () => props.value, (data) => { @@ -71,15 +83,6 @@ limitations under the License. --> selected.value = opt || { label: "", value: "" }; }, ); - document.body.addEventListener("click", handleClick, false); - - function handleClick() { - visible.value = false; - } - function setPopper(event: MouseEvent) { - event.stopPropagation(); - visible.value = !visible.value; - }