UNPKG

@developers-joyride/shortify

Version:

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

139 lines (117 loc) 4.21 kB
import Shortify, { DatabaseConfig } from "../src/index"; describe("Collection/Table Name Preservation Tests", () => { const customCollectionName = "MyCustomCollection"; const customTableName = "MyCustomTable"; describe("MongoDB Collection Name Preservation", () => { it("should preserve MongoDB collection name case", async () => { // This test would require a real MongoDB connection // For now, we'll test the configuration is passed correctly const dbConfig: DatabaseConfig = { type: "mongodb", connectionString: "mongodb://localhost:27017/test", collectionName: customCollectionName, }; expect(dbConfig.collectionName).toBe(customCollectionName); }); }); describe("SQLite Table Name Preservation", () => { let shortify: Shortify; beforeAll(async () => { const dbConfig: DatabaseConfig = { type: "sqlite", database: ":memory:", tableName: customTableName, }; shortify = new Shortify("https://test.com", dbConfig); await shortify.connect(); }); afterAll(async () => { if (shortify) { await shortify.disconnect(); } }); it("should preserve SQLite table name case", async () => { // Test that the table name is preserved by creating a URL const result = await shortify.shorten("https://example.com/test"); expect(result).toBeDefined(); expect(result.urlId).toBeDefined(); // The table should be created with the exact name specified // We can't directly verify the table name in SQLite without additional queries, // but if the operations work, it means the table name was preserved correctly }); }); describe("PostgreSQL Table Name Preservation", () => { it("should preserve PostgreSQL table name case", async () => { // This test would require a real PostgreSQL connection // For now, we'll test the configuration is passed correctly const dbConfig: DatabaseConfig = { type: "postgresql", host: "localhost", port: 5432, database: "test", username: "test", password: "test", tableName: customTableName, }; expect(dbConfig.tableName).toBe(customTableName); }); }); describe("MySQL Table Name Preservation", () => { it("should preserve MySQL table name case", async () => { // This test would require a real MySQL connection // For now, we'll test the configuration is passed correctly const dbConfig: DatabaseConfig = { type: "mysql", host: "localhost", port: 3306, database: "test", username: "test", password: "test", tableName: customTableName, }; expect(dbConfig.tableName).toBe(customTableName); }); }); describe("Database Factory Configuration", () => { it("should pass collection name to MongoDB adapter", () => { const dbConfig: DatabaseConfig = { type: "mongodb", connectionString: "mongodb://localhost:27017/test", collectionName: customCollectionName, }; expect(dbConfig.collectionName).toBe(customCollectionName); }); it("should pass table name to SQLite adapter", () => { const dbConfig: DatabaseConfig = { type: "sqlite", database: ":memory:", tableName: customTableName, }; expect(dbConfig.tableName).toBe(customTableName); }); it("should pass table name to PostgreSQL adapter", () => { const dbConfig: DatabaseConfig = { type: "postgresql", host: "localhost", port: 5432, database: "test", username: "test", password: "test", tableName: customTableName, }; expect(dbConfig.tableName).toBe(customTableName); }); it("should pass table name to MySQL adapter", () => { const dbConfig: DatabaseConfig = { type: "mysql", host: "localhost", port: 3306, database: "test", username: "test", password: "test", tableName: customTableName, }; expect(dbConfig.tableName).toBe(customTableName); }); }); });