MatteoGabriele/vue-gtag

View on GitHub
test/api/event.spec.js

Summary

Maintainability
A
0 mins
Test Coverage
import { createApp } from "vue";
import event from "@/api/event";
import query from "@/api/query";
import VueGtag from "@/index";

jest.mock("@/api/query");

describe("event", () => {
  afterEach(() => {
    jest.clearAllMocks();
  });

  test("fires an event", () => {
    const app = createApp();

    app.use(VueGtag, {
      config: {
        id: 1,
      },
    });

    event("foobar", { foo: "bar" });

    expect(query).toHaveBeenCalledWith("event", "foobar", { foo: "bar" });
  });

  test("attaches send_to to assign the event to multiple domains", () => {
    const app = createApp();

    app.use(VueGtag, {
      includes: [{ id: 2 }],
      config: {
        id: 1,
      },
    });

    event("foobar", { foo: "bar" });

    expect(query).toHaveBeenCalledWith("event", "foobar", {
      foo: "bar",
      send_to: [2, "default"],
    });
  });

  test("do not overwrite send_to if already set", () => {
    const app = createApp();

    app.use(VueGtag, {
      includes: [{ id: 2 }],
      config: {
        id: 1,
      },
    });

    event("foobar", { foo: "bar", send_to: ["bar"] });

    expect(query).toHaveBeenCalledWith("event", "foobar", {
      foo: "bar",
      send_to: ["bar"],
    });
  });

  test("when using send_to, default group name can be customized", () => {
    const app = createApp();

    app.use(VueGtag, {
      includes: [{ id: 2 }],
      defaultGroupName: "custom_default_group_value",
      config: {
        id: 1,
      },
    });

    event("foobar", { foo: "bar" });

    expect(query).toHaveBeenCalledWith("event", "foobar", {
      foo: "bar",
      send_to: [2, "custom_default_group_value"],
    });
  });
});