"""브랜드커넥트 링크 API 테스트.""" import os import pytest from fastapi.testclient import TestClient @pytest.fixture(autouse=True) def setup_db(tmp_path): test_db = str(tmp_path / "test.db") import app.config as config config.DB_PATH = test_db from app import db db.DB_PATH = test_db db.init_db() yield @pytest.fixture def client(): from app.main import app return TestClient(app) def test_create_link(client): resp = client.post("/api/blog-marketing/links", json={ "keyword_id": 1, "url": "https://link.coupang.com/abc", "product_name": "테스트 상품", "description": "상품 설명", }) assert resp.status_code == 201 data = resp.json() assert data["url"] == "https://link.coupang.com/abc" assert data["product_name"] == "테스트 상품" def test_create_link_requires_url(client): resp = client.post("/api/blog-marketing/links", json={ "product_name": "상품", }) assert resp.status_code == 422 def test_create_link_requires_product_name(client): resp = client.post("/api/blog-marketing/links", json={ "url": "https://a.com", }) assert resp.status_code == 422 def test_list_links_by_keyword_id(client): client.post("/api/blog-marketing/links", json={ "keyword_id": 1, "url": "https://a.com", "product_name": "A", }) client.post("/api/blog-marketing/links", json={ "keyword_id": 2, "url": "https://b.com", "product_name": "B", }) resp = client.get("/api/blog-marketing/links?keyword_id=1") assert resp.status_code == 200 assert len(resp.json()["links"]) == 1 def test_update_link(client): create_resp = client.post("/api/blog-marketing/links", json={ "url": "https://a.com", "product_name": "원래", }) link_id = create_resp.json()["id"] resp = client.put(f"/api/blog-marketing/links/{link_id}", json={ "product_name": "새이름", }) assert resp.status_code == 200 assert resp.json()["product_name"] == "새이름" def test_delete_link(client): create_resp = client.post("/api/blog-marketing/links", json={ "url": "https://a.com", "product_name": "삭제", }) link_id = create_resp.json()["id"] resp = client.delete(f"/api/blog-marketing/links/{link_id}") assert resp.status_code == 200 assert resp.json()["ok"] is True resp = client.delete(f"/api/blog-marketing/links/{link_id}") assert resp.status_code == 404