Coverage for src/tests/test_models.py: 95%
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1from datetime import date, datetime
2from unittest.mock import patch
4from couchers.models import User
7class FakeDate(date):
8 """A fake replacement for date that can be mocked for testing."""
10 def __new__(cls, *args, **kwargs):
11 return date.__new__(date, *args, **kwargs)
14@patch("couchers.models.date", FakeDate)
15def test_user_age():
16 FakeDate.today = classmethod(lambda cls: date(2019, 7, 5))
17 assert User(birthdate=date(1990, 7, 4)).age == 29
18 assert User(birthdate=date(1990, 7, 31)).age == 28
19 assert User(birthdate=date(1992, 2, 29)).age == 27
22def test_user_display_joined():
23 assert User(joined=datetime(2020, 7, 10, 16, 34, 1, 1)).display_joined == datetime(2020, 7, 10, 16, 0, 0, 0)
24 assert User(joined=datetime(2025, 7, 10, 16, 59, 1, 1)).display_joined == datetime(2025, 7, 10, 16, 0, 0, 0)
25 assert User(joined=datetime(2020, 7, 10, 16, 0, 1, 1)).display_joined == datetime(2020, 7, 10, 16, 0, 0, 0)
26 assert User(joined=datetime(2020, 7, 10, 0, 0, 0, 0)).display_joined == datetime(2020, 7, 10, 0, 0, 0, 0)
29def test_user_display_last_active():
30 assert User(last_active=datetime(2020, 7, 10, 16, 34, 1, 1)).display_last_active == datetime(
31 2020, 7, 10, 16, 0, 0, 0
32 )
33 assert User(last_active=datetime(2025, 7, 10, 17, 59, 1, 1)).display_last_active == datetime(
34 2025, 7, 10, 17, 0, 0, 0
35 )
36 assert User(last_active=datetime(2020, 7, 10, 16, 0, 1, 1)).display_last_active == datetime(
37 2020, 7, 10, 16, 0, 0, 0
38 )
39 assert User(last_active=datetime(2020, 7, 10, 0, 0, 0, 0)).display_last_active == datetime(2020, 7, 10, 0, 0, 0, 0)