From 433efe06191a7007ca8c5bf8fafee5c7c1439ebb Mon Sep 17 00:00:00 2001
From: Michael Merickel <github@m.merickel.org>
Date: Mon, 15 Oct 2018 04:03:15 +0200
Subject: [PATCH] Merge pull request #3326 from mmerickel/fix-deprecated-accept-predicate

---
 pyramid/tests/test_config/test_routes.py |   46 ++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 44 insertions(+), 2 deletions(-)

diff --git a/pyramid/tests/test_config/test_routes.py b/pyramid/tests/test_config/test_routes.py
index 1d2530c..9f4ce9b 100644
--- a/pyramid/tests/test_config/test_routes.py
+++ b/pyramid/tests/test_config/test_routes.py
@@ -182,10 +182,37 @@
         route = self._assertRoute(config, 'name', 'path', 1)
         predicate = route.predicates[0]
         request = self._makeRequest(config)
-        request.accept = ['text/xml']
+        request.accept = DummyAccept('text/xml')
         self.assertEqual(predicate(None, request), True)
         request = self._makeRequest(config)
-        request.accept = ['text/html']
+        request.accept = DummyAccept('text/html')
+        self.assertEqual(predicate(None, request), False)
+
+    def test_add_route_with_accept_list(self):
+        config = self._makeOne(autocommit=True)
+        config.add_route('name', 'path', accept=['text/xml', 'text/plain'])
+        route = self._assertRoute(config, 'name', 'path', 1)
+        predicate = route.predicates[0]
+        request = self._makeRequest(config)
+        request.accept = DummyAccept('text/xml')
+        self.assertEqual(predicate(None, request), True)
+        request = self._makeRequest(config)
+        request.accept = DummyAccept('text/plain')
+        self.assertEqual(predicate(None, request), True)
+        request = self._makeRequest(config)
+        request.accept = DummyAccept('text/html')
+        self.assertEqual(predicate(None, request), False)
+
+    def test_add_route_with_wildcard_accept(self):
+        config = self._makeOne(autocommit=True)
+        config.add_route('name', 'path', accept='text/*')
+        route = self._assertRoute(config, 'name', 'path', 1)
+        predicate = route.predicates[0]
+        request = self._makeRequest(config)
+        request.accept = DummyAccept('text/xml', contains=True)
+        self.assertEqual(predicate(None, request), True)
+        request = self._makeRequest(config)
+        request.accept = DummyAccept('application/json', contains=False)
         self.assertEqual(predicate(None, request), False)
 
     def test_add_route_no_pattern_with_path(self):
@@ -253,3 +280,18 @@
         self.environ = environ
         self.params = {}
         self.cookies = {}
+
+class DummyAccept(object):
+    def __init__(self, *matches, **kw):
+        self.matches = list(matches)
+        self.contains = kw.pop('contains', False)
+
+    def acceptable_offers(self, offers):
+        results = []
+        for match in self.matches:
+            if match in offers:
+                results.append((match, 1.0))
+        return results
+
+    def __contains__(self, value):
+        return self.contains

--
Gitblit v1.9.3