Coverage for tests/publisher/snaps/test_post_preview.py: 100%

28 statements  

« prev     ^ index     » next       coverage.py v7.8.0, created at 2025-04-28 22:05 +0000

1import json 

2 

3import responses 

4from tests.publisher.endpoint_testing import BaseTestCases 

5 

6 

7class PostPreviewPageNotAuth(BaseTestCases.EndpointLoggedOut): 

8 def setUp(self): 

9 snap_name = "test-snap" 

10 endpoint_url = "/{}/preview".format(snap_name) 

11 

12 super().setUp( 

13 snap_name=snap_name, 

14 endpoint_url=endpoint_url, 

15 method_endpoint="POST", 

16 ) 

17 

18 

19class PostPreviewPage(BaseTestCases.EndpointLoggedIn): 

20 def setUp(self): 

21 self.snap_id = "complexId" 

22 

23 snap_name = "test-snap" 

24 endpoint_url = "/{}/preview".format(snap_name) 

25 api_url = ( 

26 "https://dashboard.snapcraft.io/dev/api/" "snaps/info/{}" 

27 ).format(snap_name) 

28 

29 super().setUp( 

30 snap_name=snap_name, 

31 api_url=api_url, 

32 endpoint_url=endpoint_url, 

33 method_api="GET", 

34 method_endpoint="POST", 

35 ) 

36 

37 @responses.activate 

38 def test_renders_template(self): 

39 responses.add( 

40 responses.GET, 

41 self.api_url, 

42 json={ 

43 "publisher": { 

44 "display-name": "Test", 

45 "username": "test", 

46 "validation": "verified", 

47 } 

48 }, 

49 status=200, 

50 ) 

51 

52 state = json.dumps( 

53 { 

54 "snap_name": self.snap_name, 

55 "images": [], 

56 "title": self.snap_name, 

57 "categories": [{"slug": "devices-and-iot"}], 

58 "video": [], 

59 } 

60 ) 

61 

62 response = self.client.post(self.endpoint_url, data={"state": state}) 

63 

64 self.assertEqual(response.status_code, 200) 

65 self.assertTemplateUsed("store/snap-details.html") 

66 self.assertContext("snap_name", self.snap_name) 

67 self.assertContext("is_preview", True) 

68 self.assertContext("screenshots", []) 

69 self.assertContext("icon_url", "") 

70 self.assertContext("video", []) 

71 self.assertContext("package_name", self.snap_name)