UNPKG

alepha

Version:

Easy-to-use modern TypeScript framework for building many kind of applications.

98 lines (73 loc) 3.52 kB
import { Alepha } from "alepha"; import { FileSystemProvider, MemoryFileSystemProvider, MemoryShellProvider, ShellProvider, } from "alepha/system"; import { describe, expect, it } from "vitest"; import { ProjectScaffolder } from "../services/ProjectScaffolder.ts"; describe("ProjectScaffolder", () => { const createTestEnv = () => { const alepha = Alepha.create() .with({ provide: FileSystemProvider, use: MemoryFileSystemProvider }) .with({ provide: ShellProvider, use: MemoryShellProvider }); const scaffolder = alepha.inject(ProjectScaffolder); return { alepha, scaffolder }; }; // ───────────────────────────────────────────────────────────────────────────── // getAppName // ───────────────────────────────────────────────────────────────────────────── describe("getAppName", () => { it("should return lowercase directory name", () => { const { scaffolder } = createTestEnv(); expect(scaffolder.getAppName("/project/MyApp")).toBe("myapp"); }); it("should remove dashes from directory name", () => { const { scaffolder } = createTestEnv(); expect(scaffolder.getAppName("/project/my-cool-app")).toBe("mycoolapp"); }); it("should remove underscores from directory name", () => { const { scaffolder } = createTestEnv(); expect(scaffolder.getAppName("/project/my_cool_app")).toBe("mycoolapp"); }); it("should remove spaces from directory name", () => { const { scaffolder } = createTestEnv(); expect(scaffolder.getAppName("/project/my cool app")).toBe("mycoolapp"); }); it("should remove dots from directory name", () => { const { scaffolder } = createTestEnv(); expect(scaffolder.getAppName("/project/my.cool.app")).toBe("mycoolapp"); }); it("should remove digits from directory name", () => { const { scaffolder } = createTestEnv(); expect(scaffolder.getAppName("/project/app123")).toBe("app"); expect(scaffolder.getAppName("/project/my2app")).toBe("myapp"); expect(scaffolder.getAppName("/project/v2-app")).toBe("vapp"); }); it("should handle combination of special characters", () => { const { scaffolder } = createTestEnv(); expect(scaffolder.getAppName("/project/my-cool_app.v2")).toBe( "mycoolappv", ); expect(scaffolder.getAppName("/project/test_app-2.0")).toBe("testapp"); }); it("should fallback to 'app' when all characters are removed", () => { const { scaffolder } = createTestEnv(); expect(scaffolder.getAppName("/project/123")).toBe("app"); expect(scaffolder.getAppName("/project/---")).toBe("app"); expect(scaffolder.getAppName("/project/1.2.3")).toBe("app"); expect(scaffolder.getAppName("/project/_-._")).toBe("app"); }); it("should handle deeply nested paths", () => { const { scaffolder } = createTestEnv(); expect(scaffolder.getAppName("/workspace/packages/apps/my-app")).toBe( "myapp", ); }); it("should handle root-level directories", () => { const { scaffolder } = createTestEnv(); expect(scaffolder.getAppName("/myapp")).toBe("myapp"); }); }); });