import pytest
from app import create_app
from config import TestingConfig
from app.extensions import db
from app.models import Role, User, NewsCategory

@pytest.fixture
def app():
    app = create_app(TestingConfig)
    with app.app_context():
        db.create_all()
        for name in ["super_admin","content_admin","editor","contributor"]:
            db.session.add(Role(name=name))
        db.session.add(NewsCategory(name="Akademik",slug="akademik"))
        db.session.commit()
        yield app
        db.session.remove()
        db.drop_all()

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

@pytest.fixture
def admin(app):
    with app.app_context():
        user=User(username="root",email="root@example.test",full_name="Admin Test")
        user.set_password("Strong-test-password-2026")
        user.roles.append(Role.query.filter_by(name="super_admin").first())
        db.session.add(user); db.session.commit()
        return user
