Coverage for tests/store/test_get_packages.py: 97%

38 statements  

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

1from unittest import TestCase 

2from unittest.mock import patch 

3from webapp.app import app 

4 

5 

6class TestGetPackages(TestCase): 

7 def setUp(self): 

8 app.testing = True 

9 self.client = app.test_client() 

10 

11 def test_get_packages(self): 

12 response = self.client.get("/packages.json") 

13 self.assertEqual(response.status_code, 200) 

14 self.assertIn(b"packages", response.data) 

15 

16 def test_get_packages_with_query(self): 

17 response = self.client.get("/packages.json?q=test-query") 

18 self.assertEqual(response.status_code, 200) 

19 self.assertIn(b"q", response.data) 

20 self.assertIn(b"test-query", response.data) 

21 

22 def test_get_packages_with_provides_and_requires(self): 

23 response = self.client.get( 

24 "/packages.json?provides=test-provides&requires=test-requires" 

25 ) 

26 self.assertEqual(response.status_code, 200) 

27 self.assertIn(b"provides", response.data) 

28 self.assertIn(b"test-provides", response.data) 

29 self.assertIn(b"requires", response.data) 

30 self.assertIn(b"test-requires", response.data) 

31 

32 @patch("canonicalwebteam.store_api.publishergw.PublisherGW.find") 

33 def test_get_packages_error_handling(self, mock_find): 

34 mock_find.side_effect = Exception("Mocked Error") 

35 with self.client as client: 

36 with self.assertRaises(Exception) as context: 

37 response = client.get("/packages.json") 

38 self.assertEqual(str(context.exception), "Mocked Error") 

39 

40 self.assertEqual(response.status_code, 500) 

41 

42 @patch("canonicalwebteam.store_api.publishergw.PublisherGW.find") 

43 def test_get_packages_empty_response(self, mock_find): 

44 mock_find.return_value = {"results": []} 

45 with self.client as client: 

46 response = client.get( 

47 "/packages.json?q=some-random-non-existent-package-name" 

48 ) 

49 self.assertEqual(response.status_code, 200) 

50 self.assertEqual(0, len(response.json["packages"]))