std/expect/_object_containing_test.ts

65 lines
2.0 KiB
TypeScript

// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
import { Buffer } from "node:buffer";
import { Buffer as DenoBuffer } from "@std/io/buffer";
import { expect } from "./expect.ts";
Deno.test("expect.objectContaining()", () => {
expect({ bar: "baz" }).toEqual(expect.objectContaining({ bar: "baz" }));
expect({ foo: undefined }).toEqual(
expect.objectContaining({ foo: undefined }),
);
expect({ bar: "baz" }).not.toEqual(expect.objectContaining({ foo: "bar" }));
});
Deno.test("expect.objectContaining() with nested objects", () => {
expect({ foo: { bar: "baz" } }).toEqual(
expect.objectContaining({ foo: { bar: "baz" } }),
);
expect({ foo: { bar: "baz" } }).not.toEqual(
expect.objectContaining({ foo: { bar: "bar" } }),
);
});
Deno.test("expect.objectContaining() with symbols", () => {
const foo = Symbol("foo");
expect({ [foo]: { bar: "baz" } }).toEqual(
expect.objectContaining({ [foo]: { bar: "baz" } }),
);
});
Deno.test("expect.objectContaining() with nested arrays", () => {
expect({ foo: ["bar", "baz"] }).toEqual(
expect.objectContaining({ foo: ["bar", "baz"] }),
);
expect({ foo: ["bar", "baz"] }).not.toEqual(
expect.objectContaining({ foo: ["bar", "bar"] }),
);
});
Deno.test("expect.objectContaining() with Node Buffer", () => {
expect({ foo: Buffer.from("foo") }).toEqual(
expect.objectContaining({ foo: Buffer.from("foo") }),
);
});
Deno.test("expect.objectContaining() with Deno Buffer", () => {
expect({ foo: new DenoBuffer([1, 2, 3]) }).toEqual(
expect.objectContaining({ foo: new DenoBuffer([1, 2, 3]) }),
);
});
Deno.test("expect.not.objectContaining()", () => {
expect({ bar: "baz" }).toEqual(expect.not.objectContaining({ foo: "bar" }));
expect({ foo: ["bar", "baz"] }).toEqual(
expect.not.objectContaining({ foo: ["bar", "bar"] }),
);
});
Deno.test("expect.not.objectContaining() with symbols", () => {
const foo = Symbol("foo");
expect({ [foo]: { bar: "baz" } }).toEqual(
expect.objectContaining({ [foo]: { bar: "bazzzz" } }),
);
});