Пример #1
0
 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')
Пример #2
0
 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))
Пример #3
0
 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'])
Пример #4
0
 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)
Пример #5
0
 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)
Пример #6
0
 def test_ticket_list(self):
     response = Client().get(reverse('ticket_list'))
     self.assertEqual(response.status_code, 200)
Пример #7
0
 def test_ticket_detail(self):
     response = Client().get(reverse('ticket_detail', kwargs={'pk': self.ticket1.id}))
     self.assertEqual(response.status_code, 200)
Пример #8
0
 def setUp(self):
     self.client = Client()
     self.test_url = reverse('geolocation:index')
Пример #9
0
 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")
Пример #10
0
 def setUp(self):
     self.client = Client()
     Lageruser.objects.create_superuser("test", "*****@*****.**", "test")
     self.client.login(username="******", password="******")
Пример #11
0
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()
Пример #12
0
 def setUp(self):
     self.client = Client()
     Lageruser.objects.create_superuser('test', '*****@*****.**', 'test')
     self.client.login(username='******', password='******')
Пример #13
0
 def testPageLoad(self):
     c = Client()
     response = c.get('/pnp/json')
     self.assertEqual(response.status_code, 200)
Пример #14
0
 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')
Пример #15
0
 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()
Пример #17
0
    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())
Пример #18
0
 def test_old_index(self):
     response = Client().get('/old/')
     self.assert301(response, '/', target_status_code=302)  # 302 = now index is a non-permanent redirect
Пример #19
0
 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)
Пример #20
0
 def test_topic_index(self):
     response = Client().get('/old/topics/')
     self.assert301(response, reverse('topic_list'))
Пример #21
0
 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)
Пример #22
0
 def test_ticket(self):
     response = Client().get('/old/ticket/%s/' % self.ticket.id)
     self.assert301(response, self.ticket.get_absolute_url())
Пример #23
0
 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
Пример #24
0
 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
Пример #25
0
 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])
Пример #26
0
 def test_topic(self):
     response = Client().get('/old/topic/%s/' % self.topic.id)
     self.assert301(response, self.topic.get_absolute_url())
Пример #27
0
 def test_topic_finance(self):
     response = Client().get(reverse('topic_finance'))
     self.assertEqual(response.status_code, 200)
Пример #28
0
 def get_client(self):
     c = Client()
     c.login(username=self.user.username, password=self.password)
     return c
Пример #29
0
 def test_gun_doesnt_exist(self):
     client = Client()
     response = client.get('/guns/7654/')
     self.assertEquals(404, response.status_code)
Пример #30
0
 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')