@developers-joyride/shortify
Version:
High performance URL shortener library with multi-database support (MongoDB, SQLite, PostgreSQL, MySQL)
48 lines (43 loc) • 1.47 kB
text/typescript
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/");
});
});