There are 3 Python files attached.

I have my URL file attached. I'm using django-rest-framework (in case you 
are wondering what the routers are). When I use ./manage.py test with the 
first file (file1.py), the tests succeed. When I do the very same thing 
with the second file, the tests fail. The only thing changed between the 
files is the addition of this code:

    def test_update_member_phone_number(self):
        member = self.create_national_team_member()

        url = reverse(r'nationalteam-member-phone-number',
                      kwargs={r'pk': member.id})

The error is this one:

======================================================================
ERROR: test_update_member_picture (main.tests.test_national_team.
NationalTeamTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File 
"/home/jpmelos/devel/ideation_admin/ideation_admin/main/tests/test_national_team.py"
, line 177, in test_update_member_picture
    kwargs={r'pk': member.id})
  File 
"/home/jpmelos/devel/ideation_admin/venv/lib/python2.7/site-packages/django/core/urlresolvers.py"
, line 551, in reverse
    return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **
kwargs))
  File 
"/home/jpmelos/devel/ideation_admin/venv/lib/python2.7/site-packages/django/core/urlresolvers.py"
, line 468, in _reverse_with_prefix
    (lookup_view_s, args, kwargs, len(patterns), patterns))

NoReverseMatch: Reverse for 'nationalteam-member-update-picture' with 
arguments '()' and keyword arguments '{'pk': 10}' not found. 1 pattern(s) 
tried: ['national-team/(?P<pk>\\d)/update_picture/$']

As you can see in the exception text, the pattern does seem to match. The 
error seems to happen in a test method that is not even related to the one 
added to the tests. What is going on? It doesn't make any sense to me. How 
come the mere addition of a call to reverse can cause the tests to crash?

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/68cd8a2c-b3aa-4584-b11d-0d52e259dbf4%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
# -*- coding: utf-8 -*-
import json

from django.core.urlresolvers import reverse
from main.models import PhoneNumber, TeamMember, Team
from main.tests.creator_test_case import CreatorTestCase
import os
from rest_framework import status


