from src.assistant_tool.wiki_db import get_wiki_db


def test_wiki_db_connection():
    db = get_wiki_db()
    conn = db.connect()
    assert conn is not None

def test_wiki_db_item_lookup():
    db = get_wiki_db()
    # 1. Tra cứu Divine Orb
    divine = db.get_item_info("Divine Orb")
    assert divine is not None
    assert divine["name"] == "Divine Orb"
    assert divine["width"] == 1
    assert divine["height"] == 1
    assert divine["is_currency"] is True

    # 2. Tra cứu Scroll of Wisdom
    scroll = db.get_item_info("Scroll of Wisdom")
    assert scroll is not None
    assert scroll["width"] == 1
    assert scroll["height"] == 1

    # 3. Tra cứu Waystone
    waystone = db.get_item_info("Waystone")
    assert waystone is not None
    assert "Waystone" in waystone["name"]
    assert waystone["item_class"] == "Map"

def test_wiki_db_area_lookup():
    db = get_wiki_db()
    # 1. Tra cứu The Riverbank
    riverbank = db.get_area_info("The Riverbank")
    assert riverbank is not None
    assert riverbank["name"] == "The Riverbank"
    assert riverbank["act"] == 1

    # 2. Tra cứu Hideout
    hideout = db.get_area_info("PersonalHideout")
    assert hideout is not None
    assert "Hideout" in hideout["name"]

def test_wiki_db_inventory_footprint():
    db = get_wiki_db()
    items = ["Divine Orb", "Scroll of Wisdom", "Long Quarterstaff"]
    footprint = db.calculate_inventory_footprint(items)
    assert footprint["fits_in_standard_grid"] is True
    assert footprint["total_slots_needed"] >= 10
    assert len(footprint["items"]) == 3


def test_wiki_db_poe2_055_forbidden_rites_items():
    """Patch 0.5.5 (04/09/2026): new Soul Cores + Sacred Bloom Ritual atlas currency."""
    db = get_wiki_db()
    core = db.get_item_info("Jiquani's Soul Core of Abundance")
    assert core is not None
    assert core["name"] == "Jiquani's Soul Core of Abundance"
    assert core["width"] == 1 and core["height"] == 1
    atziri = db.get_item_info("Atziri's Soul Core of Vitality")
    assert atziri is not None
    bloom = db.get_item_info("Sacred Bloom")
    assert bloom is not None
    assert bloom["name"] == "Sacred Bloom"
