Coverage for tests / store / tests_explore.py: 100%

31 statements  

« prev     ^ index     » next       coverage.py v7.13.1, created at 2025-12-29 22:06 +0000

1import unittest 

2from unittest.mock import patch, Mock 

3import requests 

4 

5 

6class ExploreViewTest(unittest.TestCase): 

7 def setUp(self): 

8 self.recommendations_url = ( 

9 "https://recommendations.snapcraft.io/api/category" 

10 ) 

11 

12 self.mock_snaps = [ 

13 { 

14 "details": { 

15 "contact": "https://example.com/contact", 

16 "description": "Test description", 

17 "icon": "https://example.com/icon.png", 

18 "links": { 

19 "contact": ["https://example.com/contact"], 

20 "website": ["https://example.com"], 

21 }, 

22 "name": "test-snap", 

23 "publisher": "Canonical", 

24 "title": "Test snap", 

25 }, 

26 "snap_id": "test-snap-id", 

27 } 

28 ] 

29 

30 @patch("requests.get") 

31 def test_popular_snaps(self, mock_requests_get): 

32 mock_response = Mock() 

33 mock_response.json.return_value = self.mock_snaps 

34 mock_requests_get.return_value = mock_response 

35 

36 res = requests.get(f"{self.recommendations_url}/popular") 

37 popular_snaps = res.json() 

38 

39 self.assertEqual(popular_snaps, self.mock_snaps) 

40 

41 @patch("requests.get") 

42 def test_recent_snaps(self, mock_requests_get): 

43 mock_response = Mock() 

44 mock_response.json.return_value = self.mock_snaps 

45 mock_requests_get.return_value = mock_response 

46 

47 res = requests.get(f"{self.recommendations_url}/recent") 

48 recent_snaps = res.json() 

49 

50 self.assertEqual(recent_snaps, self.mock_snaps) 

51 

52 @patch("requests.get") 

53 def test_trending_snaps(self, mock_requests_get): 

54 mock_response = Mock() 

55 mock_response.json.return_value = self.mock_snaps 

56 mock_requests_get.return_value = mock_response 

57 

58 res = requests.get(f"{self.recommendations_url}/trending") 

59 trending_snaps = res.json() 

60 

61 self.assertEqual(trending_snaps, self.mock_snaps)