Initial commit: Clean Mold Cost Calculator application
- Flask-based mold cost calculation application - PostgreSQL database with SQLAlchemy ORM - Docker/Podman containerization - Comprehensive documentation in docs/ - Clean, organized codebase without obsolete files - Production-ready deployment configuration - Enhanced pytest configuration with coverage reporting - Master/Development branch structure
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
import pytest
|
||||
from app import create_app, db
|
||||
from app.models import User
|
||||
from app.config import TestingConfig
|
||||
|
||||
@pytest.fixture(scope='session')
|
||||
def app():
|
||||
"""Create and configure a Flask app for testing."""
|
||||
app = create_app(TestingConfig)
|
||||
|
||||
# Create the database and load test data
|
||||
with app.app_context():
|
||||
db.create_all()
|
||||
yield app
|
||||
db.session.remove()
|
||||
db.drop_all()
|
||||
|
||||
@pytest.fixture(scope='session')
|
||||
def client(app):
|
||||
"""A test client for the app."""
|
||||
return app.test_client()
|
||||
|
||||
@pytest.fixture(scope='session')
|
||||
def runner(app):
|
||||
"""A test CLI runner for the app."""
|
||||
return app.test_cli_runner()
|
||||
|
||||
@pytest.fixture(scope='function')
|
||||
def test_db(app):
|
||||
"""Create a fresh database for each test."""
|
||||
with app.app_context():
|
||||
db.create_all()
|
||||
yield db
|
||||
db.session.remove()
|
||||
db.drop_all()
|
||||
|
||||
@pytest.fixture
|
||||
def test_user(app):
|
||||
"""Create a test user."""
|
||||
with app.app_context():
|
||||
user = User.create(
|
||||
username='testuser',
|
||||
email='test@example.com',
|
||||
company='Test Company',
|
||||
password='Test123!'
|
||||
)
|
||||
db.session.commit()
|
||||
return user
|
||||
|
||||
@pytest.fixture
|
||||
def test_admin(app):
|
||||
"""Create a test admin user."""
|
||||
with app.app_context():
|
||||
admin = User.create(
|
||||
username='admin',
|
||||
email='admin@example.com',
|
||||
company='Admin Company',
|
||||
password='Admin123!'
|
||||
)
|
||||
admin.is_admin = True
|
||||
db.session.commit()
|
||||
return admin
|
||||
|
||||
@pytest.fixture
|
||||
def auth_client(client, test_user):
|
||||
"""A test client that is authenticated."""
|
||||
client.post('/login', data={
|
||||
'email': 'test@example.com',
|
||||
'password': 'Test123!',
|
||||
'remember_me': False
|
||||
})
|
||||
return client
|
||||
|
||||
@pytest.fixture
|
||||
def admin_client(client, test_admin):
|
||||
"""A test client that is authenticated as admin."""
|
||||
client.post('/login', data={
|
||||
'email': 'admin@example.com',
|
||||
'password': 'Admin123!',
|
||||
'remember_me': False
|
||||
})
|
||||
return client
|
||||
Reference in New Issue
Block a user