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

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

import json 

from unittest import mock 

 

from django.test import Client, TestCase 

from django.urls import reverse 

 

from common.models import Fanfic, Type, Fandom, FandomFanfic, List, FanficList 

from users.models import CustomUser 

 

 

class ListsViewTest(TestCase): 

 

def setUp(self): 

self.normal_user = CustomUser.objects.create( 

name_surname="name2", 

country="AM", 

date_of_birth="2000-07-02", 

email="em2@gm.com", 

username='testuser3', 

password="12345") 

 

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

author="michaelRuiz", 

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

genre1="adv", 

complete=True) 

self.type = Type.objects.create(name="test_type") 

self.fandom = Fandom.objects.create(name="Test fandom", 

type=self.type) 

 

self.fandom_fanfic = FandomFanfic.objects.create(fandom=self.fandom, 

fanfic=self.fanfic, 

is_primary=True) 

 

self.list = List.objects.create(name='Test list', 

user=self.normal_user) 

 

self.client = Client() 

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

 

@mock.patch('django.core.handlers.wsgi.WSGIRequest.is_ajax') 

def test_add_fanfic_to_a_list(self, mock_ajax): 

""" Test add fanfic to a list """ 

mock_ajax.return_value = True 

 

data = { 

'fanficId': self.fanfic.id, 

'join': 'true' 

} 

 

response = self.client.post(reverse( 

'lists:lists', kwargs={'list_id': self.list.id}), data=data) 

self.assertEqual(response.status_code, 200) 

json_response = json.loads(response.content) 

self.assertTrue(json_response['success']) 

self.assertTrue(FanficList.objects.filter(fanfic=self.fanfic, 

list=self.list).exists()) 

 

@mock.patch('django.core.handlers.wsgi.WSGIRequest.is_ajax') 

def test_remove_from_list_but_already_done(self, mock_ajax): 

""" Test remove from list even if already done """ 

mock_ajax.return_value = True 

 

data = { 

'fanficId': self.fanfic.id, 

'join': 'false' 

} 

 

response = self.client.post(reverse( 

'lists:lists', kwargs={'list_id': self.list.id}), data=data) 

self.assertEqual(response.status_code, 200) 

json_response = json.loads(response.content) 

self.assertTrue(json_response['success']) 

self.assertFalse(FanficList.objects.filter(fanfic=self.fanfic, 

list=self.list).exists()) 

 

@mock.patch('django.core.handlers.wsgi.WSGIRequest.is_ajax') 

def test_remove_from_list(self, mock_ajax): 

""" Test remove from list """ 

mock_ajax.return_value = True 

 

FanficList.objects.create(fanfic=self.fanfic, list=self.list) 

 

data = { 

'fanficId': self.fanfic.id, 

'join': 'false' 

} 

 

response = self.client.post(reverse( 

'lists:lists', kwargs={'list_id': self.list.id}), data=data) 

self.assertEqual(response.status_code, 200) 

json_response = json.loads(response.content) 

self.assertTrue(json_response['success']) 

self.assertFalse(FanficList.objects.filter(fanfic=self.fanfic, 

list=self.list).exists()) 

 

@mock.patch('django.core.handlers.wsgi.WSGIRequest.is_ajax') 

def test_add_even_already_added(self, mock_ajax): 

""" Test add to list even if already added """ 

mock_ajax.return_value = True 

 

FanficList.objects.create(fanfic=self.fanfic, list=self.list) 

 

data = { 

'fanficId': self.fanfic.id, 

'join': 'true' 

} 

 

response = self.client.post(reverse( 

'lists:lists', kwargs={'list_id': self.list.id}), data=data) 

self.assertEqual(response.status_code, 200) 

json_response = json.loads(response.content) 

self.assertTrue(json_response['success']) 

self.assertTrue(FanficList.objects.filter(fanfic=self.fanfic, 

list=self.list).exists()) 

 

def test_create_list(self): 

""" Test create list """ 

name = "New list" 

data = { 

'new': name, 

'_method': 'put' 

} 

 

response = self.client.post(reverse( 

'lists:manage_lists'), data=data, follow=True) 

self.assertEqual(response.status_code, 200) 

 

self.assertTrue(List.objects.filter(user=self.normal_user, 

name=name).exists()) 

 

def test_update_list(self): 

""" Test update existing list's name """ 

name = "New name" 

field_name = "list{}".format(self.list.id) 

data = { 

'fieldChange': self.list.id, 

field_name: name, 

'_method': 'put' 

} 

 

response = self.client.post(reverse( 

'lists:manage_lists'), data=data, follow=True) 

self.assertEqual(response.status_code, 200) 

 

self.assertTrue(List.objects.filter(id=self.list.id, 

name=name).exists()) 

 

def test_delete_list(self): 

""" Test delete existing list """ 

data = { 

'dellist': [self.list.id], 

'_method': 'delete' 

} 

 

response = self.client.post(reverse( 

'lists:manage_lists'), data=data, follow=True) 

self.assertEqual(response.status_code, 200) 

 

self.assertFalse(List.objects.filter(id=self.list.id).exists())