Coverage for tests/publisher/snaps/test_release_status.py: 100%
30 statements
« prev ^ index » next coverage.py v7.14.1, created at 2026-06-15 22:43 +0000
« prev ^ index » next coverage.py v7.14.1, created at 2026-06-15 22:43 +0000
1from unittest.mock import patch
3from canonicalwebteam.exceptions import StoreApiResponseErrorList
5from tests.endpoints.endpoint_testing import TestEndpoints
8class TestGetReleaseStatus(TestEndpoints):
9 snap_name = "test-snap"
10 endpoint_url = f"/api/{snap_name}/release-status"
12 @patch("webapp.publisher.snaps.release_views.dashboard")
13 def test_returns_true_when_revisions_exist(self, mock_dashboard):
14 mock_dashboard.snap_release_history.return_value = {
15 "revisions": [{"revision": 7}],
16 }
18 response = self.client.get(self.endpoint_url)
20 self.assertEqual(200, response.status_code)
21 self.assertEqual({"has_releases": True}, response.get_json())
23 @patch("webapp.publisher.snaps.release_views.dashboard")
24 def test_returns_false_when_no_revisions(self, mock_dashboard):
25 mock_dashboard.snap_release_history.return_value = {"revisions": []}
27 response = self.client.get(self.endpoint_url)
29 self.assertEqual(200, response.status_code)
30 self.assertEqual({"has_releases": False}, response.get_json())
32 @patch("webapp.publisher.snaps.release_views.dashboard")
33 def test_returns_false_for_empty_list_response(self, mock_dashboard):
34 # Some older mocks/tests model the response as a bare list.
35 mock_dashboard.snap_release_history.return_value = []
37 response = self.client.get(self.endpoint_url)
39 self.assertEqual(200, response.status_code)
40 self.assertEqual({"has_releases": False}, response.get_json())
42 @patch("webapp.publisher.snaps.release_views.dashboard")
43 def test_404_when_snap_does_not_exist(self, mock_dashboard):
44 error = StoreApiResponseErrorList(
45 "not found", 404, [{"message": "no snap"}]
46 )
47 mock_dashboard.snap_release_history.side_effect = error
49 response = self.client.get(self.endpoint_url)
51 self.assertEqual(404, response.status_code)