Coverage for app/backend/src/tests/test_resources.py: 100%

63 statements  

« prev     ^ index     » next       coverage.py v7.14.3, created at 2026-06-28 21:22 +0000

1import pytest 

2from google.protobuf import empty_pb2 

3 

4from tests.fixtures.sessions import resources_session 

5 

6 

7@pytest.fixture(autouse=True) 

8def _(testconfig): 

9 pass 

10 

11 

12def test_GetTermsOfService(): 

13 # make sure it works and we get out a bunch of text 

14 with resources_session() as api: 

15 res = api.GetTermsOfService(empty_pb2.Empty()).terms_of_service 

16 assert len(res) > 100 

17 assert "couchers, inc." in res.lower() 

18 

19 

20def test_GetCommunityGuidelines(): 

21 # make sure it works and we get out a bunch of text 

22 with resources_session() as api: 

23 res = api.GetCommunityGuidelines(empty_pb2.Empty()).community_guidelines 

24 assert len(res) == 4 

25 assert res[2].title == "Be safe and sensible" 

26 assert "inappropriate content" in res[2].guideline 

27 assert "stroke" in res[2].icon_svg 

28 

29 

30def test_GetRegions(db): 

31 with resources_session() as api: 

32 regions = api.GetRegions(empty_pb2.Empty()).regions 

33 regions_list = [(r.alpha3, r.name) for r in regions] 

34 assert ("FIN", "Finland") in regions_list 

35 assert ("SWE", "Sweden") in regions_list 

36 assert ("???", "Nonexistent region") not in regions_list 

37 

38 with resources_session(locale="es") as api: 

39 regions = api.GetRegions(empty_pb2.Empty()).regions 

40 regions_list = [(r.alpha3, r.name) for r in regions] 

41 assert ("FIN", "Finlandia") in regions_list 

42 assert ("FIN", "Finland") not in regions_list 

43 

44 

45def test_GetLanguages(db): 

46 with resources_session() as api: 

47 languages = api.GetLanguages(empty_pb2.Empty()).languages 

48 languages_list = [(r.code, r.name) for r in languages] 

49 assert ("fin", "Finnish") in languages_list 

50 assert ("swe", "Swedish") in languages_list 

51 assert ("???", "Nonexistent language") not in languages_list 

52 

53 with resources_session(locale="es") as api: 

54 languages = api.GetLanguages(empty_pb2.Empty()).languages 

55 languages_list = [(r.code, r.name) for r in languages] 

56 assert ("swe", "Sueco") in languages_list 

57 assert ("swe", "Swedish") not in languages_list 

58 

59 

60def test_GetBadges(db): 

61 with resources_session() as api: 

62 badges = api.GetBadges(empty_pb2.Empty()).badges 

63 badges_dict = {b.id: b for b in badges} 

64 

65 # Check that all expected badges are present 

66 expected_badge_ids = { 

67 "founder", 

68 "board_member", 

69 "past_board_member", 

70 "moderator", 

71 "volunteer", 

72 "past_volunteer", 

73 "donor", 

74 "phone_verified", 

75 "strong_verification", 

76 "swagster", 

77 } 

78 assert set(badges_dict.keys()) == expected_badge_ids 

79 

80 # Check that a specific badge has the correct properties 

81 founder = badges_dict["founder"] 

82 assert founder.id == "founder" 

83 assert founder.name == "Founder" 

84 assert founder.description == "This user is one of the two founders of Couchers.org" 

85 assert founder.color == "#e47701" 

86 

87 # Check another badge to ensure translations are working 

88 moderator = badges_dict["moderator"] 

89 assert moderator.id == "moderator" 

90 assert moderator.name == "Moderator" 

91 assert moderator.description == "This user is a moderator of Couchers.org" 

92 assert moderator.color == "#c74f5b" 

93 

94 # Check strong_verification badge 

95 strong_verification = badges_dict["strong_verification"] 

96 assert strong_verification.id == "strong_verification" 

97 assert strong_verification.name == "Strong Verification" 

98 assert ( 

99 strong_verification.description 

100 == "This user has verified their gender and date of birth with a biometric passport" 

101 ) 

102 assert strong_verification.color == "#1b8aa0"