"""Tests for prefix-claiming DM messages."""

import pytest

from app.repository import ContactRepository, MessageRepository


@pytest.mark.asyncio
async def test_claim_prefix_promotes_dm_to_full_key(test_db):
    full_key = "a1b2c3d3ba9f5fa8705b9845fe11cc6f01d1d49caaf4d122ac7121663c5beec7"
    prefix = full_key[:6].upper()

    # Create the contact so the claim safety check (exactly 1 contact matches prefix) passes
    await ContactRepository.upsert({"public_key": full_key, "name": "Test"})

    msg_id = await MessageRepository.create(
        msg_type="PRIV",
        text="hello",
        conversation_key=prefix,
        sender_timestamp=123,
        received_at=123,
    )
    assert msg_id is not None

    updated = await MessageRepository.claim_prefix_messages(full_key)
    assert updated == 1

    messages = await MessageRepository.get_all(
        msg_type="PRIV",
        conversation_key=full_key,
        limit=10,
    )
    assert len(messages) == 1
    assert messages[0].conversation_key == full_key.lower()
