Hide keyboard shortcuts

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 

3 

4 

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() 

21 

22 def tearDown(self): 

23 # Clean up the patches after each test 

24 patch.stopall() 

25 

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 

40 

41 mock_update_response = Mock() 

42 mock_update_response.status_code = 201 

43 self.mock_update_featured_snaps.return_value = mock_update_response 

44 

45 self.mock_get_snap_id.side_effect = [1, 2] 

46 

47 response = self.client.post("/admin/featured") 

48 self.assertEqual(response.status_code, 200) 

49 self.assertEqual(response.json, {"success": True}) 

50 

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 

66 

67 mock_update_response = Mock() 

68 mock_update_response.status_code = 201 

69 self.mock_update_featured_snaps.return_value = mock_update_response 

70 

71 self.mock_get_snap_id.side_effect = [] 

72 

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") 

77 

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 

93 

94 mock_update_response = Mock() 

95 mock_update_response.status_code = 201 

96 self.mock_update_featured_snaps.return_value = mock_update_response 

97 

98 self.mock_get_snap_id.side_effect = [1, 2] 

99 

100 response = self.client.post("/admin/featured") 

101 self.assertEqual(response.status_code, 500) 

102 

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 

118 

119 mock_update_response = Mock() 

120 mock_update_response.status_code = 400 

121 self.mock_update_featured_snaps.return_value = mock_update_response 

122 

123 self.mock_get_snap_id.side_effect = [1, 2] 

124 

125 response = self.client.post("/admin/featured") 

126 self.assertEqual(response.status_code, 500) 

127 self.assertEqual(response.json.get("success"), False)