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

1from unittest.mock import patch 

2 

3from canonicalwebteam.exceptions import StoreApiResponseErrorList 

4 

5from tests.endpoints.endpoint_testing import TestEndpoints 

6 

7 

8class TestGetReleaseStatus(TestEndpoints): 

9 snap_name = "test-snap" 

10 endpoint_url = f"/api/{snap_name}/release-status" 

11 

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 } 

17 

18 response = self.client.get(self.endpoint_url) 

19 

20 self.assertEqual(200, response.status_code) 

21 self.assertEqual({"has_releases": True}, response.get_json()) 

22 

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": []} 

26 

27 response = self.client.get(self.endpoint_url) 

28 

29 self.assertEqual(200, response.status_code) 

30 self.assertEqual({"has_releases": False}, response.get_json()) 

31 

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 = [] 

36 

37 response = self.client.get(self.endpoint_url) 

38 

39 self.assertEqual(200, response.status_code) 

40 self.assertEqual({"has_releases": False}, response.get_json()) 

41 

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 

48 

49 response = self.client.get(self.endpoint_url) 

50 

51 self.assertEqual(404, response.status_code)