class NationalTeamTestCase(CreatorTestCase):
    def test_retrieve(self):
        self.create_national_team_member(picture=r'foto.jpg')
        member = self.create_national_team_member()

        phone = self.create_phone_number(member=member)

        url = reverse(r'nationalteam-list')
        response = self.client.get(url)

        self.assertEqual(url, r'/national-team/')
        for member in response.data[r'members']:
            self.assertIsInstance(member.pop(r'id'), int)
        self.assertEqual(response.data, {
            r'members': [
                {
                    r'name': u'Arnaldo',
                    r'email': r'arna...@gmail.com',
                    r'picture': r'http://testserver/media/foto.jpg',
                    r'phone': None,
                },
                {
                    r'name': u'Arnaldo',
                    r'email': r'arna...@gmail.com',
                    r'picture': None,
                    r'phone': phone.id,
                },
            ]
        })
        self.assertEqual(response.status_code, status.HTTP_200_OK)

        for member in TeamMember.objects.all():
            member.delete()
        for team in Team.objects.all():
            team.delete()

    def test_add_member(self):
        url = reverse(r'nationalteam-list')
        response = self.client.post(url, json.dumps({
            r'name': u'Henrique',
            r'email': r'henri...@gmail.com',
        }), content_type=r'application/json')

        self.assertEqual(url, r'/national-team/')
        member_id = response.data.pop(r'id')
        self.assertIsInstance(member_id, int)
        self.assertEqual(response.data, {
            r'name': u'Henrique',
            r'email': r'henri...@gmail.com',
            r'picture': None,
            r'phone': None,
        })
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

        TeamMember.objects.filter(id=member_id).delete()
        for team in Team.objects.all():
            team.delete()

    def test_update_member(self):
        member = self.create_national_team_member()

        url = reverse(r'nationalteam-member', kwargs={r'pk': member.id})
        response = self.client.put(url, json.dumps({
            r'name': u'Henrique',
            r'email': r'henri...@gmail.com',
        }), content_type=r'application/json')

        self.assertEqual(url, r'/national-team/{pk}/'.format(pk=member.id))
        self.assertEqual(response.data, {
            r'id': member.id,
            r'name': u'Henrique',
            r'email': r'henri...@gmail.com',
            r'picture': None,
            r'phone': None,
        })
        self.assertEqual(response.status_code, status.HTTP_200_OK)

        member.delete()
        for team in Team.objects.all():
            team.delete()

    def test_partial_update_member(self):
        member = self.create_national_team_member()

        url = reverse(r'nationalteam-member', kwargs={r'pk': member.id})
        response = self.client.patch(url, json.dumps({
            r'name': u'Arnaldo Jabor',
        }), content_type=r'application/json')

        self.assertEqual(url, r'/national-team/{pk}/'.format(pk=member.id))
        self.assertEqual(response.data, {
            r'id': member.id,
            r'name': u'Arnaldo Jabor',
            r'email': r'arna...@gmail.com',
            r'picture': None,
            r'phone': None,
        })
        self.assertEqual(response.status_code, status.HTTP_200_OK)

        member.delete()
        for team in Team.objects.all():
            team.delete()

    def test_destroy_member(self):
        filename = r'test.jpg'
        path = os.path.join(os.path.dirname(__file__), r'testdata/', filename)
        open(path, r'a').close()

        member = self.create_national_team_member(picture=filename)
        phone = self.create_phone_number(member=member)

        url = reverse(r'nationalteam-member', kwargs={r'pk': member.id})
        response = self.client.delete(url)

        self.assertEqual(url, r'/national-team/{pk}/'.format(pk=member.id))
        self.assertEqual(response.data, None)
        self.assertRaises(PhoneNumber.DoesNotExist, PhoneNumber.objects.get,
                          id=phone.id)
        self.assertRaises(TeamMember.DoesNotExist, TeamMember.objects.get,
                          id=member.id)
        self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
        self.assertFalse(os.path.exists(path))

        for team in Team.objects.all():
            team.delete()

    def test_add_member_picture(self):
        new_filename = r'new.jpg'
        new_path = os.path.join(os.path.dirname(__file__), r'testdata/',
                                new_filename)

        member = self.create_national_team_member()

        url = reverse(r'nationalteam-member-update-picture',
                      kwargs={r'pk': member.id})
        with open(new_path, r'a+') as new_file:
            response = self.client.post(url, {
                r'picture': new_file,
            })
        os.unlink(new_path)
        self.assertEqual(url,
                         r'/national-team/{pk}/update_picture/'.format(
                             pk=member.id
                         ))
        self.assertEqual(response.data, {
            r'picture': r'http://testserver/media/team_members/new.jpg',
        })
        self.assertEqual(response.status_code, status.HTTP_200_OK)

        member.reload().delete()
        for team in Team.objects.all():
            team.delete()

    def test_update_member_picture(self):
        old_filename = r'old.jpg'
        old_path = os.path.join(os.path.dirname(__file__), r'testdata/',
                                old_filename)
        open(old_path, r'a').close()

        new_filename = r'new.jpg'
        new_path = os.path.join(os.path.dirname(__file__), r'testdata/',
                                new_filename)

        member = self.create_national_team_member(picture=old_filename)

        url = reverse(r'nationalteam-member-update-picture',
                      kwargs={r'pk': member.id})
        with open(new_path, r'a+') as new_file:
            response = self.client.post(url, {
                r'picture': new_file,
            })
        os.unlink(new_path)

        self.assertEqual(url,
                         r'/national-team/{pk}/update_picture/'.format(
                             pk=member.id
                         ))
        self.assertEqual(response.data, {
            r'picture': r'http://testserver/media/team_members/new.jpg',
        })
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertFalse(os.path.exists(old_path))

        member.reload().delete()
        for team in Team.objects.all():
            team.delete()

    def test_member_add_phone_number(self):
        member = self.create_national_team_member()

        url = reverse(r'nationalteam-member-phone-number',
                      kwargs={r'pk': member.id})
        response = self.client.post(url, json.dumps({
            r'ddd': 45,
            r'number': u'9 9999-8888',
        }), content_type=r'application/json')

        self.assertEqual(url,
                         r'/national-team/{pk}/phone_number/'.format(
                             pk=member.id
                         ))
        self.assertEqual(response.data, {
            r'ddi': 55,
            r'ddd': 45,
            r'number': u'999998888',
        })
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

        member.reload().delete()
        for team in Team.objects.all():
            team.delete()
# -*- coding: utf-8 -*-
import json

