##// END OF EJS Templates
Added TODOs for failing tests.
neko259 -
r154:5e3d2b35 default
parent child Browse files
Show More
@@ -1,177 +1,181 b''
1 # coding=utf-8
1 # coding=utf-8
2 from django.utils.unittest import TestCase
2 from django.utils.unittest import TestCase
3 from django.test.client import Client
3 from django.test.client import Client
4
4
5 import boards
5 import boards
6
6
7 from boards.models import Post, Tag
7 from boards.models import Post, Tag
8 from neboard import settings
8 from neboard import settings
9
9
10 TEST_TEXT = 'test text'
10 TEST_TEXT = 'test text'
11
11
12 NEW_THREAD_PAGE = '/'
12 NEW_THREAD_PAGE = '/'
13 THREAD_PAGE_ONE = '/thread/1/'
13 THREAD_PAGE_ONE = '/thread/1/'
14 THREAD_PAGE = '/thread/'
14 THREAD_PAGE = '/thread/'
15 TAG_PAGE = '/tag/'
15 TAG_PAGE = '/tag/'
16 HTTP_CODE_REDIRECT = 302
16 HTTP_CODE_REDIRECT = 302
17 HTTP_CODE_OK = 200
17 HTTP_CODE_OK = 200
18 HTTP_CODE_NOT_FOUND = 404
18 HTTP_CODE_NOT_FOUND = 404
19
19
20
20
21 class BoardTests(TestCase):
21 class BoardTests(TestCase):
22 def _create_post(self):
22 def _create_post(self):
23 return Post.objects.create_post(title='title',
23 return Post.objects.create_post(title='title',
24 text='text')
24 text='text')
25
25
26 def test_post_add(self):
26 def test_post_add(self):
27 post = self._create_post()
27 post = self._create_post()
28
28
29 self.assertIsNotNone(post)
29 self.assertIsNotNone(post)
30 self.assertEqual(boards.models.NO_PARENT, post.parent)
30 self.assertEqual(boards.models.NO_PARENT, post.parent)
31
31
32 def test_delete_post(self):
32 def test_delete_post(self):
33 post = self._create_post()
33 post = self._create_post()
34 post_id = post.id
34 post_id = post.id
35
35
36 Post.objects.delete_post(post)
36 Post.objects.delete_post(post)
37
37
38 self.assertFalse(Post.objects.exists(post_id))
38 self.assertFalse(Post.objects.exists(post_id))
39
39
40 def test_delete_posts_by_ip(self):
40 def test_delete_posts_by_ip(self):
41 post = self._create_post()
41 post = self._create_post()
42 post_id = post.id
42 post_id = post.id
43
43
44 Post.objects.delete_posts_by_ip('0.0.0.0')
44 Post.objects.delete_posts_by_ip('0.0.0.0')
45
45
46 self.assertFalse(Post.objects.exists(post_id))
46 self.assertFalse(Post.objects.exists(post_id))
47
47
48 # Authentication tests
48 # Authentication tests
49
49
50 def _create_test_user(self):
50 def _create_test_user(self):
51 admin = Admin(name='test_username12313584353165',
51 admin = Admin(name='test_username12313584353165',
52 password='test_userpassword135135512')
52 password='test_userpassword135135512')
53
53
54 admin.save()
54 admin.save()
55 return admin
55 return admin
56
56
57 def test_get_thread(self):
57 def test_get_thread(self):
58 opening_post = self._create_post()
58 opening_post = self._create_post()
59 op_id = opening_post.id
59 op_id = opening_post.id
60
60
61 for i in range(0, 2):
61 for i in range(0, 2):
62 Post.objects.create_post('title', 'text',
62 Post.objects.create_post('title', 'text',
63 parent_id=op_id)
63 parent_id=op_id)
64
64
65 thread = Post.objects.get_thread(op_id)
65 thread = Post.objects.get_thread(op_id)
66
66
67 self.assertEqual(3, len(thread))
67 self.assertEqual(3, len(thread))
68
68
69 def test_create_post_with_tag(self):
69 def test_create_post_with_tag(self):
70 tag = Tag.objects.create(name='test_tag')
70 tag = Tag.objects.create(name='test_tag')
71 post = Post.objects.create_post(title='title', text='text', tags=[tag])
71 post = Post.objects.create_post(title='title', text='text', tags=[tag])
72 self.assertIsNotNone(post)
72 self.assertIsNotNone(post)
73
73
74 def test_thread_max_count(self):
74 def test_thread_max_count(self):
75 for i in range(settings.MAX_THREAD_COUNT + 1):
75 for i in range(settings.MAX_THREAD_COUNT + 1):
76 self._create_post()
76 self._create_post()
77
77
78 self.assertEqual(settings.MAX_THREAD_COUNT,
78 self.assertEqual(settings.MAX_THREAD_COUNT,
79 len(Post.objects.get_threads()))
79 len(Post.objects.get_threads()))
80
80
81 def test_pages(self):
81 def test_pages(self):
82 """Test that the thread list is properly split into pages"""
82 """Test that the thread list is properly split into pages"""
83
83
84 for i in range(settings.MAX_THREAD_COUNT):
84 for i in range(settings.MAX_THREAD_COUNT):
85 self._create_post()
85 self._create_post()
86
86
87 all_threads = Post.objects.get_threads()
87 all_threads = Post.objects.get_threads()
88
88
89 posts_in_second_page = Post.objects.get_threads(page=1)
89 posts_in_second_page = Post.objects.get_threads(page=1)
90 first_post = posts_in_second_page[0]
90 first_post = posts_in_second_page[0]
91
91
92 self.assertEqual(all_threads[settings.THREADS_PER_PAGE].id,
92 self.assertEqual(all_threads[settings.THREADS_PER_PAGE].id,
93 first_post.id)
93 first_post.id)
94
94
95 def test_post_validation(self):
95 def test_post_validation(self):
96 """Test the validation of the post form"""
96 """Test the validation of the post form"""
97
97
98 # Disable captcha for the test
98 # Disable captcha for the test
99 captcha_enabled = settings.ENABLE_CAPTCHA
99 captcha_enabled = settings.ENABLE_CAPTCHA
100 settings.ENABLE_CAPTCHA = False
100 settings.ENABLE_CAPTCHA = False
101
101
102 Post.objects.all().delete()
102 Post.objects.all().delete()
103
103
104 client = Client()
104 client = Client()
105
105
106 valid_tags = u'tag1 tag_2 Ρ‚Π΅Π³_3'
106 valid_tags = u'tag1 tag_2 Ρ‚Π΅Π³_3'
107 invalid_tags = u'$%_356 ---'
107 invalid_tags = u'$%_356 ---'
108
108
109 response = client.post(NEW_THREAD_PAGE, {'title': 'test title',
109 response = client.post(NEW_THREAD_PAGE, {'title': 'test title',
110 'text': TEST_TEXT,
110 'text': TEST_TEXT,
111 'tags': valid_tags})
111 'tags': valid_tags})
112 self.assertEqual(response.status_code, HTTP_CODE_REDIRECT,
112 self.assertEqual(response.status_code, HTTP_CODE_REDIRECT,
113 msg='Posting new message failed: got code ' +
113 msg='Posting new message failed: got code ' +
114 str(response.status_code))
114 str(response.status_code))
115
115
116 self.assertEqual(1, Post.objects.count(),
116 self.assertEqual(1, Post.objects.count(),
117 msg='No posts were created')
117 msg='No posts were created')
118
118
119 client.post(NEW_THREAD_PAGE, {'text': TEST_TEXT,
119 client.post(NEW_THREAD_PAGE, {'text': TEST_TEXT,
120 'tags': invalid_tags})
120 'tags': invalid_tags})
121 self.assertEqual(1, Post.objects.count(), msg='The validation passed '
121 self.assertEqual(1, Post.objects.count(), msg='The validation passed '
122 'where it should fail')
122 'where it should fail')
123
123
124 # TODO Some workaround and test for the "waiting" validation should
125 # exist here
124 response = client.post(THREAD_PAGE_ONE, {'text': TEST_TEXT,
126 response = client.post(THREAD_PAGE_ONE, {'text': TEST_TEXT,
125 'tags': valid_tags})
127 'tags': valid_tags})
126 self.assertEqual(HTTP_CODE_REDIRECT, response.status_code,
128 self.assertEqual(HTTP_CODE_REDIRECT, response.status_code,
127 msg=u'Posting new message failed: got code ' +
129 msg=u'Posting new message failed: got code ' +
128 str(response.status_code))
130 str(response.status_code))
129
131
130 self.assertEqual(2, Post.objects.count(),
132 self.assertEqual(2, Post.objects.count(),
131 msg=u'No posts were created')
133 msg=u'No posts were created')
132
134
133 # Restore captcha setting
135 # Restore captcha setting
134 settings.ENABLE_CAPTCHA = captcha_enabled
136 settings.ENABLE_CAPTCHA = captcha_enabled
135
137
138 # TODO This test fails for now. We must check for 404.html instead of
139 # code 404
136 def test_404(self):
140 def test_404(self):
137 """Test receiving error 404 when opening a non-existent page"""
141 """Test receiving error 404 when opening a non-existent page"""
138
142
139 Post.objects.all().delete()
143 Post.objects.all().delete()
140 Tag.objects.all().delete()
144 Tag.objects.all().delete()
141
145
142 tag_name = u'test_tag'
146 tag_name = u'test_tag'
143 tags, = [Tag.objects.get_or_create(name=tag_name)]
147 tags, = [Tag.objects.get_or_create(name=tag_name)]
144 client = Client()
148 client = Client()
145
149
146 Post.objects.create_post('title', TEST_TEXT, tags=tags)
150 Post.objects.create_post('title', TEST_TEXT, tags=tags)
147
151
148 existing_post_id = Post.objects.all()[0].id
152 existing_post_id = Post.objects.all()[0].id
149 response_existing = client.get(THREAD_PAGE + str(existing_post_id) +
153 response_existing = client.get(THREAD_PAGE + str(existing_post_id) +
150 '/')
154 '/')
151 self.assertEqual(HTTP_CODE_OK, response_existing.status_code,
155 self.assertEqual(HTTP_CODE_OK, response_existing.status_code,
152 u'Cannot open existing thread')
156 u'Cannot open existing thread')
153
157
154 response_not_existing = client.get(THREAD_PAGE + str(
158 response_not_existing = client.get(THREAD_PAGE + str(
155 existing_post_id + 1) + '/')
159 existing_post_id + 1) + '/')
156 response_not_existing.get_full_path()
160 response_not_existing.get_full_path()
157 self.assertEqual(HTTP_CODE_NOT_FOUND,
161 self.assertEqual(HTTP_CODE_NOT_FOUND,
158 response_not_existing.status_code,
162 response_not_existing.status_code,
159 u'Not existing thread is opened')
163 u'Not existing thread is opened')
160
164
161 response_existing = client.get(TAG_PAGE + tag_name + '/')
165 response_existing = client.get(TAG_PAGE + tag_name + '/')
162 self.assertEqual(HTTP_CODE_OK,
166 self.assertEqual(HTTP_CODE_OK,
163 response_existing.status_code,
167 response_existing.status_code,
164 u'Cannot open existing tag')
168 u'Cannot open existing tag')
165
169
166 response_not_existing = client.get(TAG_PAGE + u'not_tag' + '/')
170 response_not_existing = client.get(TAG_PAGE + u'not_tag' + '/')
167 self.assertEqual(HTTP_CODE_NOT_FOUND,
171 self.assertEqual(HTTP_CODE_NOT_FOUND,
168 response_not_existing.status_code,
172 response_not_existing.status_code,
169 u'Not existing tag is opened')
173 u'Not existing tag is opened')
170
174
171 reply_id = Post.objects.create_post('', TEST_TEXT,
175 reply_id = Post.objects.create_post('', TEST_TEXT,
172 parent_id=existing_post_id)
176 parent_id=existing_post_id)
173 response_not_existing = client.get(THREAD_PAGE + str(
177 response_not_existing = client.get(THREAD_PAGE + str(
174 reply_id) + '/')
178 reply_id) + '/')
175 self.assertEqual(HTTP_CODE_NOT_FOUND,
179 self.assertEqual(HTTP_CODE_NOT_FOUND,
176 response_not_existing.status_code,
180 response_not_existing.status_code,
177 u'Not existing thread is opened')
181 u'Not existing thread is opened')
General Comments 0
You need to be logged in to leave comments. Login now