"""
Shared fixtures for Shiba Meals test suite.
Run with:  pytest tests/ -v
"""
import os, pytest, tempfile

# Point app at a throwaway DB before importing app
os.environ.setdefault('SECRET_KEY', 'test-secret-key-do-not-use-in-prod')

@pytest.fixture(scope='session')
def app():
    import sys; sys.path.insert(0, os.path.dirname(os.path.dirname(__file__)))
    db_fd, db_path = tempfile.mkstemp(suffix='.db')
    os.environ['DB_PATH'] = db_path
    from app import app as flask_app, init_db, seed_db
    flask_app.config['TESTING'] = True
    flask_app.config['WTF_CSRF_ENABLED'] = False
    with flask_app.app_context():
        init_db()
        seed_db()
    yield flask_app
    os.close(db_fd)
    os.unlink(db_path)

@pytest.fixture
def client(app):
    return app.test_client()

@pytest.fixture
def gm_client(client):
    """Test client pre-logged-in as General Manager."""
    # Bypass login form — set session directly
    from app import app as flask_app
    with flask_app.test_request_context():
        with client.session_transaction() as sess:
            sess['user_id']   = 1
            sess['role']      = 'general_manager'
            sess['name']      = 'General Manager'
            sess['outlet_id'] = 1
            sess['csrf_token'] = 'test-csrf-token'
    client.environ_base['HTTP_X_CSRFTOKEN'] = 'test-csrf-token'
    return client

@pytest.fixture
def cashier_client(client):
    """Test client pre-logged-in as a cashier."""
    from app import app as flask_app
    with flask_app.test_request_context():
        with client.session_transaction() as sess:
            sess['user_id']   = 5   # Tom Otieno from seed data
            sess['role']      = 'cashier'
            sess['name']      = 'Tom Otieno'
            sess['outlet_id'] = 1
            sess['csrf_token'] = 'test-csrf-token'
    client.environ_base['HTTP_X_CSRFTOKEN'] = 'test-csrf-token'
    return client
