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
« 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
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 ]
56 def test_process_releases_empty_inputs(self):
57 result = process_releases([], [], [])
58 self.assertEqual(result, {})
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)
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)
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)