Coverage for tests/publisher/test_publisher_logic.py: 100%

26 statements  

« prev     ^ index     » next       coverage.py v7.9.1, created at 2025-06-27 22:07 +0000

1from typing import List 

2from unittest import TestCase 

3from webapp.publisher.logic import ( 

4 Revision, 

5 process_releases, 

6 get_all_architectures, 

7) 

8from tests.mock_data.mock_publisher_logic import test_case_basic_flow 

9 

10 

11class TestProcessReleases(TestCase): 

12 def setUp(self): 

13 self.mock_channels = [ 

14 {"name": "latest/stable", "track": "latest", "risk": "stable"}, 

15 {"name": "latest/edge", "track": "latest", "risk": "edge"}, 

16 ] 

17 self.mock_revisions: List[Revision] = [ 

18 { 

19 "revision": 1, 

20 "bases": [ 

21 { 

22 "architecture": "amd64", 

23 "channel": "latest/stable", 

24 "name": "app", 

25 } 

26 ], 

27 "created-at": "2021-01-01T00:00:00Z", 

28 "sha3-384": "samplehash1", 

29 "size": 123456, 

30 "status": "released", 

31 "version": "1.0.0", 

32 "errors": None, 

33 }, 

34 { 

35 "revision": 2, 

36 "bases": [ 

37 { 

38 "architecture": "amd64", 

39 "channel": "latest/edge", 

40 "name": "app", 

41 } 

42 ], 

43 "created-at": "2021-01-02T00:00:00Z", 

44 "sha3-384": "samplehash2", 

45 "size": 654321, 

46 "status": "released", 

47 "version": "2.0.0-beta", 

48 "errors": None, 

49 }, 

50 ] 

51 self.mock_channel_map = [ 

52 {"channel": "latest/stable", "revision": 1, "resources": []}, 

53 {"channel": "latest/edge", "revision": 2, "resources": []}, 

54 ] 

55 

56 def test_process_releases_empty_inputs(self): 

57 result = process_releases([], [], []) 

58 self.assertEqual(result, {}) 

59 

60 def test_process_releases_single_channel_single_revision(self): 

61 expected_output = { 

62 "latest/stable": { 

63 "track": "latest", 

64 "risk": "stable", 

65 "releases": [ 

66 {"revision": self.mock_revisions[0], "resources": []} 

67 ], 

68 } 

69 } 

70 result = process_releases( 

71 self.mock_channel_map[:1], 

72 self.mock_channels[:1], 

73 self.mock_revisions[:1], 

74 ) 

75 self.assertEqual(result, expected_output) 

76 

77 def test_process_releases_multiple_channels_revisions( 

78 self, 

79 ): 

80 expected_output = { 

81 "latest/stable": { 

82 "track": "latest", 

83 "risk": "stable", 

84 "releases": [ 

85 {"revision": self.mock_revisions[0], "resources": []} 

86 ], 

87 }, 

88 "latest/edge": { 

89 "track": "latest", 

90 "risk": "edge", 

91 "releases": [ 

92 {"revision": self.mock_revisions[1], "resources": []} 

93 ], 

94 }, 

95 } 

96 result = process_releases( 

97 self.mock_channel_map, self.mock_channels, self.mock_revisions 

98 ) 

99 self.assertEqual(result, expected_output) 

100 

101 

102class TestGetAllArchitectures(TestCase): 

103 def test_get_all_architectures( 

104 self, 

105 ): 

106 _, releases = test_case_basic_flow 

107 result = get_all_architectures(releases) 

108 expected_result = ["amd64", "arm64", "ppc64el", "riscv64", "s390x"] 

109 self.assertEqual(result, expected_result)