Coverage for app/backend/src/tests/test_dummy_data.py: 100%
22 statements
« prev ^ index » next coverage.py v7.17.0, created at 2026-11-03 11:56 +0000
« prev ^ index » next coverage.py v7.17.0, created at 2026-11-03 11:56 +0000
1from pathlib import Path
3from google.protobuf import empty_pb2
4from sqlalchemy import select
6from couchers.db import session_scope
7from couchers.helpers.completed_profile import has_completed_profile
8from couchers.jobs.handlers import check_database_consistency
9from couchers.models import Upload, User
10from couchers.resources import copy_resources_to_database
11from dummy_data import add_dummy_data
14def test_add_dummy_data(db, caplog, fast_passwords):
15 # copy the real resources to the database: this way if the testing resources go out of date with the real ones
16 # causing dummy data to fail, we'll catch it easily
17 with session_scope() as session:
18 copy_resources_to_database(session)
20 add_dummy_data()
21 assert len(caplog.records) == 0
23 # dummy data must not leave the database in an inconsistent state (raises DatabaseInconsistencyError otherwise)
24 check_database_consistency(empty_pb2.Empty())
26 with session_scope() as session:
27 users = session.execute(select(User)).scalars().all()
28 assert all(has_completed_profile(session, user) for user in users)
30 uploads = session.execute(select(Upload).where(Upload.key.like("dummy-%-avatar"))).scalars().all()
31 image_dir = Path(__file__).parent.parent / "data" / "dummy_profile_images"
32 assert len(uploads) == len(users)
33 assert all((image_dir / upload.filename).is_file() for upload in uploads)