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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

from unittest import mock 

 

from django.test import TestCase, Client 

from django.urls import reverse 

 

from common.models import Fanfic, Review 

from users.models import CustomUser 

 

 

class ReviewViewTest(TestCase): 

def setUp(self): 

self.normal_user = CustomUser.objects.create( 

name_surname="name", 

country="AM", 

date_of_birth="2000-07-02", 

email="em@gm.com", 

username='testuser', 

password="12345") 

 

self.fanfic = Fanfic.objects.create(name="Testek fanfic", 

author="michaelRuiz", 

web="http://web-fanfic.com", 

genre1="adv", 

complete=True) 

self.review = Review.objects.create(score=3, fanfic=self.fanfic, 

user=self.normal_user) 

 

self.client = Client() 

self.client.force_login(user=self.normal_user) 

 

def test_review_edit_page_status_code(self): 

""" Test get edit page for review """ 

response = self.client.get(reverse( 

'reviews:review', kwargs={'review_id': self.review.id})) 

self.assertEqual(response.status_code, 200) 

self.assertTemplateUsed(response, 'review.html') 

 

def test_update_review(self): 

""" Test update review """ 

text = "test text" 

 

response = self.client.post(reverse( 

'reviews:review', kwargs={'review_id': self.review.id}), 

{'_method': 'put', 'text': text, 'stars': 3}, follow=True) 

self.assertEqual(response.status_code, 200) 

self.assertTemplateUsed(response, 'review.html') 

 

updated_review = Review.objects.get(id=self.review.id) 

self.assertEqual(updated_review.text, text) 

self.assertEqual(updated_review.score, 3) 

 

def test_update_review_stars_error(self): 

""" Test update review """ 

text = "test text" 

 

response = self.client.post(reverse( 

'reviews:review', kwargs={'review_id': self.review.id}), 

{'_method': 'put', 'text': text, 'stars': 30}) 

self.assertEqual(response.status_code, 200) 

self.assertTemplateUsed(response, 'review.html') 

 

updated_review = Review.objects.get(id=self.review.id) 

self.assertNotEqual(updated_review.score, 30) 

 

def test_update_review_text_empty(self): 

""" Test update review """ 

text = "" 

 

response = self.client.post(reverse( 

'reviews:review', kwargs={'review_id': self.review.id}), 

{'_method': 'put', 'text': text, 'stars': 3}) 

self.assertEqual(response.status_code, 200) 

self.assertTemplateUsed(response, 'review.html') 

 

updated_review = Review.objects.get(id=self.review.id) 

self.assertNotEqual(updated_review.text, text) 

 

def test_see_review_status_code(self): 

""" Test see a review """ 

response = self.client.get(reverse( 

'reviews:reviews', kwargs={'review_id': self.review.id})) 

self.assertEqual(response.status_code, 200) 

self.assertTemplateUsed(response, 'review.html') 

 

def test_create_review_when_already_exists(self): 

""" Test Create new review """ 

text = "test text2" 

 

response = self.client.post(reverse( 

'reviews:reviews'), 

{'fanfic_id': self.fanfic.id, 'text': text, 'stars': 3}) 

self.assertEqual(response.status_code, 200) 

self.assertTemplateUsed(response, 'review.html') 

 

updated_review = Review.objects.get(id=self.review.id) 

self.assertNotEqual(updated_review.text, text) 

 

def test_create_review(self): 

""" Test Create new review """ 

text = "test text2" 

 

self.review.delete() 

 

response = self.client.post(reverse( 

'reviews:reviews'), 

{'fanfic_id': self.fanfic.id, 'text': text, 'stars': 3}, 

follow=True) 

self.assertEqual(response.status_code, 200) 

self.assertTemplateUsed(response, 'fanfic.html') 

 

updated_review = Review.objects.get(fanfic=self.fanfic, 

user=self.normal_user) 

self.assertEqual(updated_review.text, text) 

 

def test_delete_review(self): 

""" Test Delete a review """ 

 

response = self.client.delete(reverse( 

'reviews:reviews', kwargs={'review_id': self.review.id}), 

follow=True) 

self.assertEqual(response.status_code, 200) 

self.assertTemplateUsed(response, 'fanfic.html') 

 

exists = Review.objects.filter(fanfic=self.fanfic, 

user=self.normal_user).exists() 

self.assertFalse(exists)