Skip to content

Commit b83b5a3

Browse files
committed
restores and fixes some tests skipped in django 1.10
1 parent 8920f8c commit b83b5a3

File tree

10 files changed

+81
-49
lines changed

10 files changed

+81
-49
lines changed

src/concurrency/middleware.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,13 @@ class ConcurrencyMiddleware(object):
1414
1515
"""
1616

17+
def __init__(self, get_response=None):
18+
self.get_response = get_response
19+
20+
def __call__(self, request):
21+
response = self.get_response(request)
22+
return response
23+
1724
def process_exception(self, request, exception):
1825
if isinstance(exception, RecordModifiedError):
1926
got_request_exception.send(sender=self, request=request)

src/requirements/develop.pip

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
autopep8
21
coverage
32
django_extensions
43
flake8

src/requirements/testing.pip

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1-
django-webtest>=1.7.5
2-
mock>=1.0.1
31
check-manifest==0.30
2+
django-webtest>=1.8.0
3+
mock>=1.0.1
44
pytest-cache>=1.0
55
pytest-cov>=1.6
6-
pytest-django>=2.8
6+
pytest-django>=3.0.0
77
pytest-echo>=1.3
8-
pytest-pythonpath
9-
pytest>=2.8
10-
tox>=2.3
11-
WebTest>=2.0.11
8+
pytest-pythonpath>=0.7.1
9+
pytest>=3.0.3
10+
pdbpp
11+
readline
12+
tox>=2.4.1
13+
WebTest>=2.0.23

tests/demoapp/demo/base.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ def setUp(self):
3131
last_login=timezone.now(),
3232
3333
username='sax')
34+
# self.user.set_password('123')
35+
# self.user.save()
3436
admin_register_models()
3537

3638

tests/demoapp/demo/settings.py

Lines changed: 30 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
except ImportError:
1111
pass
1212

13-
1413
DEBUG = True
1514
STATIC_URL = '/static/'
1615

@@ -32,35 +31,54 @@
3231
'demo'
3332
]
3433

35-
3634
MIGRATION_MODULES = {
3735
'demo': 'demo.migrations',
3836
'auth': 'demo.auth_migrations',
3937
}
4038

41-
MIDDLEWARE_CLASSES = [
42-
'django.contrib.sessions.middleware.SessionMiddleware',
43-
'django.middleware.common.CommonMiddleware',
44-
'django.middleware.csrf.CsrfViewMiddleware',
45-
'django.contrib.auth.middleware.AuthenticationMiddleware',
46-
'django.contrib.messages.middleware.MessageMiddleware',
47-
'django.middleware.clickjacking.XFrameOptionsMiddleware',
48-
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
49-
]
50-
5139
if django.VERSION[1] >= 10:
40+
MIDDLEWARE_CLASSES = []
41+
MIDDLEWARE = [
42+
# 'concurrency.middleware.ConcurrencyMiddleware',
43+
'django.contrib.sessions.middleware.SessionMiddleware',
44+
'django.middleware.common.CommonMiddleware',
45+
'django.middleware.csrf.CsrfViewMiddleware',
46+
'django.contrib.auth.middleware.AuthenticationMiddleware',
47+
'django.contrib.messages.middleware.MessageMiddleware',
48+
'django.middleware.clickjacking.XFrameOptionsMiddleware',
49+
]
50+
5251
TEMPLATES = [
5352
{
5453
'BACKEND': 'django.template.backends.django.DjangoTemplates',
5554
'DIRS': [],
5655
'APP_DIRS': True,
5756
'OPTIONS': {
57+
'context_processors': [
58+
'django.contrib.auth.context_processors.auth',
59+
'django.template.context_processors.debug',
60+
'django.template.context_processors.i18n',
61+
'django.template.context_processors.media',
62+
'django.template.context_processors.static',
63+
'django.template.context_processors.tz',
64+
'django.contrib.messages.context_processors.messages',
65+
],
5866
# ... some options here ...
5967
},
6068
},
6169
]
6270
else:
6371
TEMPLATE_DIRS = ['demo/templates']
72+
MIDDLEWARE_CLASSES = [
73+
# 'concurrency.middleware.ConcurrencyMiddleware',
74+
'django.contrib.sessions.middleware.SessionMiddleware',
75+
'django.middleware.common.CommonMiddleware',
76+
'django.middleware.csrf.CsrfViewMiddleware',
77+
'django.contrib.auth.middleware.AuthenticationMiddleware',
78+
'django.contrib.messages.middleware.MessageMiddleware',
79+
'django.middleware.clickjacking.XFrameOptionsMiddleware',
80+
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
81+
]
6482

6583
LOGGING = {
6684
'version': 1,

tests/test_admin_actions.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
from demo.util import unique_id
88

99

10-
@pytest.mark.xfail("django.VERSION[:2] == (1, 10)", strict=True)
1110
class TestAdminActions(AdminTestCase):
1211
def _create_conflict(self, pk):
1312
u = SimpleConcurrentModel.objects.get(pk=pk)

tests/test_admin_list_editable.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from django.contrib.admin.sites import site
66
from django.contrib.contenttypes.models import ContentType
77
from django.db import transaction
8+
from django.test import modify_settings
89
from django.utils.encoding import force_text
910

1011
import pytest
@@ -18,7 +19,7 @@
1819
from concurrency.exceptions import RecordModifiedError
1920

2021

21-
@pytest.mark.xfail("django.VERSION[:2] == (1, 10)", strict=True)
22+
# @pytest.mark.xfail(django.VERSION[:2] == (1, 10), reason="Django 1.10")
2223
class TestListEditable(AdminTestCase):
2324
TARGET = ListEditableConcurrentModel
2425

tests/test_conditional.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,12 +113,12 @@ def test_conflict_no_meta(instance_no_meta):
113113
@pytest.mark.django_db()
114114
def test_self_relations():
115115
a = ConditionalVersionModelSelfRelation.objects.create(name='a')
116-
b = ConditionalVersionModelSelfRelation.objects.create(name='b')
116+
ConditionalVersionModelSelfRelation.objects.create(name='b')
117117

118118
r = ThroughRelation.objects.create(left=a,
119119
right=a)
120120
r.save()
121121

122122
a1 = ConditionalVersionModelSelfRelation.objects.get(pk=a.pk)
123-
a1.name='a'
123+
a1.name = 'a'
124124
a1.save()

tests/test_middleware.py

Lines changed: 27 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
# -*- coding: utf-8 -*-
2+
import django
23
from django.conf import settings
34
from django.contrib.admin.sites import site
45
from django.core.urlresolvers import reverse
56
from django.http import HttpRequest
6-
from django.test.utils import override_settings
7+
from django.test.utils import override_settings, modify_settings
78

89
import mock
910
import pytest
@@ -37,7 +38,7 @@ def test_middleware():
3738
assert r.status_code == 409
3839

3940

40-
class ConcurrencyMiddlewareTest(AdminTestCase):
41+
class ConcurrencyMiddlewareTest1(AdminTestCase):
4142
def _get_request(self, path):
4243
request = HttpRequest()
4344
request.META = {
@@ -60,37 +61,43 @@ def test_process_exception(self):
6061
r = ConcurrencyMiddleware().process_exception(request, RecordModifiedError(target=m))
6162
self.assertEqual(r.status_code, 409)
6263

63-
@pytest.mark.xfail("django.VERSION[:2] == (1, 10)", strict=True)
64+
65+
class ConcurrencyMiddlewareTest2(AdminTestCase):
66+
67+
@property
68+
def settings_middleware(self):
69+
return getattr(settings, self.middleware_setting_name) + ['concurrency.middleware.ConcurrencyMiddleware']
70+
71+
@settings_middleware.setter
72+
def settings_middleware(self, value):
73+
setattr(settings, self.middleware_setting_name, value)
74+
6475
def test_in_admin(self):
6576
id = next(unique_id)
66-
67-
middlewares = list(settings.MIDDLEWARE_CLASSES) + ['concurrency.middleware.ConcurrencyMiddleware']
6877
model_admin = site._registry[SimpleConcurrentModel]
6978

7079
with attributes((model_admin.__class__, 'list_editable_policy', CONCURRENCY_LIST_EDITABLE_POLICY_ABORT_ALL),
7180
(ConcurrentModelAdmin, 'form', DELETE_ATTRIBUTE)):
7281

73-
with self.settings(MIDDLEWARE_CLASSES=middlewares):
74-
75-
saved, __ = SimpleConcurrentModel.objects.get_or_create(pk=id)
82+
saved, __ = SimpleConcurrentModel.objects.get_or_create(pk=id)
7683

77-
url = reverse('admin:demo_simpleconcurrentmodel_change', args=[saved.pk])
78-
res = self.app.get(url, user='sax')
79-
form = res.form
84+
url = reverse('admin:demo_simpleconcurrentmodel_change', args=[saved.pk])
85+
res = self.app.get(url, user=self.user.username)
86+
form = res.form
8087

81-
saved.save() # create conflict here
88+
saved.save() # create conflict here
8289

83-
res = form.submit(expect_errors=True)
90+
res = form.submit(expect_errors=True)
8491

85-
self.assertEqual(res.status_code, 409)
92+
self.assertEqual(res.status_code, 409)
8693

87-
target = res.context['target']
88-
self.assertIn('target', res.context)
89-
self.assertIn('saved', res.context)
94+
target = res.context['target']
95+
self.assertIn('target', res.context)
96+
self.assertIn('saved', res.context)
9097

91-
self.assertEqual(res.context['target'].version, target.version)
92-
self.assertEqual(res.context['saved'].version, saved.version)
93-
self.assertEqual(res.context['request_path'], url)
98+
self.assertEqual(res.context['target'].version, target.version)
99+
self.assertEqual(res.context['saved'].version, saved.version)
100+
self.assertEqual(res.context['request_path'], url)
94101

95102
#
96103
# class TestFullStack(DjangoAdminTestCase):

tox.ini

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@ markers =
2222

2323
[testenv]
2424
install_command=pip install {opts} {packages}
25-
pip_pre = True
2625
passenv = TRAVIS TRAVIS_JOB_ID TRAVIS_BRANCH PYTHONDONTWRITEBYTECODE
2726

2827
whitelist_externals =
2928
/usr/local/bin/psql
3029
/bin/sh
30+
/usr/local/bin/mysql
3131
/usr/local/mysql/bin/mysql
3232
/usr/bin/psql
3333
changedir={toxinidir}
@@ -58,12 +58,9 @@ commands =
5858
mysql: - mysql -u root -e 'CREATE DATABASE IF NOT EXISTS concurrency;'
5959
pg: - psql -c 'DROP DATABASE "concurrency";' -U postgres
6060
pg: - psql -c 'CREATE DATABASE "concurrency";' -U postgres
61-
{posargs:py.test tests -rw --create-db}
61+
{posargs:py.test tests -rw -v --create-db}
6262

6363

64-
[testenv:d110]
65-
pip_pre=true
66-
6764
[testenv:clean]
6865
commands =
6966
mysql: - mysql -u root -e 'DROP DATABASE IF EXISTS concurrency;'

0 commit comments

Comments
 (0)