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
« 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
6class TestGetPackages(TestCase):
7 def setUp(self):
8 app.testing = True
9 self.client = app.test_client()
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)
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)
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)
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")
40 self.assertEqual(response.status_code, 500)
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"]))