supabase-mock-fetch
v0.0.0-alpha.2
Published
A mock fetch implementation for testing Supabase queries
Maintainers
Readme
supabase-mock-fetch
A utility library that provides a mock implementation of Supabase's fetch API for testing purposes. It simulates database operations and request handling with a Map-based in-memory store.
Installation
# Using bun
bun add -d supabase-mock-fetch
# Using npm
npm i -D supabase-mock-fetch
# Using yarn
yarn add -D supabase-mock-fetchUsage
Basic Example
import { createSupabaseMockFetch } from 'supabase-mock-fetch'
// Create a mock fetch with initial data
const mockFetch = createSupabaseMockFetch({
initialData: {
users: [
{ id: 1, name: 'John' },
{ id: 2, name: 'Jane' }
],
posts: [
{ id: 1, title: 'Hello World', user_id: 1 }
]
}
});
// Use in place of actual fetch
const response = await mockFetch('https://api.supabase.com/users?select=*');
const data = await response.json();Query Features
The mock implementation supports various Supabase query features:
Filtering
// Supports operators like eq, neq, gt, lt, in, etc.
const response = await mockFetch('https://api.supabase.com/users?age=gte.18&status=in.(active,pending)');Sorting
// Order by one or more columns
const response = await mockFetch('https://api.supabase.com/users?order=created_at.desc,id.asc');Pagination
// Limit and offset support
const response = await mockFetch('https://api.supabase.com/users?limit=10&offset=20');Column Selection and Relationships
// Select specific columns and nested relationships
const response = await mockFetch('https://api.supabase.com/users?select=id,name,profile(details)');Database Operations
The mock supports all standard HTTP methods for database operations:
// GET - Fetch data
await mockFetch('https://api.supabase.com/users?select=*');
// POST - Insert data
await mockFetch('https://api.supabase.com/users', {
method: 'POST',
body: JSON.stringify({ name: 'New User' })
});
// PATCH - Update data
await mockFetch('https://api.supabase.com/users?id=eq.1', {
method: 'PATCH',
body: JSON.stringify({ name: 'Updated Name' })
});
// DELETE - Remove data
await mockFetch('https://api.supabase.com/users?id=eq.1', {
method: 'DELETE'
});Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT
