|
|
|
from unittest.mock import patch
|
|
|
|
|
|
|
|
import pytest
|
|
|
|
from flask_login.test_client import FlaskLoginClient
|
|
|
|
|
|
|
|
from htmx_contact import create_app
|
|
|
|
from htmx_contact.config import ContactSettings
|
|
|
|
from htmx_contact.models import User
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture()
|
|
|
|
def test_config():
|
|
|
|
return ContactSettings(SECRET_KEY=b"secrettestingvalue")
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture()
|
|
|
|
def test_user():
|
|
|
|
return User(id=1, primary_email="test", password="test", username="test")
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture()
|
|
|
|
def app(test_config):
|
|
|
|
app = create_app(config=test_config)
|
|
|
|
app.test_client_class = FlaskLoginClient
|
|
|
|
app.config.update(
|
|
|
|
{
|
|
|
|
"TESTING": True,
|
|
|
|
}
|
|
|
|
)
|
|
|
|
|
|
|
|
# other setup can go here
|
|
|
|
|
|
|
|
yield app
|
|
|
|
|
|
|
|
# clean up / reset resources here
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture()
|
|
|
|
def anynomous_client(app):
|
|
|
|
return app.test_client()
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture()
|
|
|
|
def client(app, test_user):
|
|
|
|
return app.test_client(user=test_user)
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture()
|
|
|
|
def runner(app):
|
|
|
|
return app.test_cli_runner()
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture()
|
|
|
|
def sqla_session():
|
|
|
|
with patch("htmx_contact.Session") as ms:
|
|
|
|
yield ms
|