msw-postgrest
TypeScript icon, indicating that this package has built-in type declarations

0.1.2 • Public • Published

msw-postgrest

Mock Postgrest/Supabase database server with Mock Service Worker (MSW)

Usage:

import { PostgrestClient } from "@supabase/postgrest-js";
import { setupServer } from "msw/node";
import {
  afterAll,
  afterEach,
  beforeAll,
  beforeEach,
  describe,
  expect,
  it,
} from "vitest";
import { mswPostgrest } from "msw-postgrest";

const POSTGREST_URL = "http://localhost";

const { mock, workers } = mswPostgrest({ postgrestUrl: POSTGREST_URL });
const server = setupServer(...workers);

// Ideally you'd move this to a setupTests file
beforeAll(() => server.listen());
afterEach(() => server.resetHandlers());
afterAll(() => server.close());

describe("msw-postgrest", () => {
  const postgrest = new PostgrestClient(POSTGREST_URL);

  describe("insertions", () => {
    it("insert single items", async () => {
      mock
        .from("shops")
        .insert()
        .select("id, address")
        .reply(() => [{ id: 2, address: "foo" }]);

      const res = await postgrest
        .from("shops")
        .insert({ address: "foo" })
        .select("id, address");

      expect(res.data).toEqual([{ id: 2, address: "foo" }]);
    });
  });
});

Usage (supabase):

import { createClient } from "@supabase/supabase-js";
import { setupServer } from "msw/node";
import {
  afterAll,
  afterEach,
  beforeAll,
  beforeEach,
  describe,
  expect,
  it,
} from "vitest";
import { mswPostgrest } from "msw-postgrest";

const SUPABASE_URL = "http://localhost";

const { mock, workers } = mswPostgrest({
  postgrestUrl: `${SUPABASE_URL}/rest/v1`,
});
const server = setupServer(...workers);

// Ideally you'd move this to a setupTests file
beforeAll(() => server.listen());
afterEach(() => server.resetHandlers());
afterAll(() => server.close());

describe("msw-postgrest", () => {
  const supa = createClient(SUPABASE_URL, "foobar");

  describe("insertions", () => {
    it("insert single items", async () => {
      mock
        .from("shops")
        .insert()
        .select("id, address")
        .reply(() => [{ id: 2, address: "foo" }]);

      const res = await supa
        .from("shops")
        .insert({ address: "foo" })
        .select("id, address");

      expect(res.data).toEqual([{ id: 2, address: "foo" }]);
    });
  });
});

Readme

Keywords

none

Package Sidebar

Install

npm i msw-postgrest

Weekly Downloads

3

Version

0.1.2

License

MIT

Unpacked Size

39.8 kB

Total Files

6

Last publish

Collaborators

  • wyozi