Skip to content

Commit 058cf84

Browse files
committed
Fix few test coverage and deprecation issues
1 parent 2fc4f3e commit 058cf84

File tree

9 files changed

+73
-29
lines changed

9 files changed

+73
-29
lines changed

.travis.yml

+11-5
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,24 @@
11
language: python
2-
dist: xenial
2+
dist: bionic
33
sudo: true
44
services:
55
- postgresql
66
python:
77
- 2.7
88
- 3.5
99
- 3.6
10-
jobs:
11-
- include:
12-
- python: 3.6
13-
env: TOXENV=flake8
10+
- 3.7
11+
- 3.8
1412
install:
1513
- pip install tox
1614
- pip install -q tox-travis
1715
script:
1816
- tox
17+
18+
stages:
19+
- lint
20+
- test
21+
22+
jobs:
23+
include:
24+
- { stage: lint, env: TOXENV=flake8, python: 3.8 }

demo/demoproject/compat.py

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
try:
2+
from django.urls import reverse # noqa
3+
except ImportError:
4+
from django.core.urlresolvers import reverse # noqa

demo/demoproject/filter/tests.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from django.test import TestCase
2-
from django.core.urlresolvers import reverse
2+
3+
from demoproject.compat import reverse
34

45

56
class FilteredListView(TestCase):

demo/demoproject/settings.py

+20-7
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
"""Django settings for django-generic-filters demo project."""
2+
3+
from distutils.version import StrictVersion
4+
from django.utils.version import get_version
5+
26
from os import environ
37
from os.path import abspath, dirname, join
48

@@ -75,13 +79,22 @@
7579

7680

7781
# Default middlewares. You may alter the list later.
78-
MIDDLEWARE_CLASSES = [
79-
'django.middleware.common.CommonMiddleware',
80-
'django.contrib.sessions.middleware.SessionMiddleware',
81-
'django.middleware.csrf.CsrfViewMiddleware',
82-
'django.contrib.auth.middleware.AuthenticationMiddleware',
83-
'django.contrib.messages.middleware.MessageMiddleware',
84-
]
82+
if StrictVersion(get_version()) >= StrictVersion('1.10'):
83+
MIDDLEWARE = [
84+
'django.middleware.common.CommonMiddleware',
85+
'django.contrib.sessions.middleware.SessionMiddleware',
86+
'django.middleware.csrf.CsrfViewMiddleware',
87+
'django.contrib.auth.middleware.AuthenticationMiddleware',
88+
'django.contrib.messages.middleware.MessageMiddleware',
89+
]
90+
else:
91+
MIDDLEWARE_CLASSES = [
92+
'django.middleware.common.CommonMiddleware',
93+
'django.contrib.sessions.middleware.SessionMiddleware',
94+
'django.middleware.csrf.CsrfViewMiddleware',
95+
'django.contrib.auth.middleware.AuthenticationMiddleware',
96+
'django.contrib.messages.middleware.MessageMiddleware',
97+
]
8598

8699
# Development configuration.
87100
DEBUG = True

demo/demoproject/tests.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
# coding=utf8
22
"""Test suite for django-generic-filters."""
3-
from django.core.urlresolvers import reverse
43
from django.test import TestCase
54

5+
from demoproject.compat import reverse
6+
67

78
class HomeViewTestCase(TestCase):
89
"""Test homepage."""

django_genericfilters/tests/test_templatetags.py

+21-9
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,14 @@
11
import unittest
22

3-
from django.template.base import TOKEN_TEXT
4-
from django.template.base import Parser
5-
from django.template.base import Token
6-
from django.template.base import Variable
3+
from django import forms
4+
from django.template.base import TOKEN_TEXT, Parser, Token, Variable
75

86
import mock
97

10-
from django_genericfilters.templatetags.updateurl import token_kwargs
11-
from django_genericfilters.templatetags.updateurl import token_value
12-
from django_genericfilters.templatetags.updateurl import \
13-
tag_update_query_string
14-
from django_genericfilters.templatetags.updateurl import update_query_string
8+
from django_genericfilters.templatetags.updateurl import (
9+
token_kwargs, token_value, tag_update_query_string, update_query_string
10+
)
11+
from django_genericfilters.templatetags.utils import is_checkbox
1512

