Some checks failed
ci / ci (22, ubuntu-latest) (push) Failing after 6m46s
86 lines
2.4 KiB
TypeScript
86 lines
2.4 KiB
TypeScript
import { describe, it, expect, beforeEach, vi } from 'vitest';
|
|
import { usePocketbase } from '../usePocketbase';
|
|
import PocketBase from 'pocketbase';
|
|
|
|
/**
|
|
* Tests for usePocketbase composable
|
|
*
|
|
* This composable provides a singleton PocketBase client instance.
|
|
*/
|
|
|
|
describe('usePocketbase', () => {
|
|
beforeEach(() => {
|
|
// Reset modules to clear singleton between test suites
|
|
vi.resetModules();
|
|
});
|
|
|
|
describe('Instance Creation', () => {
|
|
it('should return a PocketBase instance', () => {
|
|
const pb = usePocketbase();
|
|
expect(pb).toBeInstanceOf(PocketBase);
|
|
});
|
|
|
|
it('should return the same instance on multiple calls (singleton)', () => {
|
|
const pb1 = usePocketbase();
|
|
const pb2 = usePocketbase();
|
|
expect(pb1).toBe(pb2);
|
|
});
|
|
});
|
|
|
|
describe('Configuration', () => {
|
|
it('should initialize with URL from runtime config or fallback to default', () => {
|
|
const pb = usePocketbase();
|
|
|
|
// Should have a baseURL set (either from config or default)
|
|
expect(pb.baseURL).toBeDefined();
|
|
expect(typeof pb.baseURL).toBe('string');
|
|
expect(pb.baseURL).toMatch(/^https?:\/\//); // Valid URL format
|
|
});
|
|
|
|
it('should use a valid URL format', () => {
|
|
const pb = usePocketbase();
|
|
|
|
// URL should be a valid HTTP/HTTPS URL
|
|
expect(pb.baseURL).toMatch(/^https?:\/\/[\w\d.:]+/);
|
|
});
|
|
});
|
|
|
|
describe('Singleton Behavior', () => {
|
|
it('should maintain singleton across multiple imports', () => {
|
|
const pb1 = usePocketbase();
|
|
const pb2 = usePocketbase();
|
|
const pb3 = usePocketbase();
|
|
|
|
expect(pb1).toBe(pb2);
|
|
expect(pb2).toBe(pb3);
|
|
});
|
|
|
|
it('should share auth state across all consumers', () => {
|
|
const pb1 = usePocketbase();
|
|
const pb2 = usePocketbase();
|
|
|
|
// Both should share the same authStore
|
|
expect(pb1.authStore).toBe(pb2.authStore);
|
|
});
|
|
});
|
|
|
|
describe('PocketBase Features', () => {
|
|
it('should have authStore available', () => {
|
|
const pb = usePocketbase();
|
|
expect(pb.authStore).toBeDefined();
|
|
});
|
|
|
|
it('should have collection method available', () => {
|
|
const pb = usePocketbase();
|
|
expect(pb.collection).toBeDefined();
|
|
expect(typeof pb.collection).toBe('function');
|
|
});
|
|
|
|
it('should be able to access collections', () => {
|
|
const pb = usePocketbase();
|
|
const usersCollection = pb.collection('users');
|
|
expect(usersCollection).toBeDefined();
|
|
});
|
|
});
|
|
});
|