Skip to main content
Glama
commercial-area.test.ts1.71 kB
import { describe, it, expect, vi, beforeEach } from "vitest"; import { analyzeCommercialArea } from "../tools/commercial-area.js"; // kakaoApi 모킹 vi.mock("../api/kakao-api.js", () => ({ kakaoApi: { getCoordinates: vi.fn(), countByCategories: vi.fn(), findCompetitors: vi.fn(), }, })); import { kakaoApi } from "../api/kakao-api.js"; describe("analyzeCommercialArea", () => { beforeEach(() => { vi.clearAllMocks(); }); it("should return error when location not found", async () => { vi.mocked(kakaoApi.getCoordinates).mockResolvedValue(null); const result = await analyzeCommercialArea("존재하지않는장소", "카페", 500); expect(result.success).toBe(false); expect(result.error?.code).toBe("LOCATION_NOT_FOUND"); }); it("should analyze commercial area successfully", async () => { vi.mocked(kakaoApi.getCoordinates).mockResolvedValue({ lat: 37.497942, lng: 127.027619, }); vi.mocked(kakaoApi.countByCategories).mockResolvedValue({ 음식점: 15, 카페: 10, 편의점: 3, 대형마트: 1, }); vi.mocked(kakaoApi.findCompetitors).mockResolvedValue([ { id: "1", name: "스타벅스", category: "카페", address: "강남구", distance: 50 }, { id: "2", name: "투썸", category: "카페", address: "강남구", distance: 100 }, ]); const result = await analyzeCommercialArea("강남역", "카페", 500); expect(result.success).toBe(true); expect(result.data).toBeDefined(); expect(result.data?.location.name).toBe("강남역"); expect(result.data?.density.totalStores).toBe(29); expect(result.data?.density.sameCategoryCount).toBe(2); }); });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/re171113-byte/startup-helper-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server