feat: update tests using vitest

- replace jest references with vitest
This commit is contained in:
Angel Mendez Cano
2024-02-02 19:00:38 -06:00
parent 2a9f6663c1
commit 9a5afb11f6
8 changed files with 21 additions and 33 deletions

View File

@@ -14,6 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
import { vi } from "vitest";
import { screen, render } from "@testing-library/react"; import { screen, render } from "@testing-library/react";
import { Toast } from "../src/Toast"; import { Toast } from "../src/Toast";
import userEvent from "@testing-library/user-event"; import userEvent from "@testing-library/user-event";
@@ -35,7 +36,7 @@ test("Toast renders", () => {
}); });
test("Toast dismisses when clicked", async () => { test("Toast dismisses when clicked", async () => {
const onDismiss = jest.fn(); const onDismiss = vi.fn();
render( render(
<Toast open={true} onDismiss={onDismiss}> <Toast open={true} onDismiss={onDismiss}>
Hello world! Hello world!
@@ -47,13 +48,13 @@ test("Toast dismisses when clicked", async () => {
test("Toast dismisses itself after the specified timeout", async () => { test("Toast dismisses itself after the specified timeout", async () => {
withFakeTimers(() => { withFakeTimers(() => {
const onDismiss = jest.fn(); const onDismiss = vi.fn();
render( render(
<Toast open={true} onDismiss={onDismiss} autoDismiss={2000}> <Toast open={true} onDismiss={onDismiss} autoDismiss={2000}>
Hello world! Hello world!
</Toast>, </Toast>,
); );
jest.advanceTimersByTime(2000); vi.advanceTimersByTime(2000);
expect(onDismiss).toHaveBeenCalled(); expect(onDismiss).toHaveBeenCalled();
}); });
}); });

View File

@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
import { mocked } from "jest-mock"; import { vi } from "vitest";
import { getRoomIdentifierFromUrl } from "../src/UrlParams"; import { getRoomIdentifierFromUrl } from "../src/UrlParams";
import { Config } from "../src/config/Config"; import { Config } from "../src/config/Config";
@@ -24,11 +24,11 @@ const ROOM_ID = "!d45f138fsd";
const ORIGIN = "https://call.element.io"; const ORIGIN = "https://call.element.io";
const HOMESERVER = "call.ems.host"; const HOMESERVER = "call.ems.host";
jest.mock("../src/config/Config"); vi.mock("../src/config/Config");
describe("UrlParams", () => { describe("UrlParams", () => {
beforeAll(() => { beforeAll(() => {
mocked(Config.defaultServerName).mockReturnValue("call.ems.host"); vi.mocked(Config.defaultServerName).mockReturnValue("call.ems.host");
}); });
describe("handles URL with /room/", () => { describe("handles URL with /room/", () => {

View File

@@ -1,4 +1,4 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
exports[`Toast renders 1`] = ` exports[`Toast renders 1`] = `
<button <button

View File

@@ -1,18 +0,0 @@
import { TextEncoder } from "util";
import JSDOMEnvironment_, {
TestEnvironment as TestEnvironment_,
} from "jest-environment-jsdom";
import { JestEnvironmentConfig, EnvironmentContext } from "@jest/environment";
// This is a patched version of jsdom that adds TextEncoder, as a workaround for
// https://github.com/jsdom/jsdom/issues/2524
// Once that issue is resolved, this custom environment file can be deleted
export default class JSDOMEnvironment extends JSDOMEnvironment_ {
constructor(config: JestEnvironmentConfig, context: EnvironmentContext) {
super(config, context);
this.global.TextEncoder ??= TextEncoder;
}
}
export const TestEnvironment =
TestEnvironment_ === JSDOMEnvironment_ ? JSDOMEnvironment : TestEnvironment_;

View File

@@ -1 +1,3 @@
module.exports = { loadOlm: jest.fn(async () => {}) }; import { vi } from "vitest";
module.exports = { loadOlm: vi.fn(async () => {}) };

View File

@@ -1 +1,3 @@
module.exports = jest.fn(); import { vi } from "vitest";
module.exports = vi.fn();

View File

@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
import { Mocked, mocked } from "jest-mock"; import { vi, Mocked } from "vitest";
import { RoomState } from "matrix-js-sdk/src/models/room-state"; import { RoomState } from "matrix-js-sdk/src/models/room-state";
import { PosthogAnalytics } from "../../src/analytics/PosthogAnalytics"; import { PosthogAnalytics } from "../../src/analytics/PosthogAnalytics";
import { checkForParallelCalls } from "../../src/room/checkForParallelCalls"; import { checkForParallelCalls } from "../../src/room/checkForParallelCalls";
@@ -23,10 +23,10 @@ import { withFakeTimers } from "../utils";
const withMockedPosthog = ( const withMockedPosthog = (
continuation: (posthog: Mocked<PosthogAnalytics>) => void, continuation: (posthog: Mocked<PosthogAnalytics>) => void,
) => { ) => {
const posthog = mocked({ const posthog = vi.mocked({
trackEvent: jest.fn(), trackEvent: vi.fn(),
} as unknown as PosthogAnalytics); } as unknown as PosthogAnalytics);
const instanceSpy = jest const instanceSpy = vi
.spyOn(PosthogAnalytics, "instance", "get") .spyOn(PosthogAnalytics, "instance", "get")
.mockReturnValue(posthog); .mockReturnValue(posthog);
try { try {

View File

@@ -13,12 +13,13 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
import { vi } from "vitest";
export function withFakeTimers(continuation: () => void): void { export function withFakeTimers(continuation: () => void): void {
jest.useFakeTimers(); vi.useFakeTimers();
try { try {
continuation(); continuation();
} finally { } finally {
jest.useRealTimers(); vi.useRealTimers();
} }
} }