from django.core.urlresolvers import reverse
from main.models import PhoneNumber, TeamMember, Team
from main.tests.creator_test_case import CreatorTestCase
import os
from rest_framework import status


class NationalTeamTestCase(CreatorTestCase):
    def test_retrieve(self):
        self.create_national_team_member(picture=r'foto.jpg')
        member = self.create_national_team_member()

        phone = self.create_phone_number(member=member)

        url = reverse(r'nationalteam-list')
        response = self.client.get(url)

        self.assertEqual(url, r'/national-team/')
        for member in response.data[r'members']:
            self.assertIsInstance(member.pop(r'id'), int)
        self.assertEqual(response.data, {
            r'members': [
                {
                    r'name': u'Arnaldo',
                    r'email': r'arna...@gmail.com',
                    r'picture': r'http://testserver/media/foto.jpg',
                    r'phone': None,
                },
                {
                    r'name': u'Arnaldo',
                    r'email': r'arna...@gmail.com',
                    r'picture': None,
                    r'phone': phone.id,
                },
            ]
        })
        self.assertEqual(response.status_code, status.HTTP_200_OK)

        for member in TeamMember.objects.all():
            member.delete()
        for team in Team.objects.all():
            team.delete()

    def test_add_member(self):
        url = reverse(r'nationalteam-list')
        response = self.client.post(url, json.dumps({
            r'name': u'Henrique',
            r'email': r'henri...@gmail.com',
        }), content_type=r'application/json')

        self.assertEqual(url, r'/national-team/')
        member_id = response.data.pop(r'id')
        self.assertIsInstance(member_id, int)
        self.assertEqual(response.data, {
            r'name': u'Henrique',
            r'email': r'henri...@gmail.com',
            r'picture': None,
            r'phone': None,
        })
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

        TeamMember.objects.filter(id=member_id).delete()
        for team in Team.objects.all():
            team.delete()

    def test_update_member(self):
        member = self.create_national_team_member()

        url = reverse(r'nationalteam-member', kwargs={r'pk': member.id})
        response = self.client.put(url, json.dumps({
            r'name': u'Henrique',
            r'email': r'henri...@gmail.com',
        }), content_type=r'application/json')

        self.assertEqual(url, r'/national-team/{pk}/'.format(pk=member.id))
        self.assertEqual(response.data, {
            r'id': member.id,
            r'name': u'Henrique',
            r'email': r'henri...@gmail.com',
            r'picture': None,
            r'phone': None,
        })
        self.assertEqual(response.status_code, status.HTTP_200_OK)

        member.delete()
        for team in Team.objects.all():
            team.delete()

    def test_partial_update_member(self):
        member = self.create_national_team_member()

        url = reverse(r'nationalteam-member', kwargs={r'pk': member.id})
        response = self.client.patch(url, json.dumps({
            r'name': u'Arnaldo Jabor',
        }), content_type=r'application/json')

        self.assertEqual(url, r'/national-team/{pk}/'.format(pk=member.id))
        self.assertEqual(response.data, {
            r'id': member.id,
            r'name': u'Arnaldo Jabor',
            r'email': r'arna...@gmail.com',
            r'picture': None,
            r'phone': None,
        })
        self.assertEqual(response.status_code, status.HTTP_200_OK)

        member.delete()
        for team in Team.objects.all():
            team.delete()

    def test_destroy_member(self):
        filename = r'test.jpg'
        path = os.path.join(os.path.dirname(__file__), r'testdata/', filename)
        open(path, r'a').close()

        member = self.create_national_team_member(picture=filename)
        phone = self.create_phone_number(member=member)

        url = reverse(r'nationalteam-member', kwargs={r'pk': member.id})
        response = self.client.delete(url)

        self.assertEqual(url, r'/national-team/{pk}/'.format(pk=member.id))
        self.assertEqual(response.data, None)
        self.assertRaises(PhoneNumber.DoesNotExist, PhoneNumber.objects.get,
                          id=phone.id)
        self.assertRaises(TeamMember.DoesNotExist, TeamMember.objects.get,
                          id=member.id)
        self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
        self.assertFalse(os.path.exists(path))

        for team in Team.objects.all():
            team.delete()

    def test_add_member_picture(self):
        new_filename = r'new.jpg'
        new_path = os.path.join(os.path.dirname(__file__), r'testdata/',
                                new_filename)

        member = self.create_national_team_member()

        url = reverse(r'nationalteam-member-update-picture',
                      kwargs={r'pk': member.id})
        with open(new_path, r'a+') as new_file:
            response = self.client.post(url, {
                r'picture': new_file,
            })
        os.unlink(new_path)
        self.assertEqual(url,
                         r'/national-team/{pk}/update_picture/'.format(
                             pk=member.id
                         ))
        self.assertEqual(response.data, {
            r'picture': r'http://testserver/media/team_members/new.jpg',
        })
        self.assertEqual(response.status_code, status.HTTP_200_OK)

        member.reload().delete()
        for team in Team.objects.all():
            team.delete()

    def test_update_member_picture(self):
        old_filename = r'old.jpg'
        old_path = os.path.join(os.path.dirname(__file__), r'testdata/',
                                old_filename)
        open(old_path, r'a').close()

        new_filename = r'new.jpg'
        new_path = os.path.join(os.path.dirname(__file__), r'testdata/',
                                new_filename)

        member = self.create_national_team_member(picture=old_filename)

        url = reverse(r'nationalteam-member-update-picture',
                      kwargs={r'pk': member.id})
        with open(new_path, r'a+') as new_file:
            response = self.client.post(url, {
                r'picture': new_file,
            })
        os.unlink(new_path)

        self.assertEqual(url,
                         r'/national-team/{pk}/update_picture/'.format(
                             pk=member.id
                         ))
        self.assertEqual(response.data, {
            r'picture': r'http://testserver/media/team_members/new.jpg',
        })
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertFalse(os.path.exists(old_path))

        member.reload().delete()
        for team in Team.objects.all():
            team.delete()

    def test_member_add_phone_number(self):
        member = self.create_national_team_member()

        url = reverse(r'nationalteam-member-phone-number',
                      kwargs={r'pk': member.id})
        response = self.client.post(url, json.dumps({
            r'ddd': 45,
            r'number': u'9 9999-8888',
        }), content_type=r'application/json')

        self.assertEqual(url,
                         r'/national-team/{pk}/phone_number/'.format(
                             pk=member.id
                         ))
        self.assertEqual(response.data, {
            r'ddi': 55,
            r'ddd': 45,
            r'number': u'999998888',
        })
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

        member.reload().delete()
        for team in Team.objects.all():
            team.delete()

    def test_update_member_phone_number(self):
        member = self.create_national_team_member()

        url = reverse(r'nationalteam-member-phone-number',
                      kwargs={r'pk': member.id})
