def test_custom_ordering(self, order_by_mock): client = Client() url = urlparams(self.resource_url, order_by='-population') client.get(url, follow=True) order_by_mock.assert_called_with('-population')
def _test_one_feed(self, url_name, topic_id, expected_ticket_count): url_kwargs = {'pk': topic_id} if topic_id is not None else {} response = Client().get(reverse(url_name, kwargs=url_kwargs)) self.assertEqual(response.status_code, 200) items_in_response = re.findall(r'<item>', response.content.decode('utf-8')) # ugly, mostly works self.assertEqual(expected_ticket_count, len(items_in_response))
def test_empty_guns(self): client = Client() response = client.get('/guns/') self.assertIsInstance(response, HttpResponse) self.assertEquals(('Content-Type', 'application/json'), response._headers['content-type'])
def test_topic_content_acks_per_user_csv(self): c = Client() response = c.get(reverse('topic_content_acks_per_user_csv')) self.assertEqual(response.status_code, 200)
def test_topic_detail(self): response = Client().get(reverse('topic_detail', kwargs={'pk': self.topic.id})) self.assertEqual(response.status_code, 200) self.assertEqual(len(response.context['topic'].ticket_set.all()), 2)
def test_ticket_list(self): response = Client().get(reverse('ticket_list')) self.assertEqual(response.status_code, 200)
def test_ticket_detail(self): response = Client().get(reverse('ticket_detail', kwargs={'pk': self.ticket1.id})) self.assertEqual(response.status_code, 200)
def setUp(self): self.client = Client() self.test_url = reverse('geolocation:index')
def test_get_list(self): c = Client() c.login(username='******', password='******') response = c.get('/api/v1/preference/') self.assertContains(response, "ClientAlwaysOnTop") self.assertContains(response, "meta")
def setUp(self): self.client = Client() Lageruser.objects.create_superuser("test", "*****@*****.**", "test") self.client.login(username="******", password="******")
class SortableBookTestCase(TestCase): fixtures = FIXTURES admin_password = '******' ajax_update_url = reverse('admin:testapp_sortablebook_sortable_update') bulk_update_url = reverse('admin:testapp_sortablebook_changelist') client = Client() http_headers = {'HTTP_X_REQUESTED_WITH': 'XMLHttpRequest'} def setUp(self): self.loginAdminUser() def loginAdminUser(self): logged_in = self.client.login(username='******', password=self.admin_password) self.assertTrue(logged_in, "Admin user is not logged in") def assertUniqueOrderValues(self): val = 0 for obj in SortableBook.objects.order_by('my_order'): val += 1 self.assertEqual(obj.my_order, val, 'Inconsistent order value on SortableBook') def assertOrderSequence(self, in_data, raw_out_data): out_data = json.loads(raw_out_data) startorder = in_data['startorder'] endorder = in_data.get('endorder', 0) if in_data.get('o', '').split('.')[0] != '-1': order_up, order_down = 0, 1 else: order_up, order_down = 1, 0 if startorder < endorder - order_up: self.assertEqual(len(out_data), endorder - startorder + order_down) elif startorder > endorder + order_down: self.assertEqual(len(out_data), startorder - endorder + order_up) else: self.assertEqual(len(out_data), 0) def test_moveUp(self): self.assertEqual(SortableBook.objects.get(pk=7).my_order, 7) in_data = {'startorder': 7, 'endorder': 2} response = self.client.post(self.ajax_update_url, in_data, **self.http_headers) self.assertEqual(response.status_code, 200) self.assertOrderSequence(in_data, response.content.decode('utf-8')) self.assertUniqueOrderValues() self.assertEqual(SortableBook.objects.get(pk=7).my_order, 3) self.assertEqual(SortableBook.objects.get(pk=6).my_order, 7) def test_moveDown(self): self.assertEqual(SortableBook.objects.get(pk=7).my_order, 7) in_data = {'startorder': 7, 'endorder': 12} response = self.client.post(self.ajax_update_url, in_data, **self.http_headers) self.assertEqual(response.status_code, 200) self.assertOrderSequence(in_data, response.content.decode('utf-8')) self.assertUniqueOrderValues() self.assertEqual(SortableBook.objects.get(pk=7).my_order, 12) self.assertEqual(SortableBook.objects.get(pk=8).my_order, 7) def test_dontMove(self): self.assertEqual(SortableBook.objects.get(pk=7).my_order, 7) in_data = {'startorder': 7, 'endorder': 6} response = self.client.post(self.ajax_update_url, in_data, **self.http_headers) self.assertEqual(response.status_code, 200) self.assertOrderSequence(in_data, response.content.decode('utf-8')) self.assertUniqueOrderValues() self.assertEqual(SortableBook.objects.get(pk=7).my_order, 7) def test_reverseMoveUp(self): self.assertEqual(SortableBook.objects.get(pk=12).my_order, 12) in_data = {'o': '-1', 'startorder': 12, 'endorder': 19} response = self.client.post(self.ajax_update_url, in_data, **self.http_headers) self.assertEqual(response.status_code, 200) self.assertOrderSequence(in_data, response.content.decode('utf-8')) self.assertUniqueOrderValues() self.assertEqual(SortableBook.objects.get(pk=12).my_order, 18) self.assertEqual(SortableBook.objects.get(pk=13).my_order, 12) self.assertEqual(SortableBook.objects.get(pk=17).my_order, 16) def test_reverseMoveDown(self): self.assertEqual(SortableBook.objects.get(pk=12).my_order, 12) in_data = {'o': '-1', 'startorder': 12, 'endorder': 7} response = self.client.post(self.ajax_update_url, in_data, **self.http_headers) self.assertEqual(response.status_code, 200) self.assertOrderSequence(in_data, response.content.decode('utf-8')) self.assertUniqueOrderValues() self.assertEqual(SortableBook.objects.get(pk=12).my_order, 7) self.assertEqual(SortableBook.objects.get(pk=11).my_order, 12) def test_reverseDontMove(self): self.assertEqual(SortableBook.objects.get(pk=14).my_order, 14) in_data = {'o': '-1', 'startorder': 14, 'endorder': 15} response = self.client.post(self.ajax_update_url, in_data, **self.http_headers) self.assertEqual(response.status_code, 200) self.assertOrderSequence(in_data, response.content.decode('utf-8')) self.assertUniqueOrderValues() self.assertEqual(SortableBook.objects.get(pk=14).my_order, 14) def test_moveFirst(self): self.assertEqual(SortableBook.objects.get(pk=2).my_order, 2) in_data = {'startorder': 2} response = self.client.post(self.ajax_update_url, in_data, **self.http_headers) self.assertEqual(response.status_code, 200) self.assertOrderSequence(in_data, response.content.decode('utf-8')) self.assertUniqueOrderValues() self.assertEqual(SortableBook.objects.get(pk=2).my_order, 1) def test_bulkMovePrevFromFirstPage(self): self.assertEqual(SortableBook.objects.get(pk=14).my_order, 14) self.assertEqual(SortableBook.objects.get(pk=15).my_order, 15) post_data = { 'action': ['move_to_back_page'], 'step': 1, '_selected_action': [14, 15] } self.client.post(self.bulk_update_url, post_data) self.assertEqual(SortableBook.objects.get(pk=14).my_order, 14) self.assertEqual(SortableBook.objects.get(pk=15).my_order, 15) def test_bulkMovePreviousPage(self): self.assertEqual(SortableBook.objects.get(pk=17).my_order, 17) self.assertEqual(SortableBook.objects.get(pk=18).my_order, 18) self.assertEqual(SortableBook.objects.get(pk=19).my_order, 19) post_data = { 'action': ['move_to_back_page'], 'step': 1, '_selected_action': [17, 18, 19] } self.client.post(self.bulk_update_url + '?p=1', post_data) self.assertEqual(SortableBook.objects.get(pk=17).my_order, 1) self.assertEqual(SortableBook.objects.get(pk=18).my_order, 2) self.assertEqual(SortableBook.objects.get(pk=19).my_order, 3) def test_bulkMoveForwardFromLastPage(self): self.assertEqual(SortableBook.objects.get(pk=19).my_order, 19) self.assertEqual(SortableBook.objects.get(pk=20).my_order, 20) post_data = { 'action': ['move_to_forward_page'], 'step': 1, '_selected_action': [19, 20] } self.client.post(self.bulk_update_url + '?p=2', post_data) self.assertEqual(SortableBook.objects.get(pk=19).my_order, 19) self.assertEqual(SortableBook.objects.get(pk=20).my_order, 20) def test_bulkMoveNextPage(self): self.assertEqual(SortableBook.objects.get(pk=11).my_order, 11) self.assertEqual(SortableBook.objects.get(pk=10).my_order, 10) post_data = { 'action': ['move_to_forward_page'], 'step': 1, '_selected_action': [11, 10] } self.client.post(self.bulk_update_url, post_data) self.assertEqual(SortableBook.objects.get(pk=10).my_order, 13) self.assertEqual(SortableBook.objects.get(pk=11).my_order, 14) def test_bulkMoveLastPage(self): self.assertEqual(SortableBook.objects.get(pk=1).my_order, 1) self.assertEqual(SortableBook.objects.get(pk=6).my_order, 6) post_data = { 'action': ['move_to_last_page'], '_selected_action': [1, 6] } self.client.post(self.bulk_update_url, post_data) self.assertEqual(SortableBook.objects.get(pk=1).my_order, 25) self.assertEqual(SortableBook.objects.get(pk=6).my_order, 26) def test_bulkMoveFirstPage(self): self.assertEqual(SortableBook.objects.get(pk=17).my_order, 17) self.assertEqual(SortableBook.objects.get(pk=20).my_order, 20) post_data = { 'action': ['move_to_first_page'], '_selected_action': [17, 20] } self.client.post(self.bulk_update_url + '?p=2', post_data) self.assertEqual(SortableBook.objects.get(pk=17).my_order, 1) self.assertEqual(SortableBook.objects.get(pk=20).my_order, 2) def test_bulkMoveBackTwoPages(self): self.assertEqual(SortableBook.objects.get(pk=17).my_order, 17) self.assertEqual(SortableBook.objects.get(pk=20).my_order, 20) post_data = { 'action': ['move_to_back_page'], 'step': 2, '_selected_action': [17, 20] } self.client.post(self.bulk_update_url + '?p=2', post_data) self.assertEqual(SortableBook.objects.get(pk=17).my_order, 1) self.assertEqual(SortableBook.objects.get(pk=20).my_order, 2) def test_bulkMoveForwardTwoPages(self): self.assertEqual(SortableBook.objects.get(pk=1).my_order, 1) self.assertEqual(SortableBook.objects.get(pk=6).my_order, 6) post_data = { 'action': ['move_to_forward_page'], 'step': 2, '_selected_action': [1, 6] } self.client.post(self.bulk_update_url, post_data) self.assertEqual(SortableBook.objects.get(pk=1).my_order, 25) self.assertEqual(SortableBook.objects.get(pk=6).my_order, 26) def test_bulkMoveForwardTwoPagesFromLastPage(self): self.assertEqual(SortableBook.objects.get(pk=19).my_order, 19) self.assertEqual(SortableBook.objects.get(pk=20).my_order, 20) post_data = { 'action': ['move_to_forward_page'], 'step': 2, '_selected_action': [19, 20] } self.client.post(self.bulk_update_url + '?p=2', post_data) self.assertEqual(SortableBook.objects.get(pk=19).my_order, 19) self.assertEqual(SortableBook.objects.get(pk=20).my_order, 20) def test_bulkMoveToSpecificPage(self): self.assertEqual(SortableBook.objects.get(pk=1).my_order, 1) self.assertEqual(SortableBook.objects.get(pk=6).my_order, 6) post_data = { 'action': ['move_to_exact_page'], 'page': 2, '_selected_action': [1, 6] } self.client.post(self.bulk_update_url, post_data) self.assertEqual(SortableBook.objects.get(pk=1).my_order, 13) self.assertEqual(SortableBook.objects.get(pk=6).my_order, 14) def test_bulkMoveToSpecificInvalidPage(self): self.assertEqual(SortableBook.objects.get(pk=1).my_order, 1) self.assertEqual(SortableBook.objects.get(pk=6).my_order, 6) post_data = { 'action': ['move_to_exact_page'], 'page': 10, '_selected_action': [1, 6] } self.client.post(self.bulk_update_url, post_data) self.assertEqual(SortableBook.objects.get(pk=1).my_order, 1) self.assertEqual(SortableBook.objects.get(pk=6).my_order, 6) def testFilledBookShelf(self): self.assertEqual( SortableBook.objects.count(), 29, 'Check fixtures/data.json: Book shelf shall have 29 items') self.assertUniqueOrderValues()
def setUp(self): self.client = Client() Lageruser.objects.create_superuser('test', '*****@*****.**', 'test') self.client.login(username='******', password='******')
def testPageLoad(self): c = Client() response = c.get('/pnp/json') self.assertEqual(response.status_code, 200)
def test_custom_invalid_ordering(self, order_by_mock): client = Client() url = urlparams(self.resource_url, order_by='foo') client.get(url, follow=True) order_by_mock.assert_called_with('country', 'city')
def test_ticket_creation_denied(self): response = Client().get(reverse('create_ticket')) self.assertEqual(302, response.status_code) # redirects to login
def setUp(self): self.client = Client()
def test_ticket_edit(self): topic = Topic(name='topic', grant=Grant.objects.create(full_name='g', short_name='g', slug='g')) topic.save() statutory_topic = Topic(name='statutory_topic', ticket_statutory_declaration=True, grant=Grant.objects.get(short_name='g')) statutory_topic.save() subtopic = Subtopic(name='subtopic', topic=topic) subtopic2 = Subtopic(name='subtopic2', topic=statutory_topic) subtopic.save() subtopic2.save() password = '******' user = User(username='******') user.set_password(password) user.save() ticket = Ticket(name='ticket', topic=topic, requested_user=None, requested_text='foo') ticket.save() ticket.add_acks('close') c = Client() response = c.get(reverse('edit_ticket', kwargs={'pk': ticket.id})) self.assertEqual(302, response.status_code) # should be redirect to login page c.login(username=user.username, password=password) response = c.get(reverse('edit_ticket', kwargs={'pk': ticket.id})) self.assertEqual(403, response.status_code) # denies edit of non-own ticket ticket.requested_user = user ticket.requested_text = '' ticket.save() response = c.get(reverse('edit_ticket', kwargs={'pk': ticket.id})) self.assertEqual(403, response.status_code) # still deny edit, ticket locked ticket.ticketack_set.filter(ack_type='close').delete() response = c.get(reverse('edit_ticket', kwargs={'pk': ticket.id})) self.assertEqual(200, response.status_code) # now it should pass # try to submit the form response = c.post(reverse('edit_ticket', kwargs={'pk': ticket.id}), { 'name': 'new name', 'topic': ticket.topic.id, 'description': 'new desc', 'deposit': '0', 'expediture-INITIAL_FORMS': '0', 'expediture-TOTAL_FORMS': '0', 'preexpediture-INITIAL_FORMS': '0', 'preexpediture-TOTAL_FORMS': '0', }) self.assertRedirects(response, reverse('ticket_detail', kwargs={'pk': ticket.id})) # check changed ticket data ticket = Ticket.objects.get(id=ticket.id) self.assertEqual(user, ticket.requested_user) self.assertEqual('new name', ticket.name) self.assertEqual('new desc', ticket.description) # b0rked expediture items aborts the submit response = c.post(reverse('edit_ticket', kwargs={'pk': ticket.id}), { 'name': 'ticket', 'topic': ticket.topic.id, 'description': 'some desc', 'deposit': '0', 'expediture-INITIAL_FORMS': '0', 'expediture-TOTAL_FORMS': '1', 'expediture-0-description': 'foo', 'expediture-0-amount': '', 'preexpediture-INITIAL_FORMS': '0', 'preexpediture-TOTAL_FORMS': '0', }) self.assertEqual(200, response.status_code) self.assertEqual('This field is required.', response.context['expeditures'].forms[0].errors['amount'][0]) # add some inline items response = c.post(reverse('edit_ticket', kwargs={'pk': ticket.id}), { 'name': 'new name', 'topic': ticket.topic.id, 'description': 'new desc', 'deposit': '0', 'expediture-INITIAL_FORMS': '0', 'expediture-TOTAL_FORMS': '2', 'expediture-0-description': 'ten fifty', 'expediture-0-amount': '10.50', 'expediture-1-description': 'hundred', 'expediture-1-amount': '100', 'preexpediture-INITIAL_FORMS': '0', 'preexpediture-TOTAL_FORMS': '0', }) self.assertRedirects(response, reverse('ticket_detail', kwargs={'pk': ticket.id})) expeditures = ticket.expediture_set.order_by('amount') self.assertEqual(2, len(expeditures)) self.assertEqual('ten fifty', expeditures[0].description) self.assertEqual(10.5, expeditures[0].amount) self.assertEqual('hundred', expeditures[1].description) self.assertEqual(100, expeditures[1].amount) # edit inline items response = c.post(reverse('edit_ticket', kwargs={'pk': ticket.id}), { 'name': 'new name', 'topic': ticket.topic.id, 'description': 'new desc', 'deposit': '0', 'expediture-INITIAL_FORMS': '2', 'expediture-TOTAL_FORMS': '3', 'expediture-0-id': expeditures[0].id, 'expediture-0-description': 'ten fifty', 'expediture-0-amount': '10.50', 'expediture-0-DELETE': 'on', 'expediture-1-id': expeditures[1].id, 'expediture-1-description': 'hundred+1', 'expediture-1-amount': '101', 'expediture-2-description': '', 'expediture-2-amount': '', 'preexpediture-INITIAL_FORMS': '0', 'preexpediture-TOTAL_FORMS': '0', }) self.assertRedirects(response, reverse('ticket_detail', kwargs={'pk': ticket.id})) expeditures = ticket.expediture_set.order_by('amount') self.assertEqual(1, len(expeditures)) self.assertEqual('hundred+1', expeditures[0].description) self.assertEqual(101, expeditures[0].amount) # add preexpeditures, and amount flag preack deposit_amount = Decimal('12324.37') ticket = Ticket.objects.get(id=ticket.id) ticket.deposit = deposit_amount ticket.preexpediture_set.create(description='some preexp', amount=15) ticket.save() ticket.add_acks('precontent') # edit should work and ignore new data response = c.post(reverse('edit_ticket', kwargs={'pk': ticket.id}), { 'name': 'new name', 'topic': ticket.topic.id, 'description': 'new desc', 'deposit': '333', 'expediture-INITIAL_FORMS': '0', 'expediture-TOTAL_FORMS': '0', 'preexpediture-INITIAL_FORMS': '0', 'preexpediture-TOTAL_FORMS': '0', }) self.assertRedirects(response, reverse('ticket_detail', kwargs={'pk': ticket.id})) ticket = Ticket.objects.get(id=ticket.id) self.assertEqual(deposit_amount, ticket.deposit) self.assertEqual(1, ticket.preexpediture_set.count()) # also, edit should work and not fail on missing preack-ignored fields response = c.post(reverse('edit_ticket', kwargs={'pk': ticket.id}), { 'name': 'new name', 'topic': ticket.topic.id, 'description': 'new desc', 'expediture-INITIAL_FORMS': '0', 'expediture-TOTAL_FORMS': '0', }) self.assertRedirects(response, reverse('ticket_detail', kwargs={'pk': ticket.id})) ticket = Ticket.objects.get(id=ticket.id) self.assertEqual(deposit_amount, ticket.deposit) self.assertEqual(1, ticket.preexpediture_set.count())
def test_old_index(self): response = Client().get('/old/') self.assert301(response, '/', target_status_code=302) # 302 = now index is a non-permanent redirect
def test_ticket_json(self): for langcode, langname in settings.LANGUAGES: response = Client().get(reverse('tickets', kwargs={'lang': langcode})) self.assertEqual(response.status_code, 200)
def test_topic_index(self): response = Client().get('/old/topics/') self.assert301(response, reverse('topic_list'))
def test_topic_list(self): response = Client().get(reverse('topic_list')) self.assertEqual(response.status_code, 200) self.assertEqual(len(response.context['topic_list']), 1)
def test_ticket(self): response = Client().get('/old/ticket/%s/' % self.ticket.id) self.assert301(response, self.ticket.get_absolute_url())
def get_ticket_response(self): c = Client() c.login(username=self.user.username, password=self.password) response = c.get(reverse('ticket_detail', kwargs={'pk': self.ticket.id})) self.assertEqual(response.status_code, 200) return response
def test_new_ticket(self): response = Client().get('/old/ticket/new/') self.assert301(response, reverse('create_ticket'), target_status_code=302) # 302 = redirect to login
def test_user_details(self): c = Client() response = c.get(UserWrapper(self.user).get_absolute_url()) self.assertEqual(200, response.status_code) self.assertEqual(self.ticket, response.context['ticket_list'][0])
def test_topic(self): response = Client().get('/old/topic/%s/' % self.topic.id) self.assert301(response, self.topic.get_absolute_url())
def test_topic_finance(self): response = Client().get(reverse('topic_finance')) self.assertEqual(response.status_code, 200)
def get_client(self): c = Client() c.login(username=self.user.username, password=self.password) return c
def test_gun_doesnt_exist(self): client = Client() response = client.get('/guns/7654/') self.assertEquals(404, response.status_code)
def test_default_ordering(self, order_by_mock): client = Client() client.get(self.resource_url, follow=True) order_by_mock.assert_called_with('country', 'city')