Coverage for tests/admin/tests_update_featured_snaps.py : 100%

Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1from unittest.mock import Mock, patch
2from tests.admin.admin_endpoint_testing import TestAdminEndpoints
5class TestUpdateFeaturedSnaps(TestAdminEndpoints):
6 def setUp(self):
7 self.mock_flask = patch("webapp.admin.views.flask").start()
8 self.mock_get_snap_id = patch(
9 "webapp.admin.views.publisher_api.get_snap_id"
10 ).start()
11 self.mock_get_featured_snaps = patch(
12 "webapp.admin.views.admin_api.get_featured_snaps"
13 ).start()
14 self.mock_delete_featured_snaps = patch(
15 "webapp.admin.views.admin_api.delete_featured_snaps"
16 ).start()
17 self.mock_update_featured_snaps = patch(
18 "webapp.admin.views.admin_api.update_featured_snaps"
19 ).start()
20 super().setUp()
22 def tearDown(self):
23 # Clean up the patches after each test
24 patch.stopall()
26 def test_update_featured_snaps(self):
27 self.mock_flask.request.form.get.return_value = "snap_id1,snap_id2"
28 self.mock_get_featured_snaps.side_effect = [
29 {
30 "_embedded": {
31 "clickindex:package": [{"snap_id": 1}, {"snap_id": 2}]
32 },
33 "_links": {"next": False},
34 },
35 {},
36 ]
37 delete_response = Mock()
38 delete_response.status_code = 201
39 self.mock_delete_featured_snaps.return_value = delete_response
41 mock_update_response = Mock()
42 mock_update_response.status_code = 201
43 self.mock_update_featured_snaps.return_value = mock_update_response
45 self.mock_get_snap_id.side_effect = [1, 2]
47 response = self.client.post("/admin/featured")
48 self.assertEqual(response.status_code, 200)
49 self.assertEqual(response.json, {"success": True})
51 def test_update_featured_snaps_no_snaps(self):
52 with self.app.test_request_context("/admin/featured"):
53 self.mock_flask.request.form.get.return_value = ""
54 self.mock_get_featured_snaps.side_effect = [
55 {
56 "_embedded": {
57 "clickindex:package": [{"snap_id": 1}, {"snap_id": 2}]
58 },
59 "_links": {"next": False},
60 },
61 {},
62 ]
63 mock_delete_response = Mock()
64 mock_delete_response.status_code = 201
65 self.mock_delete_featured_snaps.return_value = mock_delete_response
67 mock_update_response = Mock()
68 mock_update_response.status_code = 201
69 self.mock_update_featured_snaps.return_value = mock_update_response
71 self.mock_get_snap_id.side_effect = []
73 response = self.client.post("/admin/featured")
74 self.assertEqual(response.status_code, 500)
75 self.assertEqual(response.json.get("success"), False)
76 self.assertEqual(response.json.get("message"), "Snaps cannot be empty")
78 def test_update_featured_snaps_delete_failed(self):
79 with self.app.test_request_context("/admin/featured"):
80 self.mock_flask.request.form.get.return_value = "snap_id1,snap_id2"
81 self.mock_get_featured_snaps.side_effect = [
82 {
83 "_embedded": {
84 "clickindex:package": [{"snap_id": 1}, {"snap_id": 2}]
85 },
86 "_links": {"next": False},
87 },
88 {},
89 ]
90 mock_delete_response = Mock()
91 mock_delete_response.status_code = 400
92 self.mock_delete_featured_snaps.return_value = mock_delete_response
94 mock_update_response = Mock()
95 mock_update_response.status_code = 201
96 self.mock_update_featured_snaps.return_value = mock_update_response
98 self.mock_get_snap_id.side_effect = [1, 2]
100 response = self.client.post("/admin/featured")
101 self.assertEqual(response.status_code, 500)
103 def test_update_featured_snaps_update_failed(self):
104 with self.app.test_request_context("/admin/featured"):
105 self.mock_flask.request.form.get.return_value = "snap_id1,snap_id2"
106 self.mock_get_featured_snaps.side_effect = [
107 {
108 "_embedded": {
109 "clickindex:package": [{"snap_id": 1}, {"snap_id": 2}]
110 },
111 "_links": {"next": False},
112 },
113 {},
114 ]
115 mock_delete_response = Mock()
116 mock_delete_response.status_code = 201
117 self.mock_delete_featured_snaps.return_value = mock_delete_response
119 mock_update_response = Mock()
120 mock_update_response.status_code = 400
121 self.mock_update_featured_snaps.return_value = mock_update_response
123 self.mock_get_snap_id.side_effect = [1, 2]
125 response = self.client.post("/admin/featured")
126 self.assertEqual(response.status_code, 500)
127 self.assertEqual(response.json.get("success"), False)