1613

1714
class TemplateTagTestCase(unittest.TestCase):
@@ -56,3 +53,18 @@ def test_tag_update_query_string(self):
5653
self.assertEqual(
5754
node.render({'request': request, 'page': 'page', 'num_page': 2}),
5855
u'/fake?page=2')
56+
57+
def test_is_checkbox(self):
58+
class MockForm(forms.Form):
59+
a = forms.CharField()
60+
b = forms.BooleanField()
61+
62+
form = MockForm()
63+
64+
boundfield_a, boundfield_b = form.visible_fields()
65+
66+
self.assertEqual("a", boundfield_a.name)
67+
self.assertFalse(is_checkbox(boundfield_a))
68+
69+
self.assertEqual("b", boundfield_b.name)
70+
self.assertTrue(is_checkbox(boundfield_b))

django_genericfilters/tests/test_views.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,13 @@ class QueryModel(models.Model):
5555
"""
5656
Define a dummy model for this test case
5757
"""
58-
people = models.ForeignKey(ParentModel)
58+
people = models.ForeignKey(ParentModel, on_delete=models.CASCADE)
5959
city = models.CharField(max_length=250)
6060
country = models.CharField(max_length=250)
6161
organization = models.CharField(max_length=250)
62-
status = models.ForeignKey(StatusModel, null=True)
62+
status = models.ForeignKey(
63+
StatusModel, null=True, on_delete=models.CASCADE
64+
)
6365

6466
class Form(FilteredForm):
6567

setup.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ def read_relative_file(filename):
1515
VERSION = read_relative_file('VERSION')
1616
PACKAGES = ['django_genericfilters']
1717
REQUIRES = [
18-
'Django>=1.8,<1.12',
18+
'Django>=1.8,<3.1',
1919
'bunch',
2020
]
2121

@@ -29,6 +29,8 @@ def read_relative_file(filename):
2929
'License :: OSI Approved :: BSD License',
3030
'Programming Language :: Python :: 2',
3131
'Programming Language :: Python :: 2.7',
32+
'Programming Language :: Python :: 3',
33+
'Programming Language :: Python :: 3.6',
3234
'Framework :: Django',
3335
],
3436
keywords='class-based view, generic view, filters',

tox.ini

+6-3
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
[tox]
77
envlist =
88
py{27,34,35}-django{18,19,110,111},
9-
py{36}-django{20,21,22},
9+
py{36,37,38}-django{20,21,22,30},
1010
flake8
1111

1212
[testenv]
@@ -15,6 +15,8 @@ basepython =
1515
py34: python3.4
1616
py35: python3.5
1717
py36: python3.6
18+
py37: python3.7
19+
py38: python3.8
1820
deps =
1921
coverage
2022
psycopg2>=2.5.4
@@ -25,18 +27,19 @@ deps =
2527
django20: Django>=2.0,<2.1
2628
django21: Django>=2.1,<2.2
2729
django22: Django>=2.2,<3.0
30+
django30: Django>=3.0,<3.1
2831
commands =
2932
pip install -e ./
3033
pip install -e demo
31-
python -Wd {envbindir}/coverage run --source=django_genericfilters {envbindir}/demo test {posargs:demo django_genericfilters}
34+
python -Wd {envbindir}/coverage run --branch --source=django_genericfilters {envbindir}/demo test {posargs:demoproject django_genericfilters}
3235
coverage report -m
3336
passenv =
3437
PYTHONPATH
3538
DJANGO_DB_USER
3639
DJANGO_DB_PASSWORD
3740

3841
[testenv:flake8]
39-
basepython = python2.7
42+
basepython = python3.8
4043
commands =
4144
flake8 demo
4245
flake8 django_genericfilters

0 commit comments

Comments
 (0)