import warnings

from django.conf.urls import url
from django.test import SimpleTestCase, override_settings
from django.urls import reverse

from .views import empty_view

urlpatterns = [
    url(r'^(?i)CaseInsensitive/(\w+)', empty_view, name="insensitive"),
    url(r'^(?i)test/2/?$', empty_view, name="test2"),
]


@override_settings(ROOT_URLCONF='urlpatterns_reverse.test_deprecated')
class URLPatternReverse(SimpleTestCase):

    def test_urlpattern_reverse(self):
        test_data = (
            ('insensitive', '/CaseInsensitive/fred', ['fred'], {}),
            ('test2', '/test/2', [], {}),
        )
        with warnings.catch_warnings(record=True) as warns:
            warnings.simplefilter('always')
            warnings.filterwarnings(
                'ignore', 'Flags not at the start',
                DeprecationWarning, module='django.urls.resolvers'
            )
            for i, (name, expected, args, kwargs) in enumerate(test_data):
                got = reverse(name, args=args, kwargs=kwargs)
                self.assertEqual(got, expected)
                msg = str(warns[i].message)
                self.assertEqual(msg, 'Using (?i) in url() patterns is deprecated.')