#!/usr/bin/env python3
"""Quick install verification for jb_ai_assistant."""
# Run: docker exec odoo_app python3 /mnt/work_scripts/jb_ai_assistant/test_module.py

import odoo
from odoo import api, SUPERUSER_ID

odoo.tools.config.parse_config(['-d', 'odoo', '--no-http'])
registry = odoo.registry('odoo')

with registry.cursor() as cr:
    env = api.Environment(cr, SUPERUSER_ID, {})

    models = env['jb.ai.model'].search([])
    print('MODELS:', [(m.name, m.technical_name, m.is_default) for m in models])
    assert len(models) >= 2, 'Expected seeded models'

    boot = env['jb.ai.conversation'].get_bootstrap()
    print('BOOTSTRAP keys:', sorted(boot.keys()))
    assert 'bot_name' in boot and 'conversations' in boot

    conv = env['jb.ai.conversation'].create_conversation()
    print('CONV:', conv['id'], conv['name'])
    admin_conv_id = conv['id']

    partner = env['res.partner'].search([('email', '=', 'aitest@example.com')], limit=1)
    if not partner:
        partner = env['res.partner'].create({'name': 'AI Test User', 'email': 'aitest@example.com'})
    user2 = env['res.users'].search([('login', '=', 'aitest@example.com')], limit=1)
    if not user2:
        user2 = env['res.users'].create({
            'name': 'AI Test User',
            'login': 'aitest@example.com',
            'password': 'aitest123',
            'groups_id': [(6, 0, [env.ref('base.group_user').id])],
            'partner_id': partner.id,
        })

    user2_env = api.Environment(cr, user2.id, {})
    user2_convs = user2_env['jb.ai.conversation'].search([])
    print('USER2 conv count (expect 0):', len(user2_convs))
    assert len(user2_convs) == 0, 'User2 should not see admin conversations'

    user2_conv = user2_env['jb.ai.conversation'].create_conversation()
    print('USER2 conv:', user2_conv['id'])

    admin_convs = env['jb.ai.conversation'].search([])
    print('ADMIN conv count (expect >=2):', len(admin_convs))
    assert len(admin_convs) >= 2

    user2_boot = user2_env['jb.ai.conversation'].get_bootstrap()
    print('USER2 boot conversations:', len(user2_boot['conversations']))
    assert len(user2_boot['conversations']) == 1

    cr.rollback()
    print('ALL TESTS PASSED')
