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

1from pathlib import Path 

2 

3from google.protobuf import empty_pb2 

4from sqlalchemy import select 

5 

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 

12 

13 

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) 

19 

20 add_dummy_data() 

21 assert len(caplog.records) == 0 

22 

23 # dummy data must not leave the database in an inconsistent state (raises DatabaseInconsistencyError otherwise) 

24 check_database_consistency(empty_pb2.Empty()) 

25 

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) 

29 

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)