def assertMessageContains(self, response, text, level=None): """ Asserts that there is exactly one message containing the given text. """ messages = response.context['messages'] matches = [m for m in messages if text in m.message] if len(matches) == 1: msg = matches[0] if (level is not None and msg.level != level and DEFAULT_TAGS[msg.level] != level): msg_level_txt = DEFAULT_TAGS.get(msg.level, 'NO LEVEL') expected_level = DEFAULT_TAGS.get(level, level) self.fail('There was one matching message but with different ' 'level: %s != %s' % (msg_level_txt, expected_level)) self.assertContains(response, text) return elif len(matches) == 0: messages_str = ", ".join('"%s"' % m for m in messages) self.fail('No message contained text "%s", messages were: %s' % ( text, messages_str)) else: self.fail('Multiple messages contained text "%s": %s' % ( text, ", ".join(('"%s"' % m) for m in matches)))
def assertMessageContains(self, response, text, level=None): """ Asserts that there is exactly one message containing the given text. """ messages = response.context['messages'] matches = [m for m in messages if text in m.message] if len(matches) == 1: msg = matches[0] if (level is not None and msg.level != level and DEFAULT_TAGS[msg.level] != level): msg_level_txt = DEFAULT_TAGS.get(msg.level, 'NO LEVEL') expected_level = DEFAULT_TAGS.get(level, level) self.fail('There was one matching message but with different ' 'level: %s != %s' % (msg_level_txt, expected_level)) self.assertContains(response, text) return elif len(matches) == 0: messages_str = ", ".join('"%s"' % m for m in messages) self.fail('No message contained text "%s", messages were: %s' % ( text, messages_str)) else: self.fail('Multiple messages contained text "%s": %s' % ( text, ", ".join(('"%s"' % m) for m in matches)))
from collections import defaultdict from functools import wraps from json import dumps from django.conf import settings from django.conf.urls.defaults import patterns, url from django.contrib.messages import DEFAULT_TAGS, add_message from django.core.exceptions import PermissionDenied from django.core.urlresolvers import reverse from django.http import HttpResponse, HttpResponseBadRequest, HttpResponseRedirect from django.utils.http import urlquote from hitch.support.templates import render_template HTTPS_SCHEME = getattr(settings, 'HTTPS_SCHEME', 'https') MESSAGE_TAGS = dict([tuple(reversed(item)) for item in DEFAULT_TAGS.items()]) log = logging.getLogger(__name__) def viewable(name, path, **params): params.update(name=name, path=path, viewable=True) params['ajax_only'] = params.get('ajax_only', False) params['authenticated'] = params.get('authenticated', False) params['secured'] = (params.get('secured', False) and HTTPS_SCHEME == 'https') def wrapper(view): view.__dict__.update(params) return view return wrapper class Response(object):