# -*- coding: utf-8 -*-
from django.conf.urls import patterns, url
from main.views.national_mentor import NationalMentorViewSet
from main.views.national_sponsor import NationalSponsorViewSet
from main.views.national_supporter import NationalSupporterViewSet
from main.views.national_team import NationalTeamView, \
    NationalTeamMemberPictureView, NationalTeamMemberPhoneNumberView
from main.views.number import NumberViewSet
from main.views.startup import StartupViewSet
from main.views.national_university import NationalUniversityViewSet
from main.views.program import WorkshopViewSet, CompetitionViewSet
from rest_framework.routers import DefaultRouter

router = DefaultRouter()
router.register(r'numbers', NumberViewSet)
router.register(r'startups', StartupViewSet)
router.register(r'national-mentors', NationalMentorViewSet)
router.register(r'national-sponsors', NationalSponsorViewSet)
router.register(r'national-supporters', NationalSupporterViewSet)
router.register(r'national-universities', NationalUniversityViewSet)
router.register(r'workshops', WorkshopViewSet)
router.register(r'competitions', CompetitionViewSet)

nationalteam_patterns = patterns(
    r'',
    url(r'^national-team/$', NationalTeamView.as_view(),
        name=r'nationalteam-list'),
    url(r'^national-team/(?P<pk>\d)/$', NationalTeamView.as_view(),
        name=r'nationalteam-member'),
    url(r'^national-team/(?P<pk>\d)/update_picture/$',
        NationalTeamMemberPictureView.as_view(),
        name=r'nationalteam-member-update-picture'),
    url(r'^national-team/(?P<pk>\d)/phone_number/$',
        NationalTeamMemberPhoneNumberView.as_view(),
        name=r'nationalteam-member-phone-number'),
)

urlpatterns = router.urls + nationalteam_patterns

Reply via email to