UNPKG

@developers-joyride/shortify

Version:

High performance URL shortener library with multi-database support (MongoDB, SQLite, PostgreSQL, MySQL)

48 lines (43 loc) 1.47 kB
import { ShortenerService } from "../src/services/shortener.service"; import { IDatabaseAdapter } from "../src/interfaces/database.interface"; // Mock database adapter for testing class MockDatabaseAdapter implements IDatabaseAdapter { async connect(): Promise<boolean> { return true; } async disconnect(): Promise<void> {} isConnected(): boolean { return true; } async createUrl(url: any): Promise<any> { return { ...url, createdAt: new Date() }; } async findUrlByUrlId(urlId: string): Promise<any> { return null; } async findUrlByOriginalUrl(originalUrl: string): Promise<any> { return null; } async updateUrlClicks(urlId: string, clicks: number): Promise<void> {} async deleteUrl(urlId: string): Promise<boolean> { return true; } on(event: string, listener: (...args: any[]) => void): this { return this; } emit(event: string, ...args: any[]): boolean { return true; } } describe("Shortify Package", () => { const mockDbAdapter = new MockDatabaseAdapter(); it("should create a ShortenerService", () => { const service = new ShortenerService("https://example.com/", mockDbAdapter); expect(service).toBeDefined(); }); it("should have the correct baseUrl format", () => { const service = new ShortenerService("https://example.com", mockDbAdapter); // @ts-ignore - accessing private property for testing expect(service["baseUrl"]).toBe("https://example.com/"); }); });