diff --git a/packages/shared-components/src/audio/AudioPlayerView/AudioPlayerView.test.tsx b/packages/shared-components/src/audio/AudioPlayerView/AudioPlayerView.test.tsx index 55e159f110..4ec4e7556b 100644 --- a/packages/shared-components/src/audio/AudioPlayerView/AudioPlayerView.test.tsx +++ b/packages/shared-components/src/audio/AudioPlayerView/AudioPlayerView.test.tsx @@ -5,11 +5,11 @@ * Please see LICENSE files in the repository root for full details. */ -import { render, screen } from "jest-matrix-react"; +import { render, screen, fireEvent } from "@test-utils"; import { composeStories } from "@storybook/react-vite"; import React from "react"; import userEvent from "@testing-library/user-event"; -import { fireEvent } from "@testing-library/dom"; +import { describe, it, vi, afterEach, expect } from "vitest"; import * as stories from "./AudioPlayerView.stories.tsx"; import { AudioPlayerView, type AudioPlayerViewActions, type AudioPlayerViewSnapshot } from "./AudioPlayerView"; @@ -21,7 +21,7 @@ const { Default, NoMediaName, NoSize, HasError } = composeStories(stories); describe("AudioPlayerView", () => { afterEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); }); it("renders the audio player in default state", () => { @@ -44,9 +44,9 @@ describe("AudioPlayerView", () => { expect(container).toMatchSnapshot(); }); - const onKeyDown = jest.fn(); - const togglePlay = jest.fn(); - const onSeekbarChange = jest.fn(); + const onKeyDown = vi.fn(); + const togglePlay = vi.fn(); + const onSeekbarChange = vi.fn(); class AudioPlayerViewModel extends MockViewModel implements AudioPlayerViewActions { public onKeyDown = onKeyDown; diff --git a/packages/shared-components/src/audio/Clock/Clock.test.tsx b/packages/shared-components/src/audio/Clock/Clock.test.tsx index fdbbf49518..9350b7cae3 100644 --- a/packages/shared-components/src/audio/Clock/Clock.test.tsx +++ b/packages/shared-components/src/audio/Clock/Clock.test.tsx @@ -6,8 +6,9 @@ */ import { composeStories } from "@storybook/react-vite"; -import { render } from "jest-matrix-react"; +import { render } from "@test-utils"; import React from "react"; +import { describe, it, expect } from "vitest"; import * as stories from "./Clock.stories.tsx"; diff --git a/packages/shared-components/src/audio/PlayPauseButton/PlayPauseButton.test.tsx b/packages/shared-components/src/audio/PlayPauseButton/PlayPauseButton.test.tsx index 3a032f5e02..57cc2afc8b 100644 --- a/packages/shared-components/src/audio/PlayPauseButton/PlayPauseButton.test.tsx +++ b/packages/shared-components/src/audio/PlayPauseButton/PlayPauseButton.test.tsx @@ -6,10 +6,11 @@ */ import { composeStories } from "@storybook/react-vite"; -import { render } from "jest-matrix-react"; +import { render } from "@test-utils"; import React from "react"; import userEvent from "@testing-library/user-event"; import { fn } from "storybook/test"; +import { describe, it, expect } from "vitest"; import * as stories from "./PlayPauseButton.stories.tsx"; diff --git a/packages/shared-components/src/audio/SeekBar/SeekBar.test.tsx b/packages/shared-components/src/audio/SeekBar/SeekBar.test.tsx index 0d52ab3993..0e3dc78432 100644 --- a/packages/shared-components/src/audio/SeekBar/SeekBar.test.tsx +++ b/packages/shared-components/src/audio/SeekBar/SeekBar.test.tsx @@ -5,9 +5,10 @@ * Please see LICENSE files in the repository root for full details. */ -import { render } from "jest-matrix-react"; +import { render } from "@test-utils"; import React from "react"; import { composeStories } from "@storybook/react-vite"; +import { describe, it, expect } from "vitest"; import * as stories from "./SeekBar.stories.tsx"; const { Default } = composeStories(stories); diff --git a/packages/shared-components/src/avatar/AvatarWithDetails/AvatarWithDetails.test.tsx b/packages/shared-components/src/avatar/AvatarWithDetails/AvatarWithDetails.test.tsx index f5d482613f..157062656b 100644 --- a/packages/shared-components/src/avatar/AvatarWithDetails/AvatarWithDetails.test.tsx +++ b/packages/shared-components/src/avatar/AvatarWithDetails/AvatarWithDetails.test.tsx @@ -6,8 +6,9 @@ Please see LICENSE files in the repository root for full details. */ import { composeStories } from "@storybook/react-vite"; -import { render } from "jest-matrix-react"; +import { render } from "@test-utils"; import React from "react"; +import { describe, it, expect } from "vitest"; import * as stories from "./AvatarWithDetails.stories.tsx"; diff --git a/packages/shared-components/src/composer/Banner/Banner.test.tsx b/packages/shared-components/src/composer/Banner/Banner.test.tsx index 0f33fb452b..0af64a1f2e 100644 --- a/packages/shared-components/src/composer/Banner/Banner.test.tsx +++ b/packages/shared-components/src/composer/Banner/Banner.test.tsx @@ -6,7 +6,8 @@ */ import React from "react"; -import { render } from "jest-matrix-react"; +import { render } from "@test-utils"; +import { describe, it, expect } from "vitest"; import { composeStories } from "@storybook/react-vite"; import * as stories from "./Banner.stories.tsx"; diff --git a/packages/shared-components/src/composer/HistoryVisibleBannerView/HistoryVisibleBannerView.test.tsx b/packages/shared-components/src/composer/HistoryVisibleBannerView/HistoryVisibleBannerView.test.tsx index 04d1ca40e6..f5dbb63d6d 100644 --- a/packages/shared-components/src/composer/HistoryVisibleBannerView/HistoryVisibleBannerView.test.tsx +++ b/packages/shared-components/src/composer/HistoryVisibleBannerView/HistoryVisibleBannerView.test.tsx @@ -6,8 +6,9 @@ */ import React from "react"; -import { render } from "jest-matrix-react"; +import { render } from "@test-utils"; import { composeStories } from "@storybook/react-vite"; +import { describe, it, vi, expect } from "vitest"; import * as stories from "./HistoryVisibleBannerView.stories.tsx"; @@ -15,7 +16,7 @@ const { Default } = composeStories(stories); describe("HistoryVisibleBannerView", () => { it("renders a history visible banner", () => { - const dismissFn = jest.fn(); + const dismissFn = vi.fn(); const { container } = render(); expect(container).toMatchSnapshot(); diff --git a/packages/shared-components/src/event-tiles/TextualEventView/TextualEventView.test.tsx b/packages/shared-components/src/event-tiles/TextualEventView/TextualEventView.test.tsx index 5d2dd912ef..3a508df56b 100644 --- a/packages/shared-components/src/event-tiles/TextualEventView/TextualEventView.test.tsx +++ b/packages/shared-components/src/event-tiles/TextualEventView/TextualEventView.test.tsx @@ -6,8 +6,9 @@ Please see LICENSE files in the repository root for full details. */ import { composeStories } from "@storybook/react-vite"; -import { render } from "jest-matrix-react"; +import { render } from "@test-utils"; import React from "react"; +import { describe, it, expect } from "vitest"; import * as stories from "./TextualEventView.stories.tsx"; diff --git a/packages/shared-components/src/hooks/useListKeyboardNavigation.test.ts b/packages/shared-components/src/hooks/useListKeyboardNavigation.test.ts index 9381619edc..860b547ab4 100644 --- a/packages/shared-components/src/hooks/useListKeyboardNavigation.test.ts +++ b/packages/shared-components/src/hooks/useListKeyboardNavigation.test.ts @@ -6,7 +6,8 @@ */ import { type KeyboardEvent } from "react"; -import { renderHook } from "jest-matrix-react"; +import { renderHook } from "@test-utils"; +import { vi, describe, expect, it, beforeEach, afterEach } from "vitest"; import { useListKeyboardNavigation } from "./useListKeyboardNavigation"; @@ -31,20 +32,20 @@ describe("useListKeyDown", () => { // Mock event object mockEvent = { - preventDefault: jest.fn(), + preventDefault: vi.fn(), key: "", }; // Mock focus methods mockItems.forEach((item) => { - item.focus = jest.fn(); - item.click = jest.fn(); + item.focus = vi.fn(); + item.click = vi.fn(); }); }); afterEach(() => { document.body.removeChild(mockList); - jest.clearAllMocks(); + vi.clearAllMocks(); }); function render(): { @@ -91,7 +92,7 @@ describe("useListKeyDown", () => { ], )("should handle %s to focus the %inth element", (key, finalPosition, startPosition) => { const result = render(); - mockList.contains = jest.fn().mockReturnValue(true); + mockList.contains = vi.fn().mockReturnValue(true); Object.defineProperty(document, "activeElement", { value: mockItems[startPosition], @@ -109,7 +110,7 @@ describe("useListKeyDown", () => { it.each([["ArrowDown"], ["ArrowUp"]])("should not handle %s when active element is not in list", (key) => { const result = render(); - mockList.contains = jest.fn().mockReturnValue(false); + mockList.contains = vi.fn().mockReturnValue(false); const outsideElement = document.createElement("button"); diff --git a/packages/shared-components/src/message-body/MediaBody/MediaBody.test.tsx b/packages/shared-components/src/message-body/MediaBody/MediaBody.test.tsx index 9d405e1af3..303c7a05f0 100644 --- a/packages/shared-components/src/message-body/MediaBody/MediaBody.test.tsx +++ b/packages/shared-components/src/message-body/MediaBody/MediaBody.test.tsx @@ -6,8 +6,9 @@ */ import { composeStories } from "@storybook/react-vite"; -import { render } from "jest-matrix-react"; +import { render } from "@test-utils"; import React from "react"; +import { describe, it, expect } from "vitest"; import * as stories from "./MediaBody.stories"; diff --git a/packages/shared-components/src/pill-input/Pill/Pill.test.tsx b/packages/shared-components/src/pill-input/Pill/Pill.test.tsx index a539f6c295..867af1a9d4 100644 --- a/packages/shared-components/src/pill-input/Pill/Pill.test.tsx +++ b/packages/shared-components/src/pill-input/Pill/Pill.test.tsx @@ -6,8 +6,9 @@ */ import { composeStories } from "@storybook/react-vite"; -import { render } from "jest-matrix-react"; +import { render } from "@test-utils"; import React from "react"; +import { describe, it, expect } from "vitest"; import * as stories from "./Pill.stories"; diff --git a/packages/shared-components/src/pill-input/PillInput/PillInput.test.tsx b/packages/shared-components/src/pill-input/PillInput/PillInput.test.tsx index b20b53c6e4..aaaf8dbdf0 100644 --- a/packages/shared-components/src/pill-input/PillInput/PillInput.test.tsx +++ b/packages/shared-components/src/pill-input/PillInput/PillInput.test.tsx @@ -5,10 +5,11 @@ * Please see LICENSE files in the repository root for full details. */ -import { render, screen } from "jest-matrix-react"; +import { render, screen } from "@test-utils"; import React from "react"; import { composeStories } from "@storybook/react-vite"; import userEvent from "@testing-library/user-event"; +import { describe, it, vi, expect } from "vitest"; import * as stories from "./PillInput.stories"; import { PillInput } from "./PillInput"; @@ -28,7 +29,7 @@ describe("PillInput", () => { it("calls onRemoveChildren when backspace is pressed and input is empty", async () => { const user = userEvent.setup(); - const mockOnRemoveChildren = jest.fn(); + const mockOnRemoveChildren = vi.fn(); render(); diff --git a/packages/shared-components/src/rich-list/RichItem/RichItem.test.tsx b/packages/shared-components/src/rich-list/RichItem/RichItem.test.tsx index b5322d1fa5..27d3266aee 100644 --- a/packages/shared-components/src/rich-list/RichItem/RichItem.test.tsx +++ b/packages/shared-components/src/rich-list/RichItem/RichItem.test.tsx @@ -6,8 +6,9 @@ */ import { composeStories } from "@storybook/react-vite"; -import { render } from "jest-matrix-react"; +import { render } from "@test-utils"; import React from "react"; +import { describe, it, vi, beforeAll, expect } from "vitest"; import * as stories from "./RichItem.stories"; @@ -15,7 +16,7 @@ const { Default, Selected, WithoutTimestamp } = composeStories(stories); describe("RichItem", () => { beforeAll(() => { - jest.useFakeTimers().setSystemTime(new Date("2025-08-01T12:00:00Z")); + vi.useFakeTimers().setSystemTime(new Date("2025-08-01T12:00:00Z")); }); it("renders the item in default state", () => { diff --git a/packages/shared-components/src/rich-list/RichList/RichList.test.tsx b/packages/shared-components/src/rich-list/RichList/RichList.test.tsx index 625511f68e..e77cc20b02 100644 --- a/packages/shared-components/src/rich-list/RichList/RichList.test.tsx +++ b/packages/shared-components/src/rich-list/RichList/RichList.test.tsx @@ -6,8 +6,9 @@ */ import { composeStories } from "@storybook/react-vite"; -import { render } from "jest-matrix-react"; +import { render } from "@test-utils"; import React from "react"; +import { describe, it, expect } from "vitest"; import * as stories from "./RichList.stories"; diff --git a/packages/shared-components/src/room-list/RoomListHeaderView/RoomListHeaderView.test.tsx b/packages/shared-components/src/room-list/RoomListHeaderView/RoomListHeaderView.test.tsx index 960d708082..48904171cd 100644 --- a/packages/shared-components/src/room-list/RoomListHeaderView/RoomListHeaderView.test.tsx +++ b/packages/shared-components/src/room-list/RoomListHeaderView/RoomListHeaderView.test.tsx @@ -6,7 +6,8 @@ */ import { composeStories } from "@storybook/react-vite"; -import { render } from "jest-matrix-react"; +import { render } from "@test-utils"; +import { describe, it, expect } from "vitest"; import React from "react"; import * as stories from "./RoomListHeaderView.stories"; diff --git a/packages/shared-components/src/room-list/RoomListHeaderView/menu/ComposeMenuView.test.tsx b/packages/shared-components/src/room-list/RoomListHeaderView/menu/ComposeMenuView.test.tsx index 71e95bc4e5..db06051cc2 100644 --- a/packages/shared-components/src/room-list/RoomListHeaderView/menu/ComposeMenuView.test.tsx +++ b/packages/shared-components/src/room-list/RoomListHeaderView/menu/ComposeMenuView.test.tsx @@ -6,15 +6,16 @@ */ import React from "react"; -import { render, screen } from "jest-matrix-react"; +import { render, screen } from "@test-utils"; import userEvent from "@testing-library/user-event"; +import { vi, describe, it, afterEach, expect } from "vitest"; import { ComposeMenuView } from "./ComposeMenuView"; import { defaultSnapshot, MockedViewModel } from "../test-utils"; describe("", () => { afterEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); }); it("should match snapshot", () => { diff --git a/packages/shared-components/src/room-list/RoomListHeaderView/menu/OptionMenuView.test.tsx b/packages/shared-components/src/room-list/RoomListHeaderView/menu/OptionMenuView.test.tsx index f067c1db3b..822f5c84b4 100644 --- a/packages/shared-components/src/room-list/RoomListHeaderView/menu/OptionMenuView.test.tsx +++ b/packages/shared-components/src/room-list/RoomListHeaderView/menu/OptionMenuView.test.tsx @@ -6,15 +6,16 @@ */ import React from "react"; -import { render, screen } from "jest-matrix-react"; +import { render, screen } from "@test-utils"; import userEvent from "@testing-library/user-event"; +import { vi, describe, it, afterEach, expect } from "vitest"; import { OptionMenuView } from "./OptionMenuView"; import { defaultSnapshot, MockedViewModel } from "../test-utils"; describe("", () => { afterEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); }); it("should match snapshot", () => { diff --git a/packages/shared-components/src/room-list/RoomListHeaderView/menu/SpaceMenuView.test.tsx b/packages/shared-components/src/room-list/RoomListHeaderView/menu/SpaceMenuView.test.tsx index 8da1b37019..b2fe8adf31 100644 --- a/packages/shared-components/src/room-list/RoomListHeaderView/menu/SpaceMenuView.test.tsx +++ b/packages/shared-components/src/room-list/RoomListHeaderView/menu/SpaceMenuView.test.tsx @@ -6,15 +6,16 @@ */ import React from "react"; -import { render, screen } from "jest-matrix-react"; +import { render, screen } from "@test-utils"; import userEvent from "@testing-library/user-event"; +import { vi, describe, it, afterEach, expect } from "vitest"; import { SpaceMenuView } from "./SpaceMenuView"; import { defaultSnapshot, MockedViewModel } from "../test-utils"; describe("", () => { afterEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); }); it("should match snapshot", () => { diff --git a/packages/shared-components/src/room-list/RoomListHeaderView/test-utils.ts b/packages/shared-components/src/room-list/RoomListHeaderView/test-utils.ts index aedcf32ad6..b3357e4334 100644 --- a/packages/shared-components/src/room-list/RoomListHeaderView/test-utils.ts +++ b/packages/shared-components/src/room-list/RoomListHeaderView/test-utils.ts @@ -5,6 +5,8 @@ * Please see LICENSE files in the repository root for full details. */ +import { vi } from "vitest"; + import { MockViewModel } from "../../viewmodel"; import { type RoomListHeaderViewActions, type RoomListHeaderViewSnapshot } from "./RoomListHeaderView"; @@ -12,15 +14,15 @@ import { type RoomListHeaderViewActions, type RoomListHeaderViewSnapshot } from * A mocked ViewModel for the RoomListHeaderView, for use in tests. */ export class MockedViewModel extends MockViewModel implements RoomListHeaderViewActions { - public createChatRoom = jest.fn(); - public createRoom = jest.fn(); - public createVideoRoom = jest.fn(); - public openSpaceHome = jest.fn(); - public openSpaceSettings = jest.fn(); - public inviteInSpace = jest.fn(); - public sort = jest.fn(); - public openSpacePreferences = jest.fn(); - public toggleMessagePreview = jest.fn(); + public createChatRoom = vi.fn<() => void>(); + public createRoom = vi.fn<() => void>(); + public createVideoRoom = vi.fn<() => void>(); + public openSpaceHome = vi.fn<() => void>(); + public openSpaceSettings = vi.fn<() => void>(); + public inviteInSpace = vi.fn<() => void>(); + public sort = vi.fn<() => void>(); + public openSpacePreferences = vi.fn<() => void>(); + public toggleMessagePreview = vi.fn<() => void>(); } export const defaultSnapshot: RoomListHeaderViewSnapshot = { diff --git a/packages/shared-components/src/room-list/RoomListSearchView/RoomListSearchView.test.tsx b/packages/shared-components/src/room-list/RoomListSearchView/RoomListSearchView.test.tsx index 1a256d63b1..325d8516da 100644 --- a/packages/shared-components/src/room-list/RoomListSearchView/RoomListSearchView.test.tsx +++ b/packages/shared-components/src/room-list/RoomListSearchView/RoomListSearchView.test.tsx @@ -5,10 +5,11 @@ * Please see LICENSE files in the repository root for full details. */ -import { render, screen } from "jest-matrix-react"; +import { render, screen } from "@test-utils"; import { composeStories } from "@storybook/react-vite"; import React from "react"; import userEvent from "@testing-library/user-event"; +import { describe, it, vi, afterEach, expect } from "vitest"; import * as stories from "./RoomListSearchView.stories"; import { @@ -22,7 +23,7 @@ const { Default, WithDialPad, WithoutExplore, AllButtons } = composeStories(stor describe("RoomListSearchView", () => { afterEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); }); describe("Storybook snapshots", () => { @@ -48,9 +49,9 @@ describe("RoomListSearchView", () => { }); describe("User interactions", () => { - const onSearchClick = jest.fn(); - const onDialPadClick = jest.fn(); - const onExploreClick = jest.fn(); + const onSearchClick = vi.fn(); + const onDialPadClick = vi.fn(); + const onExploreClick = vi.fn(); class TestViewModel extends MockViewModel implements RoomListSearchViewActions { public onSearchClick = onSearchClick; diff --git a/packages/shared-components/src/room/RoomStatusBar/RoomStatusBarView.test.tsx b/packages/shared-components/src/room/RoomStatusBar/RoomStatusBarView.test.tsx index 22b9204ab0..58cc6e6e9f 100644 --- a/packages/shared-components/src/room/RoomStatusBar/RoomStatusBarView.test.tsx +++ b/packages/shared-components/src/room/RoomStatusBar/RoomStatusBarView.test.tsx @@ -6,9 +6,10 @@ */ import React from "react"; -import { render } from "jest-matrix-react"; +import { render } from "@test-utils"; import { composeStories } from "@storybook/react-vite"; import userEvent from "@testing-library/user-event"; +import { describe, it, vi, expect } from "vitest"; import * as stories from "./RoomStatusBarView.stories.tsx"; @@ -33,12 +34,12 @@ describe("RoomStatusBarView", () => { }); it("renders unsent messages", async () => { const { container } = render( - , + , ); expect(container).toMatchSnapshot(); }); it("renders unsent messages and deletes all", async () => { - const onDeleteAllClick = jest.fn(); + const onDeleteAllClick = vi.fn(); const { container, getByRole } = render(); expect(container).toMatchSnapshot(); @@ -47,7 +48,7 @@ describe("RoomStatusBarView", () => { expect(onDeleteAllClick).toHaveBeenCalled(); }); it("renders unsent messages and resends all", async () => { - const onResendAllClick = jest.fn(); + const onResendAllClick = vi.fn(); const { container, getByRole } = render(); expect(container).toMatchSnapshot(); @@ -56,7 +57,7 @@ describe("RoomStatusBarView", () => { expect(onResendAllClick).toHaveBeenCalled(); }); it("renders local room error", async () => { - const onRetryRoomCreationClick = jest.fn(); + const onRetryRoomCreationClick = vi.fn(); const { container, getByRole } = render( , ); diff --git a/packages/shared-components/src/test/setupTests.ts b/packages/shared-components/src/test/setupTests.ts index 9b048d272b..3d8c292e15 100644 --- a/packages/shared-components/src/test/setupTests.ts +++ b/packages/shared-components/src/test/setupTests.ts @@ -8,6 +8,7 @@ Please see LICENSE files in the repository root for full details. import fetchMock from "@fetch-mock/vitest"; import { cleanup } from "@test-utils"; import { afterEach } from "vitest"; +import "@testing-library/jest-dom/vitest"; import { setLanguage } from "../../src/utils/i18n"; import en from "../i18n/strings/en_EN.json"; diff --git a/packages/shared-components/src/utils/I18nApi.test.ts b/packages/shared-components/src/utils/I18nApi.test.ts index 75c31a7f7c..a9fd287c4f 100644 --- a/packages/shared-components/src/utils/I18nApi.test.ts +++ b/packages/shared-components/src/utils/I18nApi.test.ts @@ -5,6 +5,8 @@ * Please see LICENSE files in the repository root for full details. */ +import { describe, it, expect } from "vitest"; + import { I18nApi } from "./I18nApi"; describe("I18nApi", () => { diff --git a/packages/shared-components/src/utils/humanize.test.ts b/packages/shared-components/src/utils/humanize.test.ts index 1c07dd3d04..9cef35bab3 100644 --- a/packages/shared-components/src/utils/humanize.test.ts +++ b/packages/shared-components/src/utils/humanize.test.ts @@ -5,13 +5,15 @@ * Please see LICENSE files in the repository root for full details. */ +import { describe, it, beforeAll, vi, expect } from "vitest"; + import { humanizeTime } from "./humanize"; describe("humanizeTime", () => { const now = new Date("2025-08-01T12:00:00Z").getTime(); beforeAll(() => { - jest.useFakeTimers().setSystemTime(now); + vi.useFakeTimers().setSystemTime(now); }); it.each([ diff --git a/packages/shared-components/src/utils/i18n.test.ts b/packages/shared-components/src/utils/i18n.test.ts index a578f7bcfe..94aebd7c2f 100644 --- a/packages/shared-components/src/utils/i18n.test.ts +++ b/packages/shared-components/src/utils/i18n.test.ts @@ -6,39 +6,40 @@ */ import counterpart from "counterpart"; +import { vi, describe, it, beforeEach, expect } from "vitest"; import { registerTranslations, setMissingEntryGenerator, getLocale, setLocale } from "./i18n"; describe("i18n utils", () => { beforeEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); }); it("should wrap registerTranslations", () => { - jest.spyOn(counterpart, "registerTranslations"); + vi.spyOn(counterpart, "registerTranslations"); registerTranslations("en", { test: "This is a test" }); expect(counterpart.registerTranslations).toHaveBeenCalledWith("en", { test: "This is a test" }); }); it("should wrap setMissingEntryGenerator", () => { - jest.spyOn(counterpart, "setMissingEntryGenerator"); + vi.spyOn(counterpart, "setMissingEntryGenerator"); - const dummyFn = jest.fn(); + const dummyFn = vi.fn(); setMissingEntryGenerator(dummyFn); expect(counterpart.setMissingEntryGenerator).toHaveBeenCalledWith(dummyFn); }); it("should wrap getLocale", () => { - jest.spyOn(counterpart, "getLocale"); + vi.spyOn(counterpart, "getLocale"); getLocale(); expect(counterpart.getLocale).toHaveBeenCalled(); }); it("should wrap setLocale", () => { - jest.spyOn(counterpart, "setLocale"); + vi.spyOn(counterpart, "setLocale"); setLocale("en"); expect(counterpart.setLocale).toHaveBeenCalledWith("en"); diff --git a/packages/shared-components/src/utils/numbers.test.ts b/packages/shared-components/src/utils/numbers.test.ts index 928fd67ae0..7fa75cb81f 100644 --- a/packages/shared-components/src/utils/numbers.test.ts +++ b/packages/shared-components/src/utils/numbers.test.ts @@ -6,6 +6,8 @@ SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Com Please see LICENSE files in the repository root for full details. */ +import { describe, it, expect } from "vitest"; + import { clamp, defaultNumber, percentageOf, percentageWithin, sum } from "./numbers"; describe("numbers", () => { diff --git a/packages/shared-components/src/viewmodel/tests/Disposables.test.ts b/packages/shared-components/src/viewmodel/tests/Disposables.test.ts index 5b71f1871d..4b0cdedc11 100644 --- a/packages/shared-components/src/viewmodel/tests/Disposables.test.ts +++ b/packages/shared-components/src/viewmodel/tests/Disposables.test.ts @@ -5,6 +5,7 @@ Please see LICENSE files in the repository root for full details. */ import { EventEmitter } from "events"; +import { describe, it, vi, expect } from "vitest"; import { Disposables } from ".."; @@ -21,11 +22,11 @@ describe("Disposable", () => { const item1 = { foo: 5, - dispose: jest.fn(), + dispose: vi.fn(), }; disposables.track(item1); - const item2 = jest.fn(); + const item2 = vi.fn(); disposables.track(item2); disposables.dispose(); @@ -38,7 +39,7 @@ describe("Disposable", () => { const disposables = new Disposables(); disposables.dispose(); expect(() => { - disposables.track(jest.fn); + disposables.track(vi.fn); }).toThrow(); }); @@ -46,7 +47,7 @@ describe("Disposable", () => { const disposables = new Disposables(); const emitter = new EventEmitter(); - const fn = jest.fn(); + const fn = vi.fn(); disposables.trackListener(emitter, "FooEvent", fn); emitter.emit("FooEvent"); expect(fn).toHaveBeenCalled(); diff --git a/packages/shared-components/src/viewmodel/tests/Snapshot.test.ts b/packages/shared-components/src/viewmodel/tests/Snapshot.test.ts index 82cacfc02e..d731898fc0 100644 --- a/packages/shared-components/src/viewmodel/tests/Snapshot.test.ts +++ b/packages/shared-components/src/viewmodel/tests/Snapshot.test.ts @@ -5,6 +5,8 @@ SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Com Please see LICENSE files in the repository root for full details. */ +import { describe, it, vi, expect } from "vitest"; + import { Snapshot } from ".."; interface TestSnapshot { @@ -15,26 +17,26 @@ interface TestSnapshot { describe("Snapshot", () => { it("should accept an initial value", () => { - const snapshot = new Snapshot({ key1: "foo", key2: 5, key3: false }, jest.fn()); + const snapshot = new Snapshot({ key1: "foo", key2: 5, key3: false }, vi.fn()); expect(snapshot.current).toStrictEqual({ key1: "foo", key2: 5, key3: false }); }); it("should call emit callback when state changes", () => { - const emit = jest.fn(); + const emit = vi.fn(); const snapshot = new Snapshot({ key1: "foo", key2: 5, key3: false }, emit); snapshot.merge({ key3: true }); expect(emit).toHaveBeenCalledTimes(1); }); it("should swap out entire snapshot on set call", () => { - const snapshot = new Snapshot({ key1: "foo", key2: 5, key3: false }, jest.fn()); + const snapshot = new Snapshot({ key1: "foo", key2: 5, key3: false }, vi.fn()); const newValue = { key1: "bar", key2: 8, key3: true }; snapshot.set(newValue); expect(snapshot.current).toStrictEqual(newValue); }); it("should merge partial snapshot on merge call", () => { - const snapshot = new Snapshot({ key1: "foo", key2: 5, key3: false }, jest.fn()); + const snapshot = new Snapshot({ key1: "foo", key2: 5, key3: false }, vi.fn()); snapshot.merge({ key2: 10 }); expect(snapshot.current).toStrictEqual({ key1: "foo", key2: 10, key3: false }); }); diff --git a/packages/shared-components/src/viewmodel/tests/useCreateAutoDisposedViewModel.test.ts b/packages/shared-components/src/viewmodel/tests/useCreateAutoDisposedViewModel.test.ts index 867ee56825..0ff4f59d1d 100644 --- a/packages/shared-components/src/viewmodel/tests/useCreateAutoDisposedViewModel.test.ts +++ b/packages/shared-components/src/viewmodel/tests/useCreateAutoDisposedViewModel.test.ts @@ -4,7 +4,8 @@ SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Com Please see LICENSE files in the repository root for full details. */ -import { renderHook } from "jest-matrix-react"; +import { renderHook } from "@test-utils"; +import { describe, it, expect } from "vitest"; import { BaseViewModel } from "../BaseViewModel"; import { useCreateAutoDisposedViewModel } from "../useCreateAutoDisposedViewModel";