wcs: publik-django-templatetags integration (#64803)
This commit is contained in:
parent
4f9abf2d00
commit
b6dc499003
|
@ -1,197 +0,0 @@
|
|||
# combo - content management system
|
||||
# Copyright (C) 2020 Entr'ouvert
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify it
|
||||
# under the terms of the GNU Affero General Public License as published
|
||||
# by the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from django.utils.http import urlencode
|
||||
from requests.exceptions import RequestException
|
||||
|
||||
from combo.apps.wcs.utils import get_wcs_services
|
||||
from combo.utils import requests
|
||||
|
||||
|
||||
def get_default_wcs_service_key():
|
||||
services = get_wcs_services()
|
||||
|
||||
for key, service in services.items():
|
||||
if not service.get('secondary', False):
|
||||
# if secondary is not set or not set to True, return this one
|
||||
return key
|
||||
|
||||
return None
|
||||
|
||||
|
||||
class LazyCardDefObjectsManager:
|
||||
def __init__(self, service_key, card_id, custom_view_id=None, filters=None, user=Ellipsis):
|
||||
self._service_key = service_key
|
||||
self._card_id = card_id
|
||||
self._custom_view_id = custom_view_id
|
||||
|
||||
self._filters = filters or {}
|
||||
self._user = user
|
||||
|
||||
self._cached_resultset = None
|
||||
|
||||
def _clone(self):
|
||||
return LazyCardDefObjectsManager(
|
||||
service_key=self._service_key,
|
||||
card_id=self._card_id,
|
||||
custom_view_id=self._custom_view_id,
|
||||
filters=self._filters,
|
||||
user=self._user,
|
||||
)
|
||||
|
||||
def order_by(self, attribute):
|
||||
qs = self._clone()
|
||||
qs._filters['order_by'] = attribute
|
||||
if not attribute:
|
||||
del qs._filters['order_by']
|
||||
return qs
|
||||
|
||||
def with_custom_view(self, custom_view_id):
|
||||
qs = self._clone()
|
||||
qs._custom_view_id = custom_view_id
|
||||
return qs
|
||||
|
||||
def get_full(self):
|
||||
qs = self._clone()
|
||||
qs._filters['full'] = 'on'
|
||||
return qs
|
||||
|
||||
def access_control(self, user):
|
||||
qs = self._clone()
|
||||
qs._user = user
|
||||
return qs
|
||||
|
||||
@property
|
||||
def count(self):
|
||||
return len(self)
|
||||
|
||||
def filter_by(self, attribute):
|
||||
qs = self._clone()
|
||||
qs.pending_attr = attribute
|
||||
return qs
|
||||
|
||||
def apply_filter_value(self, value):
|
||||
assert self.pending_attr
|
||||
qs = self._clone()
|
||||
if value is None:
|
||||
value = ''
|
||||
if isinstance(value, bool):
|
||||
value = str(value).lower()
|
||||
qs._filters['filter-%s' % self.pending_attr] = value
|
||||
return qs
|
||||
|
||||
def filter_by_internal_id(self, internal_id):
|
||||
qs = self._clone()
|
||||
if internal_id:
|
||||
qs._filters['filter-internal-id'] = internal_id
|
||||
return qs
|
||||
|
||||
def filter_by_number(self, number):
|
||||
qs = self._clone()
|
||||
if number:
|
||||
qs._filters['filter-number'] = number
|
||||
return qs
|
||||
|
||||
def filter_by_user(self, user):
|
||||
qs = self._clone()
|
||||
if user and user.is_authenticated and user.get_name_id():
|
||||
qs._filters['filter-user-uuid'] = user.get_name_id()
|
||||
return qs
|
||||
|
||||
def filter_by_status(self, status):
|
||||
qs = self._clone()
|
||||
if status:
|
||||
qs._filters['filter'] = status
|
||||
return qs
|
||||
|
||||
def _get_results_from_wcs(self):
|
||||
service = get_wcs_services().get(self._service_key)
|
||||
if not service:
|
||||
return []
|
||||
|
||||
api_url = 'api/cards/%s/list' % self._card_id
|
||||
if self._custom_view_id:
|
||||
api_url += '/%s' % self._custom_view_id
|
||||
if self._filters:
|
||||
query = urlencode(self._filters)
|
||||
api_url += '?%s' % query
|
||||
without_user = self._user is Ellipsis # not set
|
||||
try:
|
||||
response = requests.get(
|
||||
api_url,
|
||||
remote_service=service,
|
||||
user=None if without_user else self._user,
|
||||
without_user=without_user,
|
||||
log_errors=False,
|
||||
)
|
||||
response.raise_for_status()
|
||||
except RequestException:
|
||||
return []
|
||||
|
||||
if response.json().get('err') == 1:
|
||||
return []
|
||||
|
||||
return response.json().get('data') or []
|
||||
|
||||
def _populate_cache(self):
|
||||
if self._cached_resultset is not None:
|
||||
return
|
||||
self._cached_resultset = self._get_results_from_wcs()
|
||||
|
||||
def __len__(self):
|
||||
self._populate_cache()
|
||||
return len(self._cached_resultset)
|
||||
|
||||
def __getitem__(self, key):
|
||||
try:
|
||||
if not isinstance(key, slice):
|
||||
int(key)
|
||||
except ValueError:
|
||||
raise TypeError
|
||||
self._populate_cache()
|
||||
return self._cached_resultset[key]
|
||||
|
||||
def __iter__(self):
|
||||
self._populate_cache()
|
||||
yield from self._cached_resultset
|
||||
|
||||
def __nonzero__(self):
|
||||
return any(self)
|
||||
|
||||
|
||||
class LazyCardDef:
|
||||
def __init__(self, slug):
|
||||
if ':' in slug:
|
||||
self.service_key, self.card_id = slug.split(':')[:2]
|
||||
else:
|
||||
self.card_id = slug
|
||||
self.service_key = get_default_wcs_service_key()
|
||||
|
||||
@property
|
||||
def objects(self):
|
||||
return LazyCardDefObjectsManager(self.service_key, self.card_id)
|
||||
|
||||
|
||||
class Cards:
|
||||
def __getattr__(self, attr):
|
||||
try:
|
||||
return LazyCardDef(attr)
|
||||
except KeyError:
|
||||
raise AttributeError(attr)
|
||||
|
||||
|
||||
def cards(request):
|
||||
return {'cards': Cards()}
|
|
@ -29,66 +29,6 @@ from combo.utils.misc import is_url_from_known_service
|
|||
register = template.Library()
|
||||
|
||||
|
||||
@register.filter
|
||||
def objects(cards, slug):
|
||||
return getattr(cards, slug).objects
|
||||
|
||||
|
||||
@register.filter
|
||||
def with_custom_view(queryset, custom_view_id):
|
||||
return queryset.with_custom_view(custom_view_id)
|
||||
|
||||
|
||||
@register.filter
|
||||
def get_full(queryset):
|
||||
return queryset.get_full()
|
||||
|
||||
|
||||
@register.filter
|
||||
def access_control(queryset, user):
|
||||
return queryset.access_control(user)
|
||||
|
||||
|
||||
@register.filter
|
||||
def count(queryset):
|
||||
return queryset.count
|
||||
|
||||
|
||||
@register.filter
|
||||
def filter_by(queryset, attribute):
|
||||
return queryset.filter_by(attribute)
|
||||
|
||||
|
||||
@register.filter
|
||||
def filter_value(queryset, value):
|
||||
return queryset.apply_filter_value(value)
|
||||
|
||||
|
||||
@register.filter
|
||||
def filter_by_internal_id(queryset, internal_id):
|
||||
return queryset.filter_by_internal_id(internal_id)
|
||||
|
||||
|
||||
@register.filter
|
||||
def filter_by_number(queryset, number):
|
||||
return queryset.filter_by_number(number)
|
||||
|
||||
|
||||
@register.filter
|
||||
def filter_by_user(queryset, user):
|
||||
return queryset.filter_by_user(user)
|
||||
|
||||
|
||||
@register.filter
|
||||
def filter_by_status(queryset, status):
|
||||
return queryset.filter_by_status(status)
|
||||
|
||||
|
||||
@register.filter
|
||||
def order_by(queryset, attribute):
|
||||
return queryset.order_by(attribute)
|
||||
|
||||
|
||||
@register.filter
|
||||
def format_text(field, value):
|
||||
if field.get('pre'):
|
||||
|
|
|
@ -345,18 +345,6 @@ def get(obj, key):
|
|||
return None
|
||||
|
||||
|
||||
@register.filter
|
||||
def getlist(mapping, key):
|
||||
if mapping is None:
|
||||
return []
|
||||
mapping = list(mapping)
|
||||
for value in mapping:
|
||||
try:
|
||||
yield value.get(key)
|
||||
except AttributeError:
|
||||
yield None
|
||||
|
||||
|
||||
@register.filter
|
||||
def split(string, separator=' '):
|
||||
return (force_text(string) or '').split(separator)
|
||||
|
@ -411,11 +399,6 @@ def is_empty_placeholder(page, placeholder_name):
|
|||
return len([x for x in page.get_cells() if x.placeholder == placeholder_name]) == 0
|
||||
|
||||
|
||||
@register.filter(name='list')
|
||||
def as_list(obj):
|
||||
return list(obj)
|
||||
|
||||
|
||||
@register.filter(name='as_json')
|
||||
def as_json(obj):
|
||||
return json.dumps(obj)
|
||||
|
|
|
@ -115,12 +115,14 @@ TEMPLATES = [
|
|||
'django.template.context_processors.tz',
|
||||
'django.contrib.messages.context_processors.messages',
|
||||
'combo.context_processors.template_vars',
|
||||
'combo.apps.wcs.context_processors.cards',
|
||||
'publik_django_templatetags.wcs.context_processors.cards',
|
||||
],
|
||||
'builtins': [
|
||||
'combo.public.templatetags.combo',
|
||||
'publik_django_templatetags.publik.templatetags.publik',
|
||||
'django.contrib.humanize.templatetags.humanize',
|
||||
'combo.apps.wcs.templatetags.wcs',
|
||||
'publik_django_templatetags.wcs.templatetags.wcs',
|
||||
],
|
||||
},
|
||||
},
|
||||
|
|
|
@ -27,7 +27,8 @@ Depends: ${misc:Depends}, ${python3:Depends},
|
|||
python3-pycryptodome,
|
||||
python3-pywebpush,
|
||||
python3-pygal,
|
||||
python3-lxml
|
||||
python3-lxml,
|
||||
python3-publik-django-templatetags
|
||||
Recommends: python3-django-mellon
|
||||
Conflicts: python-lingo
|
||||
Breaks: combo (<< 2.34.post2)
|
||||
|
|
|
@ -3,9 +3,9 @@ from unittest import mock
|
|||
|
||||
import pytest
|
||||
from django.test.client import RequestFactory
|
||||
from publik_django_templatetags.wcs.context_processors import Cards
|
||||
|
||||
from combo.apps.family.models import WeeklyAgendaCell
|
||||
from combo.apps.wcs.context_processors import Cards
|
||||
from combo.data.models import Page
|
||||
|
||||
from .test_manager import login
|
||||
|
@ -92,7 +92,7 @@ def test_weeklyagenda_cell_user_external_id(context):
|
|||
context['synchronous'] = True # to get fresh content
|
||||
|
||||
data = {'data': []}
|
||||
with mock.patch('combo.utils.requests.get') as requests_get:
|
||||
with mock.patch('requests.Session.get') as requests_get:
|
||||
requests_get.return_value = MockedRequestResponse(content=json.dumps(data))
|
||||
cell.render(context)
|
||||
assert requests_get.call_args_list[0][0][0] == (
|
||||
|
@ -101,7 +101,7 @@ def test_weeklyagenda_cell_user_external_id(context):
|
|||
)
|
||||
|
||||
context['request'].user = MockUserWithNameId()
|
||||
with mock.patch('combo.utils.requests.get') as requests_get:
|
||||
with mock.patch('requests.Session.get') as requests_get:
|
||||
requests_get.return_value = MockedRequestResponse(content=json.dumps(data))
|
||||
cell.render(context)
|
||||
assert requests_get.call_args_list[0][0][0] == (
|
||||
|
@ -111,7 +111,7 @@ def test_weeklyagenda_cell_user_external_id(context):
|
|||
|
||||
cell.user_external_template = 'some-key:{{ user_nameid }}' # check that templating is ok
|
||||
cell.save()
|
||||
with mock.patch('combo.utils.requests.get') as requests_get:
|
||||
with mock.patch('requests.Session.get') as requests_get:
|
||||
requests_get.return_value = MockedRequestResponse(content=json.dumps(data))
|
||||
cell.render(context)
|
||||
assert requests_get.call_args_list[0][0][0] == (
|
||||
|
@ -128,7 +128,7 @@ def test_weeklyagenda_cell_agenda_references_template(context):
|
|||
context['synchronous'] = True # to get fresh content
|
||||
|
||||
data = {'data': []}
|
||||
with mock.patch('combo.utils.requests.get') as requests_get:
|
||||
with mock.patch('requests.Session.get') as requests_get:
|
||||
requests_get.return_value = MockedRequestResponse(content=json.dumps(data))
|
||||
cell.render(context)
|
||||
assert requests_get.call_args_list[0][0][0] == (
|
||||
|
@ -138,7 +138,7 @@ def test_weeklyagenda_cell_agenda_references_template(context):
|
|||
|
||||
cell.agenda_references_template = 'some-agenda,other-agenda'
|
||||
cell.save()
|
||||
with mock.patch('combo.utils.requests.get') as requests_get:
|
||||
with mock.patch('requests.Session.get') as requests_get:
|
||||
requests_get.return_value = MockedRequestResponse(content=json.dumps(data))
|
||||
cell.render(context)
|
||||
assert requests_get.call_args_list[0][0][0] == (
|
||||
|
@ -152,7 +152,7 @@ def test_weeklyagenda_cell_agenda_references_template(context):
|
|||
',some-agenda,other-agenda,{{ user_nameid }}' # check that templating is ok
|
||||
)
|
||||
cell.save()
|
||||
with mock.patch('combo.utils.requests.get') as requests_get:
|
||||
with mock.patch('requests.Session.get') as requests_get:
|
||||
requests_get.return_value = MockedRequestResponse(content=json.dumps(data))
|
||||
cell.render(context)
|
||||
assert requests_get.call_args_list[1][0][0] == (
|
||||
|
@ -171,7 +171,7 @@ def test_weeklyagenda_cell_agenda_subscribed(context):
|
|||
context['synchronous'] = True # to get fresh content
|
||||
|
||||
data = {'data': []}
|
||||
with mock.patch('combo.utils.requests.get') as requests_get:
|
||||
with mock.patch('requests.Session.get') as requests_get:
|
||||
requests_get.return_value = MockedRequestResponse(content=json.dumps(data))
|
||||
cell.render(context)
|
||||
assert requests_get.call_args_list[0][0][0] == (
|
||||
|
@ -194,7 +194,7 @@ def test_weeklyagenda_cell_agenda_agenda_categories(context):
|
|||
context['synchronous'] = True # to get fresh content
|
||||
|
||||
data = {'data': []}
|
||||
with mock.patch('combo.utils.requests.get') as requests_get:
|
||||
with mock.patch('requests.Session.get') as requests_get:
|
||||
requests_get.return_value = MockedRequestResponse(content=json.dumps(data))
|
||||
cell.render(context)
|
||||
assert requests_get.call_args_list[0][0][0] == (
|
||||
|
@ -205,7 +205,7 @@ def test_weeklyagenda_cell_agenda_agenda_categories(context):
|
|||
context['request'].user = MockUserWithNameId()
|
||||
cell.agenda_categories = 'foo,bar,foobar,{{ user_nameid }}' # check that templating is ok
|
||||
cell.save()
|
||||
with mock.patch('combo.utils.requests.get') as requests_get:
|
||||
with mock.patch('requests.Session.get') as requests_get:
|
||||
requests_get.return_value = MockedRequestResponse(content=json.dumps(data))
|
||||
cell.render(context)
|
||||
assert requests_get.call_args_list[0][0][0] == (
|
||||
|
@ -225,7 +225,7 @@ def test_weeklyagenda_cell_filter_dates(context, agenda_type, agenda_param):
|
|||
context['synchronous'] = True # to get fresh content
|
||||
|
||||
data = {'data': []}
|
||||
with mock.patch('combo.utils.requests.get') as requests_get:
|
||||
with mock.patch('requests.Session.get') as requests_get:
|
||||
requests_get.return_value = MockedRequestResponse(content=json.dumps(data))
|
||||
cell.render(context)
|
||||
assert requests_get.call_args_list[0][0][0] == (
|
||||
|
@ -236,7 +236,7 @@ def test_weeklyagenda_cell_filter_dates(context, agenda_type, agenda_param):
|
|||
|
||||
cell.start_date_filter = '2021-09-01'
|
||||
cell.save()
|
||||
with mock.patch('combo.utils.requests.get') as requests_get:
|
||||
with mock.patch('requests.Session.get') as requests_get:
|
||||
requests_get.return_value = MockedRequestResponse(content=json.dumps(data))
|
||||
cell.render(context)
|
||||
assert requests_get.call_args_list[0][0][0] == (
|
||||
|
@ -247,7 +247,7 @@ def test_weeklyagenda_cell_filter_dates(context, agenda_type, agenda_param):
|
|||
|
||||
cell.end_date_filter = '2022-08-31'
|
||||
cell.save()
|
||||
with mock.patch('combo.utils.requests.get') as requests_get:
|
||||
with mock.patch('requests.Session.get') as requests_get:
|
||||
requests_get.return_value = MockedRequestResponse(content=json.dumps(data))
|
||||
cell.render(context)
|
||||
assert requests_get.call_args_list[0][0][0] == (
|
||||
|
@ -260,7 +260,7 @@ def test_weeklyagenda_cell_filter_dates(context, agenda_type, agenda_param):
|
|||
cell.start_date_filter = ''
|
||||
cell.end_date_filter = '{{ user_nameid }}' # check that templating is ok
|
||||
cell.save()
|
||||
with mock.patch('combo.utils.requests.get') as requests_get:
|
||||
with mock.patch('requests.Session.get') as requests_get:
|
||||
requests_get.return_value = MockedRequestResponse(content=json.dumps(data))
|
||||
cell.render(context)
|
||||
assert requests_get.call_args_list[0][0][0] == (
|
||||
|
@ -282,14 +282,14 @@ def test_weeklyagenda_cell_booking_form_url(context):
|
|||
context['synchronous'] = True # to get fresh content
|
||||
context['request'].user = MockUserWithNameId()
|
||||
|
||||
with mock.patch('combo.utils.requests.get') as requests_get:
|
||||
with mock.patch('requests.Session.get') as requests_get:
|
||||
requests_get.return_value = MockedRequestResponse(content=json.dumps(data))
|
||||
result = cell.render(context)
|
||||
assert 'booking-btn' not in result
|
||||
|
||||
cell.booking_form_url = 'http://example.com/foobar/'
|
||||
cell.save()
|
||||
with mock.patch('combo.utils.requests.get') as requests_get:
|
||||
with mock.patch('requests.Session.get') as requests_get:
|
||||
requests_get.return_value = MockedRequestResponse(content=json.dumps(data))
|
||||
result = cell.render(context)
|
||||
assert 'booking-btn' in result
|
||||
|
@ -297,7 +297,7 @@ def test_weeklyagenda_cell_booking_form_url(context):
|
|||
|
||||
cell.booking_form_url = 'http://example.com/foobar/?user={{ user_nameid }}'
|
||||
cell.save()
|
||||
with mock.patch('combo.utils.requests.get') as requests_get:
|
||||
with mock.patch('requests.Session.get') as requests_get:
|
||||
requests_get.return_value = MockedRequestResponse(content=json.dumps(data))
|
||||
result = cell.render(context)
|
||||
assert 'booking-btn' in result
|
||||
|
|
|
@ -462,7 +462,7 @@ def context():
|
|||
return ctx
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_form_cell_setup(mock_send):
|
||||
cell = WcsFormCell()
|
||||
form_class = cell.get_default_form_class()
|
||||
|
@ -480,7 +480,7 @@ def test_form_cell_setup(mock_send):
|
|||
assert 'extra_css_class' not in form.fields
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_form_cell_save_cache(mock_send):
|
||||
page = Page(title='xxx', slug='test_form_cell_save_cache', template_name='standard')
|
||||
page.save()
|
||||
|
@ -508,7 +508,7 @@ def test_form_cell_save_cache(mock_send):
|
|||
assert WcsFormCell.objects.get(id=cell.id).cached_title == 'form title'
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_form_cell_validity(mock_send):
|
||||
page = Page.objects.create(title='xxx', slug='test_form_cell_save_cache', template_name='standard')
|
||||
cell = WcsFormCell.objects.create(page=page, placeholder='content', order=0)
|
||||
|
@ -547,7 +547,7 @@ def test_form_cell_validity(mock_send):
|
|||
assert validity_info.invalid_since is not None
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_form_cell_load(mock_send):
|
||||
page = Page(title='xxx', slug='test_form_cell_save_cache', template_name='standard')
|
||||
page.save()
|
||||
|
@ -565,7 +565,7 @@ def test_form_cell_load(mock_send):
|
|||
assert cell.cached_title == 'form title'
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_category_cell_save_cache(mock_send):
|
||||
page = Page(title='xxx', slug='test_category_cell_save_cache', template_name='standard')
|
||||
page.save()
|
||||
|
@ -577,7 +577,7 @@ def test_category_cell_save_cache(mock_send):
|
|||
assert cell.get_additional_label() == 'Test 3'
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_category_cell_validity(mock_send):
|
||||
page = Page.objects.create(title='xxx', slug='test_category_cell_save_cache', template_name='standard')
|
||||
cell = WcsCategoryCell.objects.create(page=page, placeholder='content', order=0)
|
||||
|
@ -616,7 +616,7 @@ def test_category_cell_validity(mock_send):
|
|||
assert validity_info.invalid_since is not None
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_categories_cell_check_validity(mock_send):
|
||||
page = Page.objects.create(title='xxx', slug='test', template_name='standard')
|
||||
cell = CategoriesCell.objects.create(page=page, placeholder='content', order=0)
|
||||
|
@ -636,7 +636,7 @@ def test_categories_cell_check_validity(mock_send):
|
|||
assert ValidityInfo.objects.exists() is False
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_form_cell_render(mock_send):
|
||||
page = Page(title='xxx', slug='test_form_cell_render', template_name='standard')
|
||||
page.save()
|
||||
|
@ -648,7 +648,7 @@ def test_form_cell_render(mock_send):
|
|||
assert 'form title' in result
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_current_forms_cell_setup(mock_send):
|
||||
cell = WcsCurrentFormsCell()
|
||||
form_class = cell.get_default_form_class()
|
||||
|
@ -673,7 +673,7 @@ def test_current_forms_cell_setup(mock_send):
|
|||
assert cell.get_additional_label() == 'All Sites - Done Forms'
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_current_forms_cell_render(mock_send, context):
|
||||
page = Page(title='xxx', slug='test_current_forms_cell_render', template_name='standard')
|
||||
page.save()
|
||||
|
@ -843,7 +843,7 @@ def test_current_forms_cell_render(mock_send, context):
|
|||
assert '<h2>Foo bar</h2>' in result
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_current_forms_cell_validity(mock_send, context):
|
||||
page = Page.objects.create(title='xxx', slug='test_current_forms_cell_render', template_name='standard')
|
||||
cell = WcsCurrentFormsCell.objects.create(page=page, placeholder='content', order=0)
|
||||
|
@ -873,7 +873,7 @@ def test_current_forms_cell_validity(mock_send, context):
|
|||
assert ValidityInfo.objects.exists() is False
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_current_forms_cell_check_validity(mock_send, context):
|
||||
page = Page.objects.create(title='xxx', slug='test_current_forms_cell_render', template_name='standard')
|
||||
cell = WcsCurrentFormsCell.objects.create(page=page, placeholder='content', order=0)
|
||||
|
@ -932,7 +932,7 @@ def test_current_forms_cell_check_validity(mock_send, context):
|
|||
assert ValidityInfo.objects.exists() is False
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_current_forms_cell_render_single_site(mock_send, context):
|
||||
page = Page(title='xxx', slug='test_current_forms_cell_render', template_name='standard')
|
||||
page.save()
|
||||
|
@ -994,7 +994,7 @@ def test_care_forms_cell_setup():
|
|||
assert cell.get_additional_label() == 'test'
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_care_forms_cell_render(mock_send, context):
|
||||
page = Page(title='xxx', slug='test_care_forms_cell_render', template_name='standard')
|
||||
page.save()
|
||||
|
@ -1125,7 +1125,7 @@ def test_care_forms_cell_validity(context):
|
|||
assert validity_info.invalid_since is not None
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_care_forms_cell_check_validity(mock_send, context):
|
||||
page = Page.objects.create(title='xxx', slug='test_care_forms_cell_render', template_name='standard')
|
||||
cell = WcsCareFormsCell.objects.create(page=page, placeholder='content', order=0)
|
||||
|
@ -1184,7 +1184,7 @@ def test_care_forms_cell_check_validity(mock_send, context):
|
|||
assert ValidityInfo.objects.exists() is False
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_care_forms_cell_render_single_site(mock_send, context):
|
||||
page = Page(title='xxx', slug='test_care_forms_cell_render', template_name='standard')
|
||||
page.save()
|
||||
|
@ -1212,7 +1212,7 @@ def test_care_forms_cell_render_single_site(mock_send, context):
|
|||
assert 'other' not in data
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_forms_of_category_cell_setup(mock_send):
|
||||
cell = WcsFormsOfCategoryCell()
|
||||
form_class = cell.get_default_form_class()
|
||||
|
@ -1225,7 +1225,7 @@ def test_forms_of_category_cell_setup(mock_send):
|
|||
]
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_forms_of_category_cell_render(mock_send, context):
|
||||
page = Page(title='xxx', slug='test_forms_of_category_cell_render', template_name='standard')
|
||||
page.save()
|
||||
|
@ -1288,7 +1288,7 @@ def test_forms_of_category_cell_render(mock_send, context):
|
|||
context.pop('combo_display_even_empty_categories')
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_forms_of_category_cancelurl(mock_send, app):
|
||||
page = Page(title='xxx', slug='test_forms_of_category_cell_render', template_name='standard')
|
||||
page.save()
|
||||
|
@ -1306,7 +1306,7 @@ def test_forms_of_category_cancelurl(mock_send, app):
|
|||
)
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_forms_of_category_cell_validity(mock_send, context):
|
||||
page = Page.objects.create(
|
||||
title='xxx', slug='test_forms_of_category_cell_render', template_name='standard'
|
||||
|
@ -1354,7 +1354,7 @@ def test_forms_of_category_cell_validity(mock_send, context):
|
|||
assert validity_info.invalid_since is not None
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_forms_of_category_cell_check_validity(mock_send, context):
|
||||
page = Page.objects.create(
|
||||
title='xxx', slug='test_forms_of_category_cell_render', template_name='standard'
|
||||
|
@ -1390,7 +1390,7 @@ def test_current_drafts_cell_render_unlogged(context):
|
|||
assert 'http://127.0.0.1:8999/third-form-title' not in result # no form
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_current_drafts_cell_render_logged_in(mock_send, context):
|
||||
page = Page(title='xxx', slug='test_current_drafts_cell_render', template_name='standard')
|
||||
page.save()
|
||||
|
@ -1468,7 +1468,7 @@ def test_current_drafts_cell_render_logged_in(mock_send, context):
|
|||
assert requests_get.call_args_list[0][0][0] == '/api/user/drafts'
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_current_drafts_cell_check_validity(mock_send, context):
|
||||
page = Page.objects.create(title='xxx', slug='test_current_forms_cell_render', template_name='standard')
|
||||
cell = WcsCurrentDraftsCell.objects.create(page=page, placeholder='content', order=0)
|
||||
|
@ -1527,7 +1527,7 @@ def test_current_drafts_cell_check_validity(mock_send, context):
|
|||
assert ValidityInfo.objects.exists() is False
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_manager_forms_of_category_cell(mock_send, app, admin_user):
|
||||
page = Page(title='One', slug='one', template_name='standard')
|
||||
page.save()
|
||||
|
@ -1554,7 +1554,7 @@ def test_manager_forms_of_category_cell(mock_send, app, admin_user):
|
|||
assert cells[0].manual_order == {'data': ['default::a-second-form-title', 'default::third-form-title']}
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_manager_current_forms(mock_send, settings, app, admin_user):
|
||||
page = Page(title='One', slug='one', template_name='standard')
|
||||
page.save()
|
||||
|
@ -1594,7 +1594,7 @@ def test_manager_current_forms(mock_send, settings, app, admin_user):
|
|||
assert resp.form['c%s-wcs_site' % cells[0].get_reference()].attrs['type'] == 'hidden'
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_manager_forms_in_your_care_cell(mock_send, app, admin_user):
|
||||
page = Page(title='One', slug='one', template_name='standard')
|
||||
page.save()
|
||||
|
@ -1618,7 +1618,7 @@ def test_manager_forms_in_your_care_cell(mock_send, app, admin_user):
|
|||
assert cells[0].cache_duration == 10
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_manager_cards_cell(mock_send, app, admin_user):
|
||||
page = Page.objects.create(title='xxx', slug='test_cards_cell_save_cache', template_name='standard')
|
||||
cell = WcsCardsCell.objects.create(page=page, placeholder='content', order=0)
|
||||
|
@ -1635,7 +1635,7 @@ def test_manager_cards_cell(mock_send, app, admin_user):
|
|||
assert resp.forms[0]['c%s-with_user' % cell.get_reference()].value is None
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_cards_cell_setup(mock_send):
|
||||
cell = WcsCardsCell()
|
||||
form_class = cell.get_default_form_class()
|
||||
|
@ -1662,7 +1662,7 @@ def test_cards_cell_setup(mock_send):
|
|||
]
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_cards_cell_save_cache(mock_send):
|
||||
page = Page.objects.create(title='xxx', slug='test_cards_cell_save_cache', template_name='standard')
|
||||
cell = WcsCardsCell(page=page, placeholder='content', order=0)
|
||||
|
@ -1691,7 +1691,7 @@ def test_cards_cell_save_cache(mock_send):
|
|||
assert WcsCardsCell.objects.get(pk=cell.pk).cached_title == 'Card Model 1 - bar'
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_cards_cell_validity(mock_send):
|
||||
page = Page.objects.create(title='xxx', template_name='standard')
|
||||
cell = WcsCardsCell.objects.create(page=page, placeholder='content', order=0)
|
||||
|
@ -1740,7 +1740,7 @@ def test_cards_cell_validity(mock_send):
|
|||
assert validity_info.invalid_since is not None
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_cards_cell_load(mock_send):
|
||||
page = Page.objects.create(title='xxx', slug='test_cards', template_name='standard')
|
||||
cell = WcsCardsCell(page=page, placeholder='content', order=0)
|
||||
|
@ -1769,7 +1769,7 @@ def test_cards_cell_load(mock_send):
|
|||
assert cell.cached_title == 'Card Model 1 - bar'
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_cards_cell_render(mock_send, context):
|
||||
page = Page.objects.create(title='xxx', template_name='standard')
|
||||
cell = WcsCardsCell(page=page, placeholder='content', order=0)
|
||||
|
@ -1838,7 +1838,7 @@ def test_cards_cell_render(mock_send, context):
|
|||
assert '<h2>Foo bar</h2>' in result
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_cards_cell_only_for_user(mock_send, context):
|
||||
page = Page.objects.create(title='xxx', template_name='standard')
|
||||
cell = WcsCardsCell(page=page, placeholder='content', order=0)
|
||||
|
@ -1872,7 +1872,7 @@ def test_cards_cell_only_for_user(mock_send, context):
|
|||
assert 'filter-user-uuid=xyz' in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_cards_cell_render_user(mock_send, context, nocache):
|
||||
page = Page.objects.create(title='xxx', template_name='standard')
|
||||
cell = WcsCardsCell(page=page, placeholder='content', order=0)
|
||||
|
@ -1931,7 +1931,7 @@ def test_cards_cell_render_user(mock_send, context, nocache):
|
|||
assert 'email' not in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_card_cell_setup(mock_send, app, admin_user):
|
||||
page = Page.objects.create(
|
||||
title='xxx', slug='test_card_cell_save_cache', template_name='standard', sub_slug='foobar'
|
||||
|
@ -2140,7 +2140,7 @@ def test_card_cell_custom_schema_migration():
|
|||
}
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_card_cell_save_cache(mock_send):
|
||||
page = Page.objects.create(title='xxx', slug='test_card_cell_save_cache', template_name='standard')
|
||||
cell = WcsCardInfosCell(page=page, placeholder='content', order=0)
|
||||
|
@ -2164,7 +2164,7 @@ def test_card_cell_save_cache(mock_send):
|
|||
assert WcsCardInfosCell.objects.get(pk=cell.pk).cached_json != {}
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_card_cell_validity(mock_send):
|
||||
page = Page.objects.create(title='xxx', template_name='standard')
|
||||
cell = WcsCardInfosCell.objects.create(page=page, placeholder='content', order=0)
|
||||
|
@ -2208,7 +2208,7 @@ def test_card_cell_validity(mock_send):
|
|||
assert validity_info.invalid_since is not None
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_card_cell_check_validity(mock_send):
|
||||
page = Page.objects.create(title='xxx', template_name='standard')
|
||||
cell = WcsCardInfosCell.objects.create(
|
||||
|
@ -2249,7 +2249,7 @@ def test_card_cell_check_validity(mock_send):
|
|||
assert validity_info.invalid_since is not None
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_manager_card_cell(mock_send, app, admin_user):
|
||||
page = Page.objects.create(title='xxx', slug='test_cards', template_name='standard', sub_slug='foobar')
|
||||
cell = WcsCardInfosCell.objects.create(page=page, placeholder='content', order=0)
|
||||
|
@ -2456,7 +2456,7 @@ def test_manager_card_cell(mock_send, app, admin_user):
|
|||
]
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_card_cell_load(mock_send):
|
||||
page = Page.objects.create(title='xxx', slug='test_cards', template_name='standard')
|
||||
cell = WcsCardInfosCell(page=page, placeholder='content', order=0)
|
||||
|
@ -2473,7 +2473,7 @@ def test_card_cell_load(mock_send):
|
|||
assert cell.cached_title == 'Card Model 1'
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_card_cell_render(mock_send, context, app):
|
||||
page = Page.objects.create(title='xxx', template_name='standard')
|
||||
cell = WcsCardInfosCell(page=page, placeholder='content', order=0)
|
||||
|
@ -2606,7 +2606,7 @@ def test_card_cell_render(mock_send, context, app):
|
|||
assert not result.strip()
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_card_cell_render_text_field(mock_send, context):
|
||||
page = Page.objects.create(title='xxx', template_name='standard')
|
||||
cell = WcsCardInfosCell(page=page, placeholder='content', order=0)
|
||||
|
@ -2638,7 +2638,7 @@ def test_card_cell_render_text_field(mock_send, context):
|
|||
)
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_card_cell_render_email_field(mock_send, context):
|
||||
page = Page.objects.create(title='xxx', template_name='standard')
|
||||
cell = WcsCardInfosCell(page=page, placeholder='content', order=0)
|
||||
|
@ -2660,7 +2660,7 @@ def test_card_cell_render_email_field(mock_send, context):
|
|||
)
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_card_cell_render_string_with_url_field(mock_send, context):
|
||||
page = Page.objects.create(title='xxx', template_name='standard')
|
||||
cell = WcsCardInfosCell(page=page, placeholder='content', order=0)
|
||||
|
@ -2684,7 +2684,7 @@ def test_card_cell_render_string_with_url_field(mock_send, context):
|
|||
)
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_card_cell_render_custom_schema_card_field(mock_send, context):
|
||||
page = Page.objects.create(title='xxx', template_name='standard')
|
||||
cell = WcsCardInfosCell.objects.create(
|
||||
|
@ -2834,7 +2834,7 @@ def test_card_cell_render_custom_schema_card_field(mock_send, context):
|
|||
assert PyQuery(result).find('.value a').attr['href'] == 'https://www.example.net/'
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_card_cell_render_custom_schema_card_empty_field(mock_send, context):
|
||||
page = Page.objects.create(title='xxx', template_name='standard')
|
||||
cell = WcsCardInfosCell.objects.create(
|
||||
|
@ -2929,7 +2929,7 @@ def test_card_cell_render_custom_schema_card_empty_field(mock_send, context):
|
|||
)
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_card_cell_render_custom_schema_custom_entry(mock_send, context, app):
|
||||
page = Page.objects.create(title='xxx', template_name='standard')
|
||||
cell = WcsCardInfosCell.objects.create(
|
||||
|
@ -3046,7 +3046,7 @@ def test_card_cell_render_custom_schema_custom_entry(mock_send, context, app):
|
|||
assert PyQuery(result).find('div.cell--body') == []
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_card_cell_render_custom_schema_link_entry(mock_send, context, app):
|
||||
page = Page.objects.create(title='xxx', template_name='standard')
|
||||
cell = WcsCardInfosCell.objects.create(
|
||||
|
@ -3104,7 +3104,7 @@ def test_card_cell_render_custom_schema_link_entry(mock_send, context, app):
|
|||
)
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_card_cell_render_identifier(mock_send, nocache, app):
|
||||
page = Page.objects.create(
|
||||
title='xxx', slug='foo', template_name='standard', sub_slug='(?P<card_model_1_id>[a-z0-9]+)'
|
||||
|
@ -3240,7 +3240,7 @@ def test_card_cell_render_identifier(mock_send, nocache, app):
|
|||
assert cell_resp.text.replace('\n', '') == '' # empty-cell
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_card_cell_render_identifier_from_related(mock_send, nocache, app):
|
||||
page = Page.objects.create(title='xxx', slug='foo', template_name='standard')
|
||||
cell = WcsCardInfosCell.objects.create(
|
||||
|
@ -3681,7 +3681,7 @@ def test_card_cell_render_identifier_from_related(mock_send, nocache, app):
|
|||
|
||||
|
||||
@pytest.mark.parametrize('carddef_reference', ['default:card_model_1', 'default:card_model_1:foo'])
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_card_cell_render_user(mock_send, context, nocache, carddef_reference):
|
||||
page = Page.objects.create(title='xxx', template_name='standard')
|
||||
cell = WcsCardInfosCell(page=page, placeholder='content', order=0)
|
||||
|
@ -3862,7 +3862,7 @@ def test_tracking_code_cell(app, nocache):
|
|||
resp = app.post(reverse('wcs-tracking-code'), params={'cell': cell.id}, status=400)
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_tracking_code_cell_check_validity(mock_send):
|
||||
page = Page.objects.create(title='xxx', slug='test', template_name='standard')
|
||||
cell = TrackingCodeInputCell.objects.create(page=page, placeholder='content', order=0)
|
||||
|
@ -3882,7 +3882,7 @@ def test_tracking_code_cell_check_validity(mock_send):
|
|||
assert ValidityInfo.objects.exists() is False
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_cell_assets(mock_send, settings, app, admin_user):
|
||||
page = Page.objects.create(title='xxx', slug='test_cell_assets', template_name='standard')
|
||||
cell1 = WcsFormCell.objects.create(
|
||||
|
@ -4082,7 +4082,7 @@ def test_backoffice_submission_cell_render(context):
|
|||
assert len(requests_get.call_args_list) == 2
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_backoffice_submission_cell_check_validity(mock_send, context):
|
||||
page = Page.objects.create(title='xxx', slug='test_current_forms_cell_render', template_name='standard')
|
||||
cell = BackofficeSubmissionCell.objects.create(page=page, placeholder='content', order=0)
|
||||
|
@ -4165,7 +4165,7 @@ def test_manager_link_list_cell_duplicate():
|
|||
assert new_item.cached_json == item.cached_json
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_manager_add_edit_delete_list_link_item(mock_send, app, admin_user):
|
||||
page = Page.objects.create(title='One', slug='one', template_name='standard')
|
||||
cell = LinkListCell.objects.create(order=0, placeholder='content', page=page)
|
||||
|
@ -4301,7 +4301,7 @@ def test_hourly():
|
|||
assert hasattr(klass, 'check_validity') is False
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_search_external_forms_links(mock_send, context):
|
||||
page = Page(title='xxx', slug='test_forms_of_category_cell_search', template_name='standard')
|
||||
page.save()
|
||||
|
@ -4332,7 +4332,7 @@ def test_search_external_forms_links(mock_send, context):
|
|||
assert len(hits) == 2
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_card_file_redirection(mock_send, app):
|
||||
page = Page(title='One', slug='one', template_name='standard')
|
||||
page.save()
|
||||
|
|
|
@ -1,14 +1,10 @@
|
|||
import copy
|
||||
import json
|
||||
from unittest import mock
|
||||
|
||||
import pytest
|
||||
from django.template import Context, Template
|
||||
from django.test.client import RequestFactory
|
||||
from requests.exceptions import ConnectionError
|
||||
from requests.models import Response
|
||||
|
||||
from combo.apps.wcs.context_processors import Cards
|
||||
from publik_django_templatetags.wcs.context_processors import Cards
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
|
@ -23,29 +19,6 @@ def context():
|
|||
return ctx
|
||||
|
||||
|
||||
class MockAnonymousUser:
|
||||
is_authenticated = False
|
||||
is_anonymous = True
|
||||
|
||||
|
||||
class MockUser:
|
||||
email = 'foo@example.net'
|
||||
is_authenticated = True
|
||||
is_anonymous = False
|
||||
|
||||
def get_name_id(self):
|
||||
return None
|
||||
|
||||
|
||||
class MockUserWithNameId:
|
||||
email = 'foo@example.net'
|
||||
is_authenticated = True
|
||||
is_anonymous = False
|
||||
|
||||
def get_name_id(self):
|
||||
return 'xyz'
|
||||
|
||||
|
||||
class MockedRequestResponse(mock.Mock):
|
||||
status_code = 200
|
||||
|
||||
|
@ -58,352 +31,13 @@ def mocked_requests_send(request, **kwargs):
|
|||
return MockedRequestResponse(content=json.dumps({'data': data}))
|
||||
|
||||
|
||||
def test_context(context):
|
||||
assert 'cards' in context
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.models.requests.send', side_effect=mocked_requests_send)
|
||||
def test_objects(mock_send, settings, context, nocache):
|
||||
# lazy filters
|
||||
t = Template('{{ cards|objects:"foo" }}')
|
||||
assert t.render(context).startswith(
|
||||
'<combo.apps.wcs.context_processors.LazyCardDefObjectsManager object at'
|
||||
)
|
||||
assert mock_send.call_args_list == [] # lazy
|
||||
t = Template('{{ cards|objects:"default:foo" }}')
|
||||
assert t.render(context).startswith(
|
||||
'<combo.apps.wcs.context_processors.LazyCardDefObjectsManager object at'
|
||||
)
|
||||
assert mock_send.call_args_list == [] # lazy
|
||||
|
||||
# test filters evaluation
|
||||
t = Template('{% for card in cards|objects:"foo" %}{{ card.id }} {% endfor %}')
|
||||
assert t.render(context) == "1 2 "
|
||||
assert mock_send.call_args_list[0][0][0].url.startswith(
|
||||
'http://127.0.0.1:8999/api/cards/foo/list?'
|
||||
) # primary service
|
||||
t = Template('{{ cards|objects:"default:foo"|list }}')
|
||||
t.render(context)
|
||||
assert mock_send.call_args_list[0][0][0].url.startswith('http://127.0.0.1:8999/api/cards/foo/list?')
|
||||
mock_send.reset_mock()
|
||||
t = Template('{{ cards|objects:"other:foo"|list }}')
|
||||
t.render(context)
|
||||
assert mock_send.call_args_list[0][0][0].url.startswith('http://127.0.0.2:8999/api/cards/foo/list?')
|
||||
mock_send.reset_mock()
|
||||
t = Template('{{ cards|objects:"unknown:foo"|list }}')
|
||||
t.render(context)
|
||||
assert mock_send.call_args_list == [] # unknown, not evaluated
|
||||
|
||||
# test card_id with variable
|
||||
context['foobar'] = 'some-slug'
|
||||
mock_send.reset_mock()
|
||||
t = Template('{{ cards|objects:foobar|list }}')
|
||||
t.render(context)
|
||||
assert mock_send.call_args_list[0][0][0].url.startswith('http://127.0.0.1:8999/api/cards/some-slug/list?')
|
||||
|
||||
# test with no secondary param
|
||||
KNOWN_SERVICES = copy.deepcopy(settings.KNOWN_SERVICES)
|
||||
KNOWN_SERVICES['wcs'] = {'default': {'url': 'http://127.0.0.3:8999/'}}
|
||||
settings.KNOWN_SERVICES = KNOWN_SERVICES
|
||||
mock_send.reset_mock()
|
||||
t = Template('{{ cards|objects:"bar"|list }}')
|
||||
t.render(context)
|
||||
assert mock_send.call_args_list[0][0][0].url.startswith('http://127.0.0.3:8999/api/cards/bar/list?')
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.models.requests.send', side_effect=mocked_requests_send)
|
||||
def test_with_custom_view(mock_send, context, nocache):
|
||||
t = Template('{{ cards|objects:"foo"|with_custom_view:"foobar"|list }}')
|
||||
t.render(context)
|
||||
assert mock_send.call_args_list[0][0][0].url.startswith(
|
||||
'http://127.0.0.1:8999/api/cards/foo/list/foobar?'
|
||||
) # primary service
|
||||
t = Template('{{ cards|objects:"default:foo"|with_custom_view:"foobar"|list }}')
|
||||
t.render(context)
|
||||
assert mock_send.call_args_list[0][0][0].url.startswith(
|
||||
'http://127.0.0.1:8999/api/cards/foo/list/foobar?'
|
||||
)
|
||||
mock_send.reset_mock()
|
||||
t = Template('{{ cards|objects:"other:foo"|with_custom_view:"foobar"|list }}')
|
||||
t.render(context)
|
||||
assert mock_send.call_args_list[0][0][0].url.startswith(
|
||||
'http://127.0.0.2:8999/api/cards/foo/list/foobar?'
|
||||
)
|
||||
mock_send.reset_mock()
|
||||
t = Template('{{ cards|objects:"unknown:foo"|with_custom_view:"foobar"|list }}')
|
||||
t.render(context)
|
||||
assert mock_send.call_args_list == [] # unknown, not evaluated
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.models.requests.send', side_effect=mocked_requests_send)
|
||||
def test_full(mock_send, context, nocache):
|
||||
t = Template('{{ cards|objects:"foo"|list }}')
|
||||
t.render(context)
|
||||
assert 'full=on&' not in mock_send.call_args_list[0][0][0].url
|
||||
mock_send.reset_mock()
|
||||
t = Template('{{ cards|objects:"foo"|get_full|list }}')
|
||||
t.render(context)
|
||||
assert 'full=on&' in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.utils.requests.send', side_effect=mocked_requests_send)
|
||||
def test_errors(mock_send, context, nocache):
|
||||
t = Template('{{ cards|objects:"foo"|list }}')
|
||||
|
||||
with mock.patch('combo.apps.wcs.utils.requests.get') as requests_get:
|
||||
mock_resp = Response()
|
||||
mock_resp.status_code = 500
|
||||
requests_get.return_value = mock_resp
|
||||
assert t.render(context) == "[]"
|
||||
|
||||
with mock.patch('combo.apps.wcs.utils.requests.get') as requests_get:
|
||||
requests_get.side_effect = ConnectionError()
|
||||
requests_get.return_value = mock_resp
|
||||
assert t.render(context) == "[]"
|
||||
|
||||
with mock.patch('combo.apps.wcs.utils.requests.get') as requests_get:
|
||||
mock_resp = Response()
|
||||
mock_resp.status_code = 404
|
||||
requests_get.return_value = mock_resp
|
||||
assert t.render(context) == "[]"
|
||||
|
||||
mock_send.side_effect = lambda *a, **k: MockedRequestResponse(content=json.dumps({'err': 1}))
|
||||
assert t.render(context) == "[]"
|
||||
|
||||
mock_send.side_effect = lambda *a, **k: MockedRequestResponse(content=json.dumps({}))
|
||||
assert t.render(context) == "[]"
|
||||
|
||||
mock_send.side_effect = lambda *a, **k: MockedRequestResponse(content=json.dumps({'data': None}))
|
||||
assert t.render(context) == "[]"
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.models.requests.send', side_effect=mocked_requests_send)
|
||||
def test_access_control(mock_send, context, nocache):
|
||||
# no user in context
|
||||
t = Template('{{ cards|objects:"foo"|list }}')
|
||||
t.render(context)
|
||||
assert 'NameID' not in mock_send.call_args_list[0][0][0].url
|
||||
assert 'email' not in mock_send.call_args_list[0][0][0].url
|
||||
mock_send.reset_mock()
|
||||
t = Template('{{ cards|objects:"foo"|access_control:request.user|list }}')
|
||||
t.render(context)
|
||||
assert 'NameID=&' in mock_send.call_args_list[0][0][0].url
|
||||
assert 'email=&' in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
# current user in anonymous
|
||||
context['request'].user = MockAnonymousUser()
|
||||
mock_send.reset_mock()
|
||||
t = Template('{{ cards|objects:"foo"|list }}')
|
||||
t.render(context)
|
||||
assert 'NameID' not in mock_send.call_args_list[0][0][0].url
|
||||
assert 'email' not in mock_send.call_args_list[0][0][0].url
|
||||
mock_send.reset_mock()
|
||||
t = Template('{{ cards|objects:"foo"|access_control:request.user|list }}')
|
||||
t.render(context)
|
||||
assert 'NameID=&' in mock_send.call_args_list[0][0][0].url
|
||||
assert 'email=&' in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
# current user with uuid
|
||||
context['request'].user = MockUserWithNameId()
|
||||
mock_send.reset_mock()
|
||||
t = Template('{{ cards|objects:"foo"|list }}')
|
||||
t.render(context)
|
||||
assert 'NameID' not in mock_send.call_args_list[0][0][0].url
|
||||
assert 'email' not in mock_send.call_args_list[0][0][0].url
|
||||
mock_send.reset_mock()
|
||||
t = Template('{{ cards|objects:"foo"|access_control:request.user|list }}')
|
||||
t.render(context)
|
||||
assert 'NameID=xyz&' in mock_send.call_args_list[0][0][0].url
|
||||
assert 'email' not in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
# current user without uuid
|
||||
context['request'].user = MockUser()
|
||||
mock_send.reset_mock()
|
||||
t = Template('{{ cards|objects:"foo"|list }}')
|
||||
t.render(context)
|
||||
assert 'NameID' not in mock_send.call_args_list[0][0][0].url
|
||||
assert 'email' not in mock_send.call_args_list[0][0][0].url
|
||||
mock_send.reset_mock()
|
||||
t = Template('{{ cards|objects:"foo"|access_control:request.user|list }}')
|
||||
t.render(context)
|
||||
assert 'NameID' not in mock_send.call_args_list[0][0][0].url
|
||||
assert 'email=foo%40example.net&' in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.models.requests.send', side_effect=mocked_requests_send)
|
||||
def test_count(mock_send, context, nocache):
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_publik_django_templatetags_integration(mock_send, context, nocache):
|
||||
t = Template('{{ cards|objects:"foo"|count }}')
|
||||
assert t.render(context) == "2"
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.models.requests.send', side_effect=mocked_requests_send)
|
||||
def test_filter(mock_send, context, nocache):
|
||||
t = Template('{{ cards|objects:"foo"|filter_by:"foo"|filter_value:"bar"|list }}')
|
||||
t.render(context)
|
||||
assert 'filter-foo=bar&' in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
mock_send.reset_mock()
|
||||
t = Template(
|
||||
'{{ cards|objects:"foo"|filter_by:"foo"|filter_value:"bar"|filter_by:"foo2"|filter_value:"bar2"|list }}'
|
||||
)
|
||||
t.render(context)
|
||||
assert 'filter-foo=bar&' in mock_send.call_args_list[0][0][0].url
|
||||
assert 'filter-foo2=bar2&' in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
# check boolean
|
||||
mock_send.reset_mock()
|
||||
t = Template('{{ cards|objects:"foo"|filter_by:"foo"|filter_value:True|list }}')
|
||||
t.render(context)
|
||||
assert 'filter-foo=true&' in mock_send.call_args_list[0][0][0].url
|
||||
mock_send.reset_mock()
|
||||
t = Template('{{ cards|objects:"foo"|filter_by:"foo"|filter_value:False|list }}')
|
||||
t.render(context)
|
||||
assert 'filter-foo=false&' in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
# check None
|
||||
mock_send.reset_mock()
|
||||
t = Template('{{ cards|objects:"foo"|filter_by:"foo"|filter_value:None|list }}')
|
||||
t.render(context)
|
||||
assert 'filter-foo=&' in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.models.requests.send', side_effect=mocked_requests_send)
|
||||
def test_filter_by_internal_id(mock_send, context, nocache):
|
||||
t = Template('{{ cards|objects:"foo"|list }}')
|
||||
t.render(context)
|
||||
assert 'filter-internal-id' not in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
mock_send.reset_mock()
|
||||
t = Template('{{ cards|objects:"foo"|filter_by_internal_id:None|list }}')
|
||||
t.render(context)
|
||||
assert 'filter-internal-id' not in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
mock_send.reset_mock()
|
||||
t = Template('{{ cards|objects:"foo"|filter_by_internal_id:""|list }}')
|
||||
t.render(context)
|
||||
assert 'filter-internal-id' not in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
mock_send.reset_mock()
|
||||
t = Template('{{ cards|objects:"foo"|filter_by_internal_id:"42"|list }}')
|
||||
t.render(context)
|
||||
assert 'filter-internal-id=42&' in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.models.requests.send', side_effect=mocked_requests_send)
|
||||
def test_filter_by_number(mock_send, context, nocache):
|
||||
t = Template('{{ cards|objects:"foo"|list }}')
|
||||
t.render(context)
|
||||
assert 'filter-number' not in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
mock_send.reset_mock()
|
||||
t = Template('{{ cards|objects:"foo"|filter_by_number:None|list }}')
|
||||
t.render(context)
|
||||
assert 'filter-number' not in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
mock_send.reset_mock()
|
||||
t = Template('{{ cards|objects:"foo"|filter_by_number:""|list }}')
|
||||
t.render(context)
|
||||
assert 'filter-number' not in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
mock_send.reset_mock()
|
||||
t = Template('{{ cards|objects:"foo"|filter_by_number:"42-35"|list }}')
|
||||
t.render(context)
|
||||
assert 'filter-number=42-35&' in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.models.requests.send', side_effect=mocked_requests_send)
|
||||
def test_filter_by_user(mock_send, context, nocache):
|
||||
t = Template('{{ cards|objects:"foo"|filter_by_user:request.user|list }}')
|
||||
t.render(context)
|
||||
assert 'filter-user-uuid' not in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
context['request'].user = MockAnonymousUser()
|
||||
mock_send.reset_mock()
|
||||
t.render(context)
|
||||
assert 'filter-user-uuid' not in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
context['request'].user = MockUser()
|
||||
mock_send.reset_mock()
|
||||
t.render(context)
|
||||
assert 'filter-user-uuid' not in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
context['request'].user = MockUserWithNameId()
|
||||
mock_send.reset_mock()
|
||||
t.render(context)
|
||||
assert 'filter-user-uuid=xyz&' in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.models.requests.send', side_effect=mocked_requests_send)
|
||||
def test_filter_by_status(mock_send, context, nocache):
|
||||
t = Template('{{ cards|objects:"foo"|list }}')
|
||||
t.render(context)
|
||||
assert 'filter=&' not in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
mock_send.reset_mock()
|
||||
t = Template('{{ cards|objects:"foo"|filter_by_status:None|list }}')
|
||||
t.render(context)
|
||||
assert 'filter=&' not in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
mock_send.reset_mock()
|
||||
t = Template('{{ cards|objects:"foo"|filter_by_status:""|list }}')
|
||||
t.render(context)
|
||||
assert 'filter=&' not in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
mock_send.reset_mock()
|
||||
t = Template('{{ cards|objects:"foo"|filter_by_status:"foobar"|list }}')
|
||||
t.render(context)
|
||||
assert 'filter=foobar&' in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.models.requests.send', side_effect=mocked_requests_send)
|
||||
def test_getlist(mock_send, context, nocache):
|
||||
t = Template('{% for v in cards|objects:"foo"|getlist:"id" %}{{ v }},{% endfor %}')
|
||||
t.render(context)
|
||||
assert t.render(context) == "1,2,"
|
||||
t = Template('{% for v in cards|objects:"foo"|getlist:"fields" %}{{ v }},{% endfor %}')
|
||||
t.render(context)
|
||||
assert t.render(context) == "{'foo': 'bar'},{'foo': 'baz'},"
|
||||
t = Template('{% for v in cards|objects:"foo"|getlist:"fields"|getlist:"foo" %}{{ v }},{% endfor %}')
|
||||
t.render(context)
|
||||
assert t.render(context) == "bar,baz,"
|
||||
t = Template('{% for v in cards|objects:"foo"|getlist:"fields"|getlist:"unknown" %}{{ v }},{% endfor %}')
|
||||
t.render(context)
|
||||
assert t.render(context) == "None,None,"
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.models.requests.send', side_effect=mocked_requests_send)
|
||||
def test_order_by(mock_send, context, nocache):
|
||||
t = Template('{% for v in cards|objects:"foo" %}{{ v }},{% endfor %}')
|
||||
t.render(context)
|
||||
assert 'order_by' not in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
mock_send.reset_mock()
|
||||
t = Template('{% for v in cards|objects:"foo"|order_by:"bar" %}{{ v }},{% endfor %}')
|
||||
t.render(context)
|
||||
assert 'order_by=bar' in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
mock_send.reset_mock()
|
||||
t = Template('{% for v in cards|objects:"foo"|order_by:"-bar" %}{{ v }},{% endfor %}')
|
||||
t.render(context)
|
||||
assert 'order_by=-bar' in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
mock_send.reset_mock()
|
||||
t = Template('{% for v in cards|objects:"foo"|order_by:"" %}{{ v }},{% endfor %}')
|
||||
t.render(context)
|
||||
assert 'order_by' not in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
mock_send.reset_mock()
|
||||
t = Template('{% for v in cards|objects:"foo"|order_by:"bar"|order_by:"" %}{{ v }},{% endfor %}')
|
||||
t.render(context)
|
||||
assert 'order_by' not in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
mock_send.reset_mock()
|
||||
t = Template('{% for v in cards|objects:"foo"|order_by:""|order_by:"bar" %}{{ v }},{% endfor %}')
|
||||
t.render(context)
|
||||
assert 'order_by=bar' in mock_send.call_args_list[0][0][0].url
|
||||
|
||||
|
||||
@mock.patch('combo.apps.wcs.models.requests.send', side_effect=mocked_requests_send)
|
||||
@mock.patch('requests.Session.send', side_effect=mocked_requests_send)
|
||||
def test_with_explicit_load_wcs(mock_send, context, nocache):
|
||||
t = Template('{% load wcs %}{{ cards|objects:"foo"|count }}')
|
||||
assert t.render(context) == "2"
|
||||
|
|
2
tox.ini
2
tox.ini
|
@ -32,6 +32,7 @@ deps =
|
|||
vobject
|
||||
django-ratelimit<3
|
||||
git+https://git.entrouvert.org/debian/django-ckeditor.git
|
||||
git+https://git.entrouvert.org/publik-django-templatetags.git
|
||||
pre-commit
|
||||
uwsgidecorators
|
||||
commands =
|
||||
|
@ -61,6 +62,7 @@ deps =
|
|||
pyquery
|
||||
psycopg2-binary<2.9
|
||||
git+https://git.entrouvert.org/debian/django-ckeditor.git
|
||||
git+https://git.entrouvert.org/publik-django-templatetags.git
|
||||
uwsgidecorators
|
||||
commands =
|
||||
./getlasso3.sh
|
||||
|
|
Loading…
Reference in New Issue