mirror of
https://github.com/pretix/pretix.git
synced 2026-05-10 16:04:02 +00:00
Fix tests.api
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
from django.contrib.auth.models import AnonymousUser
|
from django.contrib.auth.models import AnonymousUser
|
||||||
|
from django_scopes import scopes_disabled
|
||||||
from rest_framework import exceptions
|
from rest_framework import exceptions
|
||||||
from rest_framework.authentication import TokenAuthentication
|
from rest_framework.authentication import TokenAuthentication
|
||||||
|
|
||||||
@@ -12,6 +13,7 @@ class DeviceTokenAuthentication(TokenAuthentication):
|
|||||||
def authenticate_credentials(self, key):
|
def authenticate_credentials(self, key):
|
||||||
model = self.get_model()
|
model = self.get_model()
|
||||||
try:
|
try:
|
||||||
|
with scopes_disabled():
|
||||||
device = model.objects.select_related('organizer').get(api_token=key)
|
device = model.objects.select_related('organizer').get(api_token=key)
|
||||||
except model.DoesNotExist:
|
except model.DoesNotExist:
|
||||||
raise exceptions.AuthenticationFailed('Invalid token.')
|
raise exceptions.AuthenticationFailed('Invalid token.')
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
import json
|
import json
|
||||||
from django.urls import resolve
|
|
||||||
from django_scopes import scope
|
|
||||||
from hashlib import sha1
|
from hashlib import sha1
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.db import transaction
|
from django.db import transaction
|
||||||
from django.http import HttpRequest, HttpResponse, JsonResponse
|
from django.http import HttpRequest, HttpResponse, JsonResponse
|
||||||
|
from django.urls import resolve
|
||||||
from django.utils.timezone import now
|
from django.utils.timezone import now
|
||||||
|
from django_scopes import scope
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
|
|
||||||
from pretix.api.models import ApiCall
|
from pretix.api.models import ApiCall
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ from pretix.base.services.checkin import (
|
|||||||
)
|
)
|
||||||
from pretix.helpers.database import FixedOrderBy
|
from pretix.helpers.database import FixedOrderBy
|
||||||
|
|
||||||
|
|
||||||
with scopes_disabled():
|
with scopes_disabled():
|
||||||
class CheckinListFilter(FilterSet):
|
class CheckinListFilter(FilterSet):
|
||||||
class Meta:
|
class Meta:
|
||||||
@@ -148,6 +147,7 @@ class CheckinListViewSet(viewsets.ModelViewSet):
|
|||||||
return Response(response)
|
return Response(response)
|
||||||
|
|
||||||
|
|
||||||
|
with scopes_disabled():
|
||||||
class CheckinOrderPositionFilter(OrderPositionFilter):
|
class CheckinOrderPositionFilter(OrderPositionFilter):
|
||||||
|
|
||||||
def has_checkin_qs(self, queryset, name, value):
|
def has_checkin_qs(self, queryset, name, value):
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ from pretix.base.models import (
|
|||||||
from pretix.base.models.event import SubEvent
|
from pretix.base.models.event import SubEvent
|
||||||
from pretix.helpers.dicts import merge_dicts
|
from pretix.helpers.dicts import merge_dicts
|
||||||
|
|
||||||
|
|
||||||
with scopes_disabled():
|
with scopes_disabled():
|
||||||
class EventFilter(FilterSet):
|
class EventFilter(FilterSet):
|
||||||
is_past = django_filters.rest_framework.BooleanFilter(method='is_past_qs')
|
is_past = django_filters.rest_framework.BooleanFilter(method='is_past_qs')
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ from pretix.base.models import (
|
|||||||
)
|
)
|
||||||
from pretix.helpers.dicts import merge_dicts
|
from pretix.helpers.dicts import merge_dicts
|
||||||
|
|
||||||
|
|
||||||
with scopes_disabled():
|
with scopes_disabled():
|
||||||
class ItemFilter(FilterSet):
|
class ItemFilter(FilterSet):
|
||||||
tax_rate = django_filters.CharFilter(method='tax_rate_qs')
|
tax_rate = django_filters.CharFilter(method='tax_rate_qs')
|
||||||
|
|||||||
@@ -51,7 +51,6 @@ from pretix.base.signals import (
|
|||||||
)
|
)
|
||||||
from pretix.base.templatetags.money import money_filter
|
from pretix.base.templatetags.money import money_filter
|
||||||
|
|
||||||
|
|
||||||
with scopes_disabled():
|
with scopes_disabled():
|
||||||
class OrderFilter(FilterSet):
|
class OrderFilter(FilterSet):
|
||||||
email = django_filters.CharFilter(field_name='email', lookup_expr='iexact')
|
email = django_filters.CharFilter(field_name='email', lookup_expr='iexact')
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ from rest_framework.response import Response
|
|||||||
from pretix.api.serializers.voucher import VoucherSerializer
|
from pretix.api.serializers.voucher import VoucherSerializer
|
||||||
from pretix.base.models import Voucher
|
from pretix.base.models import Voucher
|
||||||
|
|
||||||
|
|
||||||
with scopes_disabled():
|
with scopes_disabled():
|
||||||
class VoucherFilter(FilterSet):
|
class VoucherFilter(FilterSet):
|
||||||
active = BooleanFilter(method='filter_active')
|
active = BooleanFilter(method='filter_active')
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ from pretix.api.serializers.waitinglist import WaitingListSerializer
|
|||||||
from pretix.base.models import WaitingListEntry
|
from pretix.base.models import WaitingListEntry
|
||||||
from pretix.base.models.waitinglist import WaitingListException
|
from pretix.base.models.waitinglist import WaitingListException
|
||||||
|
|
||||||
|
|
||||||
with scopes_disabled():
|
with scopes_disabled():
|
||||||
class WaitingListFilter(FilterSet):
|
class WaitingListFilter(FilterSet):
|
||||||
has_voucher = django_filters.rest_framework.BooleanFilter(method='has_voucher_qs')
|
has_voucher = django_filters.rest_framework.BooleanFilter(method='has_voucher_qs')
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ import string
|
|||||||
import uuid
|
import uuid
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
from datetime import datetime, time, timedelta
|
from datetime import datetime, time, timedelta
|
||||||
from django_scopes import ScopedManager
|
|
||||||
from operator import attrgetter
|
from operator import attrgetter
|
||||||
|
|
||||||
import pytz
|
import pytz
|
||||||
@@ -18,6 +17,7 @@ from django.utils.crypto import get_random_string
|
|||||||
from django.utils.functional import cached_property
|
from django.utils.functional import cached_property
|
||||||
from django.utils.timezone import make_aware, now
|
from django.utils.timezone import make_aware, now
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
from django_scopes import ScopedManager
|
||||||
from i18nfield.fields import I18nCharField, I18nTextField
|
from i18nfield.fields import I18nCharField, I18nTextField
|
||||||
|
|
||||||
from pretix.base.models.base import LoggedModel
|
from pretix.base.models.base import LoggedModel
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ import uuid
|
|||||||
from collections import Counter
|
from collections import Counter
|
||||||
from datetime import date, datetime, time
|
from datetime import date, datetime, time
|
||||||
from decimal import Decimal, DecimalException
|
from decimal import Decimal, DecimalException
|
||||||
from django_scopes import ScopedManager
|
|
||||||
from typing import Tuple
|
from typing import Tuple
|
||||||
|
|
||||||
import dateutil.parser
|
import dateutil.parser
|
||||||
@@ -18,6 +17,7 @@ from django.utils.functional import cached_property
|
|||||||
from django.utils.timezone import is_naive, make_aware, now
|
from django.utils.timezone import is_naive, make_aware, now
|
||||||
from django.utils.translation import pgettext_lazy, ugettext_lazy as _
|
from django.utils.translation import pgettext_lazy, ugettext_lazy as _
|
||||||
from django_countries.fields import Country
|
from django_countries.fields import Country
|
||||||
|
from django_scopes import ScopedManager
|
||||||
from i18nfield.fields import I18nCharField, I18nTextField
|
from i18nfield.fields import I18nCharField, I18nTextField
|
||||||
|
|
||||||
from pretix.base.models import fields
|
from pretix.base.models import fields
|
||||||
@@ -391,7 +391,6 @@ class Item(LoggedModel):
|
|||||||
# !!! Attention: If you add new fields here, also add them to the copying code in
|
# !!! Attention: If you add new fields here, also add them to the copying code in
|
||||||
# pretix/control/forms/item.py if applicable.
|
# pretix/control/forms/item.py if applicable.
|
||||||
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = _("Product")
|
verbose_name = _("Product")
|
||||||
verbose_name_plural = _("Products")
|
verbose_name_plural = _("Products")
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import os
|
|||||||
import string
|
import string
|
||||||
from datetime import datetime, time, timedelta
|
from datetime import datetime, time, timedelta
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
from django_scopes import ScopedManager
|
|
||||||
from typing import Any, Dict, List, Union
|
from typing import Any, Dict, List, Union
|
||||||
|
|
||||||
import dateutil
|
import dateutil
|
||||||
@@ -27,6 +26,7 @@ from django.utils.functional import cached_property
|
|||||||
from django.utils.timezone import make_aware, now
|
from django.utils.timezone import make_aware, now
|
||||||
from django.utils.translation import pgettext_lazy, ugettext_lazy as _
|
from django.utils.translation import pgettext_lazy, ugettext_lazy as _
|
||||||
from django_countries.fields import Country, CountryField
|
from django_countries.fields import Country, CountryField
|
||||||
|
from django_scopes import ScopedManager
|
||||||
from i18nfield.strings import LazyI18nString
|
from i18nfield.strings import LazyI18nString
|
||||||
from jsonfallback.fields import FallbackJSONField
|
from jsonfallback.fields import FallbackJSONField
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
from django import forms
|
from django import forms
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from django.utils.translation import pgettext_lazy
|
from django.utils.translation import pgettext_lazy
|
||||||
from django_scopes.forms import SafeModelMultipleChoiceField, SafeModelChoiceField
|
from django_scopes.forms import (
|
||||||
|
SafeModelChoiceField, SafeModelMultipleChoiceField,
|
||||||
|
)
|
||||||
|
|
||||||
from pretix.base.models.checkin import CheckinList
|
from pretix.base.models.checkin import CheckinList
|
||||||
from pretix.control.forms.widgets import Select2
|
from pretix.control.forms.widgets import Select2
|
||||||
|
|||||||
@@ -6,7 +6,9 @@ from django.urls import reverse
|
|||||||
from django.utils.translation import (
|
from django.utils.translation import (
|
||||||
pgettext_lazy, ugettext as __, ugettext_lazy as _,
|
pgettext_lazy, ugettext as __, ugettext_lazy as _,
|
||||||
)
|
)
|
||||||
from django_scopes.forms import SafeModelMultipleChoiceField, SafeModelChoiceField
|
from django_scopes.forms import (
|
||||||
|
SafeModelChoiceField, SafeModelMultipleChoiceField,
|
||||||
|
)
|
||||||
from i18nfield.forms import I18nFormField, I18nTextarea
|
from i18nfield.forms import I18nFormField, I18nTextarea
|
||||||
|
|
||||||
from pretix.base.channels import get_all_sales_channels
|
from pretix.base.channels import get_all_sales_channels
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
from django_scopes.forms import SafeModelChoiceField
|
|
||||||
from urllib.parse import urlparse
|
from urllib.parse import urlparse
|
||||||
|
|
||||||
from django import forms
|
from django import forms
|
||||||
@@ -7,6 +6,7 @@ from django.core.exceptions import ValidationError
|
|||||||
from django.core.validators import RegexValidator
|
from django.core.validators import RegexValidator
|
||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
from django.utils.translation import pgettext_lazy, ugettext_lazy as _
|
from django.utils.translation import pgettext_lazy, ugettext_lazy as _
|
||||||
|
from django_scopes.forms import SafeModelChoiceField
|
||||||
from i18nfield.forms import I18nFormField, I18nTextarea
|
from i18nfield.forms import I18nFormField, I18nTextarea
|
||||||
|
|
||||||
from pretix.api.models import WebHook
|
from pretix.api.models import WebHook
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
from django_scopes import scope
|
|
||||||
from urllib.parse import quote, urljoin, urlparse
|
from urllib.parse import quote, urljoin, urlparse
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
@@ -6,9 +5,9 @@ from django.contrib.auth import REDIRECT_FIELD_NAME, logout
|
|||||||
from django.http import Http404
|
from django.http import Http404
|
||||||
from django.shortcuts import get_object_or_404, redirect, resolve_url
|
from django.shortcuts import get_object_or_404, redirect, resolve_url
|
||||||
from django.urls import get_script_prefix, resolve, reverse
|
from django.urls import get_script_prefix, resolve, reverse
|
||||||
from django.utils.deprecation import MiddlewareMixin
|
|
||||||
from django.utils.encoding import force_str
|
from django.utils.encoding import force_str
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import ugettext as _
|
||||||
|
from django_scopes import scope
|
||||||
from hijack.templatetags.hijack_tags import is_hijacked
|
from hijack.templatetags.hijack_tags import is_hijacked
|
||||||
|
|
||||||
from pretix.base.models import Event, Organizer
|
from pretix.base.models import Event, Organizer
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
from django import forms
|
from django import forms
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
from django_scopes.forms import SafeModelMultipleChoiceField, SafeModelChoiceField
|
from django_scopes.forms import (
|
||||||
|
SafeModelChoiceField, SafeModelMultipleChoiceField,
|
||||||
|
)
|
||||||
|
|
||||||
from pretix.control.forms.widgets import Select2
|
from pretix.control.forms.widgets import Select2
|
||||||
from pretix.plugins.pretixdroid.models import AppConfiguration
|
from pretix.plugins.pretixdroid.models import AppConfiguration
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import warnings
|
import warnings
|
||||||
from django_scopes import scope
|
|
||||||
from importlib import import_module
|
from importlib import import_module
|
||||||
from urllib.parse import urljoin
|
from urllib.parse import urljoin
|
||||||
|
|
||||||
@@ -9,6 +8,7 @@ from django.http import Http404
|
|||||||
from django.shortcuts import redirect
|
from django.shortcuts import redirect
|
||||||
from django.urls import resolve
|
from django.urls import resolve
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
from django_scopes import scope
|
||||||
|
|
||||||
from pretix.base.middleware import LocaleMiddleware
|
from pretix.base.middleware import LocaleMiddleware
|
||||||
from pretix.base.models import Event, Organizer
|
from pretix.base.models import Event, Organizer
|
||||||
|
|||||||
@@ -17,16 +17,19 @@ def client():
|
|||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
|
@scopes_disabled()
|
||||||
def organizer():
|
def organizer():
|
||||||
return Organizer.objects.create(name='Dummy', slug='dummy')
|
return Organizer.objects.create(name='Dummy', slug='dummy')
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
|
@scopes_disabled()
|
||||||
def meta_prop(organizer):
|
def meta_prop(organizer):
|
||||||
return organizer.meta_properties.create(name="type", default="Concert")
|
return organizer.meta_properties.create(name="type", default="Concert")
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
|
@scopes_disabled()
|
||||||
def event(organizer, meta_prop):
|
def event(organizer, meta_prop):
|
||||||
e = Event.objects.create(
|
e = Event.objects.create(
|
||||||
organizer=organizer, name='Dummy', slug='dummy',
|
organizer=organizer, name='Dummy', slug='dummy',
|
||||||
@@ -39,6 +42,7 @@ def event(organizer, meta_prop):
|
|||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
|
@scopes_disabled()
|
||||||
def event2(organizer, meta_prop):
|
def event2(organizer, meta_prop):
|
||||||
e = Event.objects.create(
|
e = Event.objects.create(
|
||||||
organizer=organizer, name='Dummy2', slug='dummy2',
|
organizer=organizer, name='Dummy2', slug='dummy2',
|
||||||
@@ -50,6 +54,7 @@ def event2(organizer, meta_prop):
|
|||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
|
@scopes_disabled()
|
||||||
def event3(organizer, meta_prop):
|
def event3(organizer, meta_prop):
|
||||||
e = Event.objects.create(
|
e = Event.objects.create(
|
||||||
organizer=organizer, name='Dummy3', slug='dummy3',
|
organizer=organizer, name='Dummy3', slug='dummy3',
|
||||||
@@ -61,6 +66,7 @@ def event3(organizer, meta_prop):
|
|||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
|
@scopes_disabled()
|
||||||
def team(organizer):
|
def team(organizer):
|
||||||
return Team.objects.create(
|
return Team.objects.create(
|
||||||
organizer=organizer,
|
organizer=organizer,
|
||||||
@@ -75,6 +81,7 @@ def team(organizer):
|
|||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
|
@scopes_disabled()
|
||||||
def device(organizer):
|
def device(organizer):
|
||||||
return Device.objects.create(
|
return Device.objects.create(
|
||||||
organizer=organizer,
|
organizer=organizer,
|
||||||
@@ -91,6 +98,7 @@ def user():
|
|||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
|
@scopes_disabled()
|
||||||
def user_client(client, team, user):
|
def user_client(client, team, user):
|
||||||
team.can_view_orders = True
|
team.can_view_orders = True
|
||||||
team.can_view_vouchers = True
|
team.can_view_vouchers = True
|
||||||
@@ -102,6 +110,7 @@ def user_client(client, team, user):
|
|||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
|
@scopes_disabled()
|
||||||
def token_client(client, team):
|
def token_client(client, team):
|
||||||
team.can_view_orders = True
|
team.can_view_orders = True
|
||||||
team.can_view_vouchers = True
|
team.can_view_vouchers = True
|
||||||
@@ -119,6 +128,7 @@ def device_client(client, device):
|
|||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
|
@scopes_disabled()
|
||||||
def subevent(event, meta_prop):
|
def subevent(event, meta_prop):
|
||||||
event.has_subevents = True
|
event.has_subevents = True
|
||||||
event.save()
|
event.save()
|
||||||
@@ -129,6 +139,7 @@ def subevent(event, meta_prop):
|
|||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
|
@scopes_disabled()
|
||||||
def subevent2(event2, meta_prop):
|
def subevent2(event2, meta_prop):
|
||||||
event2.has_subevents = True
|
event2.has_subevents = True
|
||||||
event2.save()
|
event2.save()
|
||||||
@@ -139,11 +150,13 @@ def subevent2(event2, meta_prop):
|
|||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
|
@scopes_disabled()
|
||||||
def taxrule(event):
|
def taxrule(event):
|
||||||
return event.tax_rules.create(name="VAT", rate=19)
|
return event.tax_rules.create(name="VAT", rate=19)
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
|
@scopes_disabled()
|
||||||
def taxrule2(event2):
|
def taxrule2(event2):
|
||||||
return event2.tax_rules.create(name="VAT", rate=25)
|
return event2.tax_rules.create(name="VAT", rate=25)
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ def test_no_auth(client):
|
|||||||
def test_session_auth_no_teams(client, user):
|
def test_session_auth_no_teams(client, user):
|
||||||
client.login(email=user.email, password='dummy')
|
client.login(email=user.email, password='dummy')
|
||||||
resp = client.get('/api/v1/organizers/')
|
resp = client.get('/api/v1/organizers/')
|
||||||
print(resp.data)
|
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
assert len(resp.data['results']) == 0
|
assert len(resp.data['results']) == 0
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ from unittest import mock
|
|||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from django.utils.timezone import now
|
from django.utils.timezone import now
|
||||||
|
from django_scopes import scopes_disabled
|
||||||
from pytz import UTC
|
from pytz import UTC
|
||||||
|
|
||||||
from pretix.base.models import Question
|
from pretix.base.models import Question
|
||||||
@@ -175,6 +176,7 @@ def test_cartpos_create(token_client, organizer, event, item, quota, question):
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
cp = CartPosition.objects.get(pk=resp.data['id'])
|
cp = CartPosition.objects.get(pk=resp.data['id'])
|
||||||
assert cp.price == Decimal('23.00')
|
assert cp.price == Decimal('23.00')
|
||||||
assert cp.item == item
|
assert cp.item == item
|
||||||
@@ -193,6 +195,7 @@ def test_cartpos_create_name_optional(token_client, organizer, event, item, quot
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
cp = CartPosition.objects.get(pk=resp.data['id'])
|
cp = CartPosition.objects.get(pk=resp.data['id'])
|
||||||
assert cp.price == Decimal('23.00')
|
assert cp.price == Decimal('23.00')
|
||||||
assert cp.item == item
|
assert cp.item == item
|
||||||
@@ -217,6 +220,7 @@ def test_cartpos_create_legacy_name(token_client, organizer, event, item, quota,
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
cp = CartPosition.objects.get(pk=resp.data['id'])
|
cp = CartPosition.objects.get(pk=resp.data['id'])
|
||||||
assert cp.price == Decimal('23.00')
|
assert cp.price == Decimal('23.00')
|
||||||
assert cp.item == item
|
assert cp.item == item
|
||||||
@@ -247,6 +251,7 @@ def test_cartpos_cart_id_optional(token_client, organizer, event, item, quota, q
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
cp = CartPosition.objects.get(pk=resp.data['id'])
|
cp = CartPosition.objects.get(pk=resp.data['id'])
|
||||||
assert cp.price == Decimal('23.00')
|
assert cp.price == Decimal('23.00')
|
||||||
assert cp.item == item
|
assert cp.item == item
|
||||||
@@ -300,6 +305,7 @@ def test_cartpos_create_item_validation(token_client, organizer, event, item, it
|
|||||||
assert resp.status_code == 400
|
assert resp.status_code == 400
|
||||||
assert resp.data == {'item': ['The specified item does not belong to this event.']}
|
assert resp.data == {'item': ['The specified item does not belong to this event.']}
|
||||||
|
|
||||||
|
with scopes_disabled():
|
||||||
var2 = item2.variations.create(value="A")
|
var2 = item2.variations.create(value="A")
|
||||||
|
|
||||||
res['item'] = item.pk
|
res['item'] = item.pk
|
||||||
@@ -312,6 +318,7 @@ def test_cartpos_create_item_validation(token_client, organizer, event, item, it
|
|||||||
assert resp.status_code == 400
|
assert resp.status_code == 400
|
||||||
assert resp.data == {'non_field_errors': ['You cannot specify a variation for this item.']}
|
assert resp.data == {'non_field_errors': ['You cannot specify a variation for this item.']}
|
||||||
|
|
||||||
|
with scopes_disabled():
|
||||||
var1 = item.variations.create(value="A")
|
var1 = item.variations.create(value="A")
|
||||||
res['item'] = item.pk
|
res['item'] = item.pk
|
||||||
res['variation'] = var1.pk
|
res['variation'] = var1.pk
|
||||||
@@ -361,6 +368,7 @@ def test_cartpos_expires_optional(token_client, organizer, event, item, quota, q
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
cp = CartPosition.objects.get(pk=resp.data['id'])
|
cp = CartPosition.objects.get(pk=resp.data['id'])
|
||||||
assert cp.price == Decimal('23.00')
|
assert cp.price == Decimal('23.00')
|
||||||
assert cp.item == item
|
assert cp.item == item
|
||||||
@@ -410,6 +418,7 @@ def test_cartpos_create_answer_validation(token_client, organizer, event, item,
|
|||||||
assert resp.data == {
|
assert resp.data == {
|
||||||
'answers': [{'non_field_errors': ['You need to specify options if the question is of a choice type.']}]}
|
'answers': [{'non_field_errors': ['You need to specify options if the question is of a choice type.']}]}
|
||||||
|
|
||||||
|
with scopes_disabled():
|
||||||
question.options.create(answer="L")
|
question.options.create(answer="L")
|
||||||
res['answers'][0]['options'] = [
|
res['answers'][0]['options'] = [
|
||||||
question.options.first().pk,
|
question.options.first().pk,
|
||||||
@@ -445,6 +454,7 @@ def test_cartpos_create_answer_validation(token_client, organizer, event, item,
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
pos = CartPosition.objects.get(pk=resp.data['id'])
|
pos = CartPosition.objects.get(pk=resp.data['id'])
|
||||||
answ = pos.answers.first()
|
answ = pos.answers.first()
|
||||||
assert answ.question == question
|
assert answ.question == question
|
||||||
@@ -460,6 +470,7 @@ def test_cartpos_create_answer_validation(token_client, organizer, event, item,
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
pos = CartPosition.objects.get(pk=resp.data['id'])
|
pos = CartPosition.objects.get(pk=resp.data['id'])
|
||||||
answ = pos.answers.first()
|
answ = pos.answers.first()
|
||||||
assert answ.answer == "3.45"
|
assert answ.answer == "3.45"
|
||||||
@@ -486,6 +497,7 @@ def test_cartpos_create_answer_validation(token_client, organizer, event, item,
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
pos = CartPosition.objects.get(pk=resp.data['id'])
|
pos = CartPosition.objects.get(pk=resp.data['id'])
|
||||||
answ = pos.answers.first()
|
answ = pos.answers.first()
|
||||||
assert answ.answer == "True"
|
assert answ.answer == "True"
|
||||||
@@ -499,6 +511,7 @@ def test_cartpos_create_answer_validation(token_client, organizer, event, item,
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
pos = CartPosition.objects.get(pk=resp.data['id'])
|
pos = CartPosition.objects.get(pk=resp.data['id'])
|
||||||
answ = pos.answers.first()
|
answ = pos.answers.first()
|
||||||
assert answ.answer == "False"
|
assert answ.answer == "False"
|
||||||
@@ -523,6 +536,7 @@ def test_cartpos_create_answer_validation(token_client, organizer, event, item,
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
pos = CartPosition.objects.get(pk=resp.data['id'])
|
pos = CartPosition.objects.get(pk=resp.data['id'])
|
||||||
answ = pos.answers.first()
|
answ = pos.answers.first()
|
||||||
assert answ.answer == "2018-05-14"
|
assert answ.answer == "2018-05-14"
|
||||||
@@ -548,6 +562,7 @@ def test_cartpos_create_answer_validation(token_client, organizer, event, item,
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
pos = CartPosition.objects.get(pk=resp.data['id'])
|
pos = CartPosition.objects.get(pk=resp.data['id'])
|
||||||
answ = pos.answers.first()
|
answ = pos.answers.first()
|
||||||
assert answ.answer == "2018-05-14 13:00:00+00:00"
|
assert answ.answer == "2018-05-14 13:00:00+00:00"
|
||||||
@@ -574,6 +589,7 @@ def test_cartpos_create_answer_validation(token_client, organizer, event, item,
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
pos = CartPosition.objects.get(pk=resp.data['id'])
|
pos = CartPosition.objects.get(pk=resp.data['id'])
|
||||||
answ = pos.answers.first()
|
answ = pos.answers.first()
|
||||||
assert answ.answer == "13:00:00"
|
assert answ.answer == "13:00:00"
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ from unittest import mock
|
|||||||
import pytest
|
import pytest
|
||||||
from django.utils.timezone import now
|
from django.utils.timezone import now
|
||||||
from django_countries.fields import Country
|
from django_countries.fields import Country
|
||||||
|
from django_scopes import scopes_disabled
|
||||||
from i18nfield.strings import LazyI18nString
|
from i18nfield.strings import LazyI18nString
|
||||||
from pytz import UTC
|
from pytz import UTC
|
||||||
|
|
||||||
@@ -157,6 +158,7 @@ def test_list_list(token_client, organizer, event, clist, item, subevent):
|
|||||||
resp = token_client.get(
|
resp = token_client.get(
|
||||||
'/api/v1/organizers/{}/events/{}/checkinlists/?subevent={}'.format(organizer.slug, event.slug, subevent.pk))
|
'/api/v1/organizers/{}/events/{}/checkinlists/?subevent={}'.format(organizer.slug, event.slug, subevent.pk))
|
||||||
assert [res] == resp.data['results']
|
assert [res] == resp.data['results']
|
||||||
|
with scopes_disabled():
|
||||||
se2 = event.subevents.create(name="Foobar", date_from=datetime.datetime(2017, 12, 27, 10, 0, 0, tzinfo=UTC))
|
se2 = event.subevents.create(name="Foobar", date_from=datetime.datetime(2017, 12, 27, 10, 0, 0, tzinfo=UTC))
|
||||||
resp = token_client.get(
|
resp = token_client.get(
|
||||||
'/api/v1/organizers/{}/events/{}/checkinlists/?subevent={}'.format(organizer.slug, event.slug, se2.pk))
|
'/api/v1/organizers/{}/events/{}/checkinlists/?subevent={}'.format(organizer.slug, event.slug, se2.pk))
|
||||||
@@ -188,6 +190,7 @@ def test_list_create(token_client, organizer, event, item, item_on_wrong_event):
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
cl = CheckinList.objects.get(pk=resp.data['id'])
|
cl = CheckinList.objects.get(pk=resp.data['id'])
|
||||||
assert cl.name == "VIP"
|
assert cl.name == "VIP"
|
||||||
assert cl.limit_products.count() == 1
|
assert cl.limit_products.count() == 1
|
||||||
@@ -271,12 +274,14 @@ def test_list_update(token_client, organizer, event, clist):
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
|
with scopes_disabled():
|
||||||
cl = CheckinList.objects.get(pk=resp.data['id'])
|
cl = CheckinList.objects.get(pk=resp.data['id'])
|
||||||
assert cl.name == "VIP"
|
assert cl.name == "VIP"
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_list_all_items_positions(token_client, organizer, event, clist, clist_all, item, other_item, order):
|
def test_list_all_items_positions(token_client, organizer, event, clist, clist_all, item, other_item, order):
|
||||||
|
with scopes_disabled():
|
||||||
p1 = dict(TEST_ORDERPOSITION1_RES)
|
p1 = dict(TEST_ORDERPOSITION1_RES)
|
||||||
p1["id"] = order.positions.first().pk
|
p1["id"] = order.positions.first().pk
|
||||||
p1["item"] = item.pk
|
p1["item"] = item.pk
|
||||||
@@ -292,6 +297,7 @@ def test_list_all_items_positions(token_client, organizer, event, clist, clist_a
|
|||||||
assert [p1, p2] == resp.data['results']
|
assert [p1, p2] == resp.data['results']
|
||||||
|
|
||||||
# Check-ins on other list ignored
|
# Check-ins on other list ignored
|
||||||
|
with scopes_disabled():
|
||||||
order.positions.first().checkins.create(list=clist)
|
order.positions.first().checkins.create(list=clist)
|
||||||
resp = token_client.get('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/?ordering=positionid'.format(
|
resp = token_client.get('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/?ordering=positionid'.format(
|
||||||
organizer.slug, event.slug, clist_all.pk
|
organizer.slug, event.slug, clist_all.pk
|
||||||
@@ -305,6 +311,7 @@ def test_list_all_items_positions(token_client, organizer, event, clist, clist_a
|
|||||||
assert [] == resp.data['results']
|
assert [] == resp.data['results']
|
||||||
|
|
||||||
# Only checked in
|
# Only checked in
|
||||||
|
with scopes_disabled():
|
||||||
c = order.positions.first().checkins.create(list=clist_all)
|
c = order.positions.first().checkins.create(list=clist_all)
|
||||||
p1['checkins'] = [
|
p1['checkins'] = [
|
||||||
{
|
{
|
||||||
@@ -341,6 +348,7 @@ def test_list_all_items_positions(token_client, organizer, event, clist, clist_a
|
|||||||
|
|
||||||
# Order by checkin date
|
# Order by checkin date
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
with scopes_disabled():
|
||||||
c = order.positions.last().checkins.create(list=clist_all)
|
c = order.positions.last().checkins.create(list=clist_all)
|
||||||
p2['checkins'] = [
|
p2['checkins'] = [
|
||||||
{
|
{
|
||||||
@@ -388,6 +396,7 @@ def test_list_all_items_positions(token_client, organizer, event, clist, clist_a
|
|||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_list_limited_items_positions(token_client, organizer, event, clist, item, order):
|
def test_list_limited_items_positions(token_client, organizer, event, clist, item, order):
|
||||||
p1 = dict(TEST_ORDERPOSITION1_RES)
|
p1 = dict(TEST_ORDERPOSITION1_RES)
|
||||||
|
with scopes_disabled():
|
||||||
p1["id"] = order.positions.first().pk
|
p1["id"] = order.positions.first().pk
|
||||||
p1["item"] = item.pk
|
p1["item"] = item.pk
|
||||||
|
|
||||||
@@ -402,12 +411,13 @@ def test_list_limited_items_positions(token_client, organizer, event, clist, ite
|
|||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_list_limited_items_position_detail(token_client, organizer, event, clist, item, order):
|
def test_list_limited_items_position_detail(token_client, organizer, event, clist, item, order):
|
||||||
p1 = dict(TEST_ORDERPOSITION1_RES)
|
p1 = dict(TEST_ORDERPOSITION1_RES)
|
||||||
|
with scopes_disabled():
|
||||||
p1["id"] = order.positions.first().pk
|
p1["id"] = order.positions.first().pk
|
||||||
p1["item"] = item.pk
|
p1["item"] = item.pk
|
||||||
|
|
||||||
# All items
|
# All items
|
||||||
resp = token_client.get('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/'.format(
|
resp = token_client.get('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/'.format(
|
||||||
organizer.slug, event.slug, clist.pk, order.positions.first().pk
|
organizer.slug, event.slug, clist.pk, p1["id"]
|
||||||
))
|
))
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
assert p1 == resp.data
|
assert p1 == resp.data
|
||||||
@@ -415,6 +425,7 @@ def test_list_limited_items_position_detail(token_client, organizer, event, clis
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_status(token_client, organizer, event, clist_all, item, other_item, order):
|
def test_status(token_client, organizer, event, clist_all, item, other_item, order):
|
||||||
|
with scopes_disabled():
|
||||||
op = order.positions.first()
|
op = order.positions.first()
|
||||||
var1 = item.variations.create(value="XS")
|
var1 = item.variations.create(value="XS")
|
||||||
var2 = item.variations.create(value="S")
|
var2 = item.variations.create(value="S")
|
||||||
@@ -464,13 +475,16 @@ def test_status(token_client, organizer, event, clist_all, item, other_item, ord
|
|||||||
def test_custom_datetime(token_client, organizer, clist, event, order):
|
def test_custom_datetime(token_client, organizer, clist, event, order):
|
||||||
dt = now() - datetime.timedelta(days=1)
|
dt = now() - datetime.timedelta(days=1)
|
||||||
dt = dt.replace(microsecond=0)
|
dt = dt.replace(microsecond=0)
|
||||||
|
with scopes_disabled():
|
||||||
|
p = order.positions.first().pk
|
||||||
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
||||||
organizer.slug, event.slug, clist.pk, order.positions.first().pk
|
organizer.slug, event.slug, clist.pk, p
|
||||||
), {
|
), {
|
||||||
'datetime': dt.isoformat()
|
'datetime': dt.isoformat()
|
||||||
}, format='json')
|
}, format='json')
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
assert resp.data['status'] == 'ok'
|
assert resp.data['status'] == 'ok'
|
||||||
|
with scopes_disabled():
|
||||||
assert Checkin.objects.last().datetime == dt
|
assert Checkin.objects.last().datetime == dt
|
||||||
|
|
||||||
|
|
||||||
@@ -478,6 +492,7 @@ def test_custom_datetime(token_client, organizer, clist, event, order):
|
|||||||
def test_name_fallback(token_client, organizer, clist, event, order):
|
def test_name_fallback(token_client, organizer, clist, event, order):
|
||||||
order.invoice_address.name_parts = {'_legacy': 'Paul'}
|
order.invoice_address.name_parts = {'_legacy': 'Paul'}
|
||||||
order.invoice_address.save()
|
order.invoice_address.save()
|
||||||
|
with scopes_disabled():
|
||||||
op = order.positions.first()
|
op = order.positions.first()
|
||||||
op.attendee_name_cached = None
|
op.attendee_name_cached = None
|
||||||
op.attendee_name_parts = {}
|
op.attendee_name_parts = {}
|
||||||
@@ -493,8 +508,10 @@ def test_name_fallback(token_client, organizer, clist, event, order):
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_by_secret(token_client, organizer, clist, event, order):
|
def test_by_secret(token_client, organizer, clist, event, order):
|
||||||
|
with scopes_disabled():
|
||||||
|
p = order.positions.first()
|
||||||
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
||||||
organizer.slug, event.slug, clist.pk, order.positions.first().secret
|
organizer.slug, event.slug, clist.pk, p.secret
|
||||||
), {}, format='json')
|
), {}, format='json')
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
assert resp.data['status'] == 'ok'
|
assert resp.data['status'] == 'ok'
|
||||||
@@ -502,13 +519,15 @@ def test_by_secret(token_client, organizer, clist, event, order):
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_only_once(token_client, organizer, clist, event, order):
|
def test_only_once(token_client, organizer, clist, event, order):
|
||||||
|
with scopes_disabled():
|
||||||
|
p = order.positions.first()
|
||||||
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
||||||
organizer.slug, event.slug, clist.pk, order.positions.first().pk
|
organizer.slug, event.slug, clist.pk, p.pk
|
||||||
), {}, format='json')
|
), {}, format='json')
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
assert resp.data['status'] == 'ok'
|
assert resp.data['status'] == 'ok'
|
||||||
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
||||||
organizer.slug, event.slug, clist.pk, order.positions.first().pk
|
organizer.slug, event.slug, clist.pk, p.pk
|
||||||
), {}, format='json')
|
), {}, format='json')
|
||||||
assert resp.status_code == 400
|
assert resp.status_code == 400
|
||||||
assert resp.data['status'] == 'error'
|
assert resp.data['status'] == 'error'
|
||||||
@@ -517,13 +536,15 @@ def test_only_once(token_client, organizer, clist, event, order):
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_reupload_same_nonce(token_client, organizer, clist, event, order):
|
def test_reupload_same_nonce(token_client, organizer, clist, event, order):
|
||||||
|
with scopes_disabled():
|
||||||
|
p = order.positions.first()
|
||||||
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
||||||
organizer.slug, event.slug, clist.pk, order.positions.first().pk
|
organizer.slug, event.slug, clist.pk, p.pk
|
||||||
), {'nonce': 'foobar'}, format='json')
|
), {'nonce': 'foobar'}, format='json')
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
assert resp.data['status'] == 'ok'
|
assert resp.data['status'] == 'ok'
|
||||||
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
||||||
organizer.slug, event.slug, clist.pk, order.positions.first().pk
|
organizer.slug, event.slug, clist.pk, p.pk
|
||||||
), {'nonce': 'foobar'}, format='json')
|
), {'nonce': 'foobar'}, format='json')
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
assert resp.data['status'] == 'ok'
|
assert resp.data['status'] == 'ok'
|
||||||
@@ -531,13 +552,15 @@ def test_reupload_same_nonce(token_client, organizer, clist, event, order):
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_multiple_different_list(token_client, organizer, clist, clist_all, event, order):
|
def test_multiple_different_list(token_client, organizer, clist, clist_all, event, order):
|
||||||
|
with scopes_disabled():
|
||||||
|
p = order.positions.first()
|
||||||
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
||||||
organizer.slug, event.slug, clist.pk, order.positions.first().pk
|
organizer.slug, event.slug, clist.pk, p.pk
|
||||||
), {'nonce': 'foobar'}, format='json')
|
), {'nonce': 'foobar'}, format='json')
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
assert resp.data['status'] == 'ok'
|
assert resp.data['status'] == 'ok'
|
||||||
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
||||||
organizer.slug, event.slug, clist_all.pk, order.positions.first().pk
|
organizer.slug, event.slug, clist_all.pk, p.pk
|
||||||
), {'nonce': 'baz'}, format='json')
|
), {'nonce': 'baz'}, format='json')
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
assert resp.data['status'] == 'ok'
|
assert resp.data['status'] == 'ok'
|
||||||
@@ -545,13 +568,15 @@ def test_multiple_different_list(token_client, organizer, clist, clist_all, even
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_forced_multiple(token_client, organizer, clist, event, order):
|
def test_forced_multiple(token_client, organizer, clist, event, order):
|
||||||
|
with scopes_disabled():
|
||||||
|
p = order.positions.first()
|
||||||
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
||||||
organizer.slug, event.slug, clist.pk, order.positions.first().pk
|
organizer.slug, event.slug, clist.pk, p.pk
|
||||||
), {}, format='json')
|
), {}, format='json')
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
assert resp.data['status'] == 'ok'
|
assert resp.data['status'] == 'ok'
|
||||||
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
||||||
organizer.slug, event.slug, clist.pk, order.positions.first().pk
|
organizer.slug, event.slug, clist.pk, p.pk
|
||||||
), {'force': True}, format='json')
|
), {'force': True}, format='json')
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
assert resp.data['status'] == 'ok'
|
assert resp.data['status'] == 'ok'
|
||||||
@@ -559,17 +584,19 @@ def test_forced_multiple(token_client, organizer, clist, event, order):
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_require_paid(token_client, organizer, clist, event, order):
|
def test_require_paid(token_client, organizer, clist, event, order):
|
||||||
|
with scopes_disabled():
|
||||||
|
p = order.positions.first()
|
||||||
order.status = Order.STATUS_PENDING
|
order.status = Order.STATUS_PENDING
|
||||||
order.save()
|
order.save()
|
||||||
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
||||||
organizer.slug, event.slug, clist.pk, order.positions.first().pk
|
organizer.slug, event.slug, clist.pk, p.pk
|
||||||
), {}, format='json')
|
), {}, format='json')
|
||||||
assert resp.status_code == 400
|
assert resp.status_code == 400
|
||||||
assert resp.data['status'] == 'error'
|
assert resp.data['status'] == 'error'
|
||||||
assert resp.data['reason'] == 'unpaid'
|
assert resp.data['reason'] == 'unpaid'
|
||||||
|
|
||||||
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
||||||
organizer.slug, event.slug, clist.pk, order.positions.first().pk
|
organizer.slug, event.slug, clist.pk, p.pk
|
||||||
), {'ignore_unpaid': True}, format='json')
|
), {'ignore_unpaid': True}, format='json')
|
||||||
assert resp.status_code == 400
|
assert resp.status_code == 400
|
||||||
assert resp.data['status'] == 'error'
|
assert resp.data['status'] == 'error'
|
||||||
@@ -579,14 +606,14 @@ def test_require_paid(token_client, organizer, clist, event, order):
|
|||||||
clist.save()
|
clist.save()
|
||||||
|
|
||||||
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
||||||
organizer.slug, event.slug, clist.pk, order.positions.first().pk
|
organizer.slug, event.slug, clist.pk, p.pk
|
||||||
), {}, format='json')
|
), {}, format='json')
|
||||||
assert resp.status_code == 400
|
assert resp.status_code == 400
|
||||||
assert resp.data['status'] == 'error'
|
assert resp.data['status'] == 'error'
|
||||||
assert resp.data['reason'] == 'unpaid'
|
assert resp.data['reason'] == 'unpaid'
|
||||||
|
|
||||||
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
||||||
organizer.slug, event.slug, clist.pk, order.positions.first().pk
|
organizer.slug, event.slug, clist.pk, p.pk
|
||||||
), {'ignore_unpaid': True}, format='json')
|
), {'ignore_unpaid': True}, format='json')
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
assert resp.data['status'] == 'ok'
|
assert resp.data['status'] == 'ok'
|
||||||
@@ -603,88 +630,105 @@ def question(event, item):
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_question_number(token_client, organizer, clist, event, order, question):
|
def test_question_number(token_client, organizer, clist, event, order, question):
|
||||||
|
with scopes_disabled():
|
||||||
|
p = order.positions.first()
|
||||||
question[0].options.all().delete()
|
question[0].options.all().delete()
|
||||||
question[0].type = 'N'
|
question[0].type = 'N'
|
||||||
question[0].save()
|
question[0].save()
|
||||||
|
|
||||||
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
||||||
organizer.slug, event.slug, clist.pk, order.positions.first().pk
|
organizer.slug, event.slug, clist.pk, p.pk
|
||||||
), {}, format='json')
|
), {}, format='json')
|
||||||
assert resp.status_code == 400
|
assert resp.status_code == 400
|
||||||
assert resp.data['status'] == 'incomplete'
|
assert resp.data['status'] == 'incomplete'
|
||||||
|
with scopes_disabled():
|
||||||
assert resp.data['questions'] == [QuestionSerializer(question[0]).data]
|
assert resp.data['questions'] == [QuestionSerializer(question[0]).data]
|
||||||
|
|
||||||
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
||||||
organizer.slug, event.slug, clist.pk, order.positions.first().pk
|
organizer.slug, event.slug, clist.pk, p.pk
|
||||||
), {'answers': {question[0].pk: "3.24"}}, format='json')
|
), {'answers': {question[0].pk: "3.24"}}, format='json')
|
||||||
print(resp.data)
|
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
assert resp.data['status'] == 'ok'
|
assert resp.data['status'] == 'ok'
|
||||||
|
with scopes_disabled():
|
||||||
assert order.positions.first().answers.get(question=question[0]).answer == '3.24'
|
assert order.positions.first().answers.get(question=question[0]).answer == '3.24'
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_question_choice(token_client, organizer, clist, event, order, question):
|
def test_question_choice(token_client, organizer, clist, event, order, question):
|
||||||
|
with scopes_disabled():
|
||||||
|
p = order.positions.first()
|
||||||
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
||||||
organizer.slug, event.slug, clist.pk, order.positions.first().pk
|
organizer.slug, event.slug, clist.pk, p.pk
|
||||||
), {}, format='json')
|
), {}, format='json')
|
||||||
assert resp.status_code == 400
|
assert resp.status_code == 400
|
||||||
assert resp.data['status'] == 'incomplete'
|
assert resp.data['status'] == 'incomplete'
|
||||||
|
with scopes_disabled():
|
||||||
assert resp.data['questions'] == [QuestionSerializer(question[0]).data]
|
assert resp.data['questions'] == [QuestionSerializer(question[0]).data]
|
||||||
|
|
||||||
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
||||||
organizer.slug, event.slug, clist.pk, order.positions.first().pk
|
organizer.slug, event.slug, clist.pk, p.pk
|
||||||
), {'answers': {question[0].pk: str(question[1].pk)}}, format='json')
|
), {'answers': {question[0].pk: str(question[1].pk)}}, format='json')
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
assert resp.data['status'] == 'ok'
|
assert resp.data['status'] == 'ok'
|
||||||
|
with scopes_disabled():
|
||||||
assert order.positions.first().answers.get(question=question[0]).answer == 'M'
|
assert order.positions.first().answers.get(question=question[0]).answer == 'M'
|
||||||
assert list(order.positions.first().answers.get(question=question[0]).options.all()) == [question[1]]
|
assert list(order.positions.first().answers.get(question=question[0]).options.all()) == [question[1]]
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_question_invalid(token_client, organizer, clist, event, order, question):
|
def test_question_invalid(token_client, organizer, clist, event, order, question):
|
||||||
|
with scopes_disabled():
|
||||||
|
p = order.positions.first()
|
||||||
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
||||||
organizer.slug, event.slug, clist.pk, order.positions.first().pk
|
organizer.slug, event.slug, clist.pk, p.pk
|
||||||
), {'answers': {question[0].pk: "A"}}, format='json')
|
), {'answers': {question[0].pk: "A"}}, format='json')
|
||||||
assert resp.status_code == 400
|
assert resp.status_code == 400
|
||||||
assert resp.data['status'] == 'incomplete'
|
assert resp.data['status'] == 'incomplete'
|
||||||
|
with scopes_disabled():
|
||||||
assert resp.data['questions'] == [QuestionSerializer(question[0]).data]
|
assert resp.data['questions'] == [QuestionSerializer(question[0]).data]
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_question_required(token_client, organizer, clist, event, order, question):
|
def test_question_required(token_client, organizer, clist, event, order, question):
|
||||||
|
with scopes_disabled():
|
||||||
|
p = order.positions.first()
|
||||||
question[0].required = True
|
question[0].required = True
|
||||||
question[0].save()
|
question[0].save()
|
||||||
|
|
||||||
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
||||||
organizer.slug, event.slug, clist.pk, order.positions.first().pk
|
organizer.slug, event.slug, clist.pk, p.pk
|
||||||
), {}, format='json')
|
), {}, format='json')
|
||||||
assert resp.status_code == 400
|
assert resp.status_code == 400
|
||||||
assert resp.data['status'] == 'incomplete'
|
assert resp.data['status'] == 'incomplete'
|
||||||
|
with scopes_disabled():
|
||||||
assert resp.data['questions'] == [QuestionSerializer(question[0]).data]
|
assert resp.data['questions'] == [QuestionSerializer(question[0]).data]
|
||||||
|
|
||||||
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
||||||
organizer.slug, event.slug, clist.pk, order.positions.first().pk
|
organizer.slug, event.slug, clist.pk, p.pk
|
||||||
), {'answers': {question[0].pk: ""}}, format='json')
|
), {'answers': {question[0].pk: ""}}, format='json')
|
||||||
assert resp.status_code == 400
|
assert resp.status_code == 400
|
||||||
assert resp.data['status'] == 'incomplete'
|
assert resp.data['status'] == 'incomplete'
|
||||||
|
with scopes_disabled():
|
||||||
assert resp.data['questions'] == [QuestionSerializer(question[0]).data]
|
assert resp.data['questions'] == [QuestionSerializer(question[0]).data]
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_question_optional(token_client, organizer, clist, event, order, question):
|
def test_question_optional(token_client, organizer, clist, event, order, question):
|
||||||
|
with scopes_disabled():
|
||||||
|
p = order.positions.first()
|
||||||
question[0].required = False
|
question[0].required = False
|
||||||
question[0].save()
|
question[0].save()
|
||||||
|
|
||||||
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
||||||
organizer.slug, event.slug, clist.pk, order.positions.first().pk
|
organizer.slug, event.slug, clist.pk, p.pk
|
||||||
), {}, format='json')
|
), {}, format='json')
|
||||||
assert resp.status_code == 400
|
assert resp.status_code == 400
|
||||||
assert resp.data['status'] == 'incomplete'
|
assert resp.data['status'] == 'incomplete'
|
||||||
|
with scopes_disabled():
|
||||||
assert resp.data['questions'] == [QuestionSerializer(question[0]).data]
|
assert resp.data['questions'] == [QuestionSerializer(question[0]).data]
|
||||||
|
|
||||||
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
||||||
organizer.slug, event.slug, clist.pk, order.positions.first().pk
|
organizer.slug, event.slug, clist.pk, p.pk
|
||||||
), {'answers': {question[0].pk: ""}}, format='json')
|
), {'answers': {question[0].pk: ""}}, format='json')
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
assert resp.data['status'] == 'ok'
|
assert resp.data['status'] == 'ok'
|
||||||
@@ -692,20 +736,24 @@ def test_question_optional(token_client, organizer, clist, event, order, questio
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_question_multiple_choice(token_client, organizer, clist, event, order, question):
|
def test_question_multiple_choice(token_client, organizer, clist, event, order, question):
|
||||||
|
with scopes_disabled():
|
||||||
|
p = order.positions.first()
|
||||||
question[0].type = 'M'
|
question[0].type = 'M'
|
||||||
question[0].save()
|
question[0].save()
|
||||||
|
|
||||||
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
||||||
organizer.slug, event.slug, clist.pk, order.positions.first().pk
|
organizer.slug, event.slug, clist.pk, p.pk
|
||||||
), {}, format='json')
|
), {}, format='json')
|
||||||
assert resp.status_code == 400
|
assert resp.status_code == 400
|
||||||
assert resp.data['status'] == 'incomplete'
|
assert resp.data['status'] == 'incomplete'
|
||||||
|
with scopes_disabled():
|
||||||
assert resp.data['questions'] == [QuestionSerializer(question[0]).data]
|
assert resp.data['questions'] == [QuestionSerializer(question[0]).data]
|
||||||
|
|
||||||
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
resp = token_client.post('/api/v1/organizers/{}/events/{}/checkinlists/{}/positions/{}/redeem/'.format(
|
||||||
organizer.slug, event.slug, clist.pk, order.positions.first().pk
|
organizer.slug, event.slug, clist.pk, p.pk
|
||||||
), {'answers': {question[0].pk: "{},{}".format(question[1].pk, question[2].pk)}}, format='json')
|
), {'answers': {question[0].pk: "{},{}".format(question[1].pk, question[2].pk)}}, format='json')
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
assert resp.data['status'] == 'ok'
|
assert resp.data['status'] == 'ok'
|
||||||
|
with scopes_disabled():
|
||||||
assert order.positions.first().answers.get(question=question[0]).answer == 'M, L'
|
assert order.positions.first().answers.get(question=question[0]).answer == 'M, L'
|
||||||
assert set(order.positions.first().answers.get(question=question[0]).options.all()) == {question[1], question[2]}
|
assert set(order.positions.first().answers.get(question=question[0]).options.all()) == {question[1], question[2]}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ from unittest import mock
|
|||||||
import pytest
|
import pytest
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django_countries.fields import Country
|
from django_countries.fields import Country
|
||||||
|
from django_scopes import scopes_disabled
|
||||||
from pytz import UTC
|
from pytz import UTC
|
||||||
|
|
||||||
from pretix.base.models import Event, InvoiceAddress, Order, OrderPosition
|
from pretix.base.models import Event, InvoiceAddress, Order, OrderPosition
|
||||||
@@ -161,6 +162,7 @@ def test_event_create(token_client, organizer, event, meta_prop):
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
assert not organizer.events.get(slug="2030").testmode
|
assert not organizer.events.get(slug="2030").testmode
|
||||||
assert organizer.events.get(slug="2030").meta_values.filter(
|
assert organizer.events.get(slug="2030").meta_values.filter(
|
||||||
property__name=meta_prop.name, value="Conference"
|
property__name=meta_prop.name, value="Conference"
|
||||||
@@ -278,6 +280,7 @@ def test_event_create_with_clone(token_client, organizer, event, meta_prop):
|
|||||||
)
|
)
|
||||||
|
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
cloned_event = Event.objects.get(organizer=organizer.pk, slug='2030')
|
cloned_event = Event.objects.get(organizer=organizer.pk, slug='2030')
|
||||||
assert cloned_event.plugins == 'pretix.plugins.ticketoutputpdf'
|
assert cloned_event.plugins == 'pretix.plugins.ticketoutputpdf'
|
||||||
assert cloned_event.is_public is False
|
assert cloned_event.is_public is False
|
||||||
@@ -310,6 +313,7 @@ def test_event_create_with_clone(token_client, organizer, event, meta_prop):
|
|||||||
)
|
)
|
||||||
|
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
cloned_event = Event.objects.get(organizer=organizer.pk, slug='2031')
|
cloned_event = Event.objects.get(organizer=organizer.pk, slug='2031')
|
||||||
assert cloned_event.plugins == "pretix.plugins.banktransfer,pretix.plugins.ticketoutputpdf"
|
assert cloned_event.plugins == "pretix.plugins.banktransfer,pretix.plugins.ticketoutputpdf"
|
||||||
assert cloned_event.is_public is True
|
assert cloned_event.is_public is True
|
||||||
@@ -339,6 +343,7 @@ def test_event_create_with_clone(token_client, organizer, event, meta_prop):
|
|||||||
)
|
)
|
||||||
|
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
cloned_event = Event.objects.get(organizer=organizer.pk, slug='2032')
|
cloned_event = Event.objects.get(organizer=organizer.pk, slug='2032')
|
||||||
assert cloned_event.plugins == ""
|
assert cloned_event.plugins == ""
|
||||||
|
|
||||||
@@ -388,6 +393,7 @@ def test_event_update(token_client, organizer, event, item, meta_prop):
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
|
with scopes_disabled():
|
||||||
event = Event.objects.get(organizer=organizer.pk, slug=resp.data['slug'])
|
event = Event.objects.get(organizer=organizer.pk, slug=resp.data['slug'])
|
||||||
assert event.currency == "DKK"
|
assert event.currency == "DKK"
|
||||||
assert organizer.events.get(slug=resp.data['slug']).meta_values.filter(
|
assert organizer.events.get(slug=resp.data['slug']).meta_values.filter(
|
||||||
@@ -447,6 +453,7 @@ def test_event_update(token_client, organizer, event, item, meta_prop):
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
|
with scopes_disabled():
|
||||||
assert organizer.events.get(slug=resp.data['slug']).meta_values.filter(
|
assert organizer.events.get(slug=resp.data['slug']).meta_values.filter(
|
||||||
property__name=meta_prop.name, value="Workshop"
|
property__name=meta_prop.name, value="Workshop"
|
||||||
).exists()
|
).exists()
|
||||||
@@ -460,6 +467,7 @@ def test_event_update(token_client, organizer, event, item, meta_prop):
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
|
with scopes_disabled():
|
||||||
assert not organizer.events.get(slug=resp.data['slug']).meta_values.filter(
|
assert not organizer.events.get(slug=resp.data['slug']).meta_values.filter(
|
||||||
property__name=meta_prop.name
|
property__name=meta_prop.name
|
||||||
).exists()
|
).exists()
|
||||||
@@ -598,6 +606,7 @@ def test_event_detail(token_client, organizer, event, team):
|
|||||||
def test_event_delete(token_client, organizer, event):
|
def test_event_delete(token_client, organizer, event):
|
||||||
resp = token_client.delete('/api/v1/organizers/{}/events/{}/'.format(organizer.slug, event.slug))
|
resp = token_client.delete('/api/v1/organizers/{}/events/{}/'.format(organizer.slug, event.slug))
|
||||||
assert resp.status_code == 204
|
assert resp.status_code == 204
|
||||||
|
with scopes_disabled():
|
||||||
assert not organizer.events.filter(pk=event.id).exists()
|
assert not organizer.events.filter(pk=event.id).exists()
|
||||||
|
|
||||||
|
|
||||||
@@ -607,4 +616,5 @@ def test_event_with_order_position_not_delete(token_client, organizer, event, it
|
|||||||
assert resp.status_code == 403
|
assert resp.status_code == 403
|
||||||
assert resp.content.decode() == '{"detail":"The event can not be deleted as it already contains orders. Please ' \
|
assert resp.content.decode() == '{"detail":"The event can not be deleted as it already contains orders. Please ' \
|
||||||
'set \'live\' to false to hide the event and take the shop offline instead."}'
|
'set \'live\' to false to hide the event and take the shop offline instead."}'
|
||||||
|
with scopes_disabled():
|
||||||
assert organizer.events.filter(pk=event.id).exists()
|
assert organizer.events.filter(pk=event.id).exists()
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ from unittest import mock
|
|||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from django_countries.fields import Country
|
from django_countries.fields import Country
|
||||||
|
from django_scopes import scopes_disabled
|
||||||
from pytz import UTC
|
from pytz import UTC
|
||||||
|
|
||||||
from pretix.base.models import (
|
from pretix.base.models import (
|
||||||
@@ -169,6 +170,7 @@ def test_category_update(token_client, organizer, event, team, category):
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
|
with scopes_disabled():
|
||||||
assert ItemCategory.objects.get(pk=category.pk).name == {"en": "Test"}
|
assert ItemCategory.objects.get(pk=category.pk).name == {"en": "Test"}
|
||||||
|
|
||||||
|
|
||||||
@@ -189,6 +191,7 @@ def test_category_delete(token_client, organizer, event, category3, item):
|
|||||||
resp = token_client.delete(
|
resp = token_client.delete(
|
||||||
'/api/v1/organizers/{}/events/{}/categories/{}/'.format(organizer.slug, event.slug, category3.pk))
|
'/api/v1/organizers/{}/events/{}/categories/{}/'.format(organizer.slug, event.slug, category3.pk))
|
||||||
assert resp.status_code == 204
|
assert resp.status_code == 204
|
||||||
|
with scopes_disabled():
|
||||||
assert not event.categories.filter(pk=category3.id).exists()
|
assert not event.categories.filter(pk=category3.id).exists()
|
||||||
assert Item.objects.get(pk=item.pk).category is None
|
assert Item.objects.get(pk=item.pk).category is None
|
||||||
|
|
||||||
@@ -308,6 +311,7 @@ def test_item_detail(token_client, organizer, event, team, item):
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_item_detail_variations(token_client, organizer, event, team, item):
|
def test_item_detail_variations(token_client, organizer, event, team, item):
|
||||||
|
with scopes_disabled():
|
||||||
var = item.variations.create(value="Children")
|
var = item.variations.create(value="Children")
|
||||||
res = dict(TEST_ITEM_RES)
|
res = dict(TEST_ITEM_RES)
|
||||||
res["id"] = item.pk
|
res["id"] = item.pk
|
||||||
@@ -349,6 +353,7 @@ def test_item_detail_addons(token_client, organizer, event, team, item, category
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_item_detail_bundles(token_client, organizer, event, team, item, category):
|
def test_item_detail_bundles(token_client, organizer, event, team, item, category):
|
||||||
|
with scopes_disabled():
|
||||||
i = event.items.create(name="Included thing", default_price=2)
|
i = event.items.create(name="Included thing", default_price=2)
|
||||||
item.bundles.create(bundled_item=i, count=1, designated_price=2)
|
item.bundles.create(bundled_item=i, count=1, designated_price=2)
|
||||||
res = dict(TEST_ITEM_RES)
|
res = dict(TEST_ITEM_RES)
|
||||||
@@ -398,6 +403,7 @@ def test_item_create(token_client, organizer, event, item, category, taxrule):
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
assert Item.objects.get(pk=resp.data['id']).sales_channels == ["web", "pretixpos"]
|
assert Item.objects.get(pk=resp.data['id']).sales_channels == ["web", "pretixpos"]
|
||||||
|
|
||||||
|
|
||||||
@@ -445,6 +451,7 @@ def test_item_create_with_variation(token_client, organizer, event, item, catego
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
new_item = Item.objects.get(pk=resp.data['id'])
|
new_item = Item.objects.get(pk=resp.data['id'])
|
||||||
assert new_item.variations.first().value.localize('de') == "Kommentar"
|
assert new_item.variations.first().value.localize('de') == "Kommentar"
|
||||||
assert new_item.variations.first().value.localize('en') == "Comment"
|
assert new_item.variations.first().value.localize('en') == "Comment"
|
||||||
@@ -490,6 +497,7 @@ def test_item_create_with_addon(token_client, organizer, event, item, category,
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
item = Item.objects.get(pk=resp.data['id'])
|
item = Item.objects.get(pk=resp.data['id'])
|
||||||
assert item.addons.first().addon_category == category
|
assert item.addons.first().addon_category == category
|
||||||
assert item.addons.first().max_count == 10
|
assert item.addons.first().max_count == 10
|
||||||
@@ -534,6 +542,7 @@ def test_item_create_with_addon(token_client, organizer, event, item, category,
|
|||||||
)
|
)
|
||||||
assert resp.status_code == 400
|
assert resp.status_code == 400
|
||||||
assert resp.content.decode() == '{"addons":["The add-on\'s category must belong to the same event as the item."]}'
|
assert resp.content.decode() == '{"addons":["The add-on\'s category must belong to the same event as the item."]}'
|
||||||
|
with scopes_disabled():
|
||||||
assert 2 == Item.objects.all().count()
|
assert 2 == Item.objects.all().count()
|
||||||
|
|
||||||
resp = token_client.post(
|
resp = token_client.post(
|
||||||
@@ -575,6 +584,7 @@ def test_item_create_with_addon(token_client, organizer, event, item, category,
|
|||||||
)
|
)
|
||||||
assert resp.status_code == 400
|
assert resp.status_code == 400
|
||||||
assert resp.content.decode() == '{"addons":["The maximum count needs to be greater than the minimum count."]}'
|
assert resp.content.decode() == '{"addons":["The maximum count needs to be greater than the minimum count."]}'
|
||||||
|
with scopes_disabled():
|
||||||
assert 2 == Item.objects.all().count()
|
assert 2 == Item.objects.all().count()
|
||||||
|
|
||||||
resp = token_client.post(
|
resp = token_client.post(
|
||||||
@@ -619,11 +629,13 @@ def test_item_create_with_addon(token_client, organizer, event, item, category,
|
|||||||
'{"addons":["The minimum count needs to be equal to or greater than zero."]}',
|
'{"addons":["The minimum count needs to be equal to or greater than zero."]}',
|
||||||
'{"addons":[{"min_count":["Ensure this value is greater than or equal to 0."]}]}', # mysql
|
'{"addons":[{"min_count":["Ensure this value is greater than or equal to 0."]}]}', # mysql
|
||||||
]
|
]
|
||||||
|
with scopes_disabled():
|
||||||
assert 2 == Item.objects.all().count()
|
assert 2 == Item.objects.all().count()
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_item_create_with_bundle(token_client, organizer, event, item, category, item2, taxrule):
|
def test_item_create_with_bundle(token_client, organizer, event, item, category, item2, taxrule):
|
||||||
|
with scopes_disabled():
|
||||||
i = event.items.create(name="Included thing", default_price=2)
|
i = event.items.create(name="Included thing", default_price=2)
|
||||||
resp = token_client.post(
|
resp = token_client.post(
|
||||||
'/api/v1/organizers/{}/events/{}/items/'.format(organizer.slug, event.slug),
|
'/api/v1/organizers/{}/events/{}/items/'.format(organizer.slug, event.slug),
|
||||||
@@ -662,6 +674,7 @@ def test_item_create_with_bundle(token_client, organizer, event, item, category,
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
item = Item.objects.get(pk=resp.data['id'])
|
item = Item.objects.get(pk=resp.data['id'])
|
||||||
b = item.bundles.first()
|
b = item.bundles.first()
|
||||||
assert b.bundled_item == i
|
assert b.bundled_item == i
|
||||||
@@ -708,6 +721,7 @@ def test_item_create_with_bundle(token_client, organizer, event, item, category,
|
|||||||
assert resp.status_code == 400
|
assert resp.status_code == 400
|
||||||
assert resp.content.decode() == '{"bundles":["The bundled item must belong to the same event as the item."]}'
|
assert resp.content.decode() == '{"bundles":["The bundled item must belong to the same event as the item."]}'
|
||||||
|
|
||||||
|
with scopes_disabled():
|
||||||
v = item2.variations.create(value="foo")
|
v = item2.variations.create(value="foo")
|
||||||
resp = token_client.post(
|
resp = token_client.post(
|
||||||
'/api/v1/organizers/{}/events/{}/items/'.format(organizer.slug, event.slug),
|
'/api/v1/organizers/{}/events/{}/items/'.format(organizer.slug, event.slug),
|
||||||
@@ -760,6 +774,7 @@ def test_item_update(token_client, organizer, event, item, category, item2, cate
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
|
with scopes_disabled():
|
||||||
assert Item.objects.get(pk=item.pk).max_per_order == 2
|
assert Item.objects.get(pk=item.pk).max_per_order == 2
|
||||||
|
|
||||||
resp = token_client.patch(
|
resp = token_client.patch(
|
||||||
@@ -896,6 +911,7 @@ def test_item_update_with_addon(token_client, organizer, event, item, category):
|
|||||||
def test_items_delete(token_client, organizer, event, item):
|
def test_items_delete(token_client, organizer, event, item):
|
||||||
resp = token_client.delete('/api/v1/organizers/{}/events/{}/items/{}/'.format(organizer.slug, event.slug, item.pk))
|
resp = token_client.delete('/api/v1/organizers/{}/events/{}/items/{}/'.format(organizer.slug, event.slug, item.pk))
|
||||||
assert resp.status_code == 204
|
assert resp.status_code == 204
|
||||||
|
with scopes_disabled():
|
||||||
assert not event.items.filter(pk=item.id).exists()
|
assert not event.items.filter(pk=item.id).exists()
|
||||||
|
|
||||||
|
|
||||||
@@ -903,6 +919,7 @@ def test_items_delete(token_client, organizer, event, item):
|
|||||||
def test_items_with_order_position_not_delete(token_client, organizer, event, item, order_position):
|
def test_items_with_order_position_not_delete(token_client, organizer, event, item, order_position):
|
||||||
resp = token_client.delete('/api/v1/organizers/{}/events/{}/items/{}/'.format(organizer.slug, event.slug, item.pk))
|
resp = token_client.delete('/api/v1/organizers/{}/events/{}/items/{}/'.format(organizer.slug, event.slug, item.pk))
|
||||||
assert resp.status_code == 403
|
assert resp.status_code == 403
|
||||||
|
with scopes_disabled():
|
||||||
assert event.items.filter(pk=item.id).exists()
|
assert event.items.filter(pk=item.id).exists()
|
||||||
|
|
||||||
|
|
||||||
@@ -910,6 +927,7 @@ def test_items_with_order_position_not_delete(token_client, organizer, event, it
|
|||||||
def test_items_with_cart_position_delete(token_client, organizer, event, item, cart_position):
|
def test_items_with_cart_position_delete(token_client, organizer, event, item, cart_position):
|
||||||
resp = token_client.delete('/api/v1/organizers/{}/events/{}/items/{}/'.format(organizer.slug, event.slug, item.pk))
|
resp = token_client.delete('/api/v1/organizers/{}/events/{}/items/{}/'.format(organizer.slug, event.slug, item.pk))
|
||||||
assert resp.status_code == 204
|
assert resp.status_code == 204
|
||||||
|
with scopes_disabled():
|
||||||
assert not event.items.filter(pk=item.id).exists()
|
assert not event.items.filter(pk=item.id).exists()
|
||||||
|
|
||||||
|
|
||||||
@@ -996,6 +1014,7 @@ def test_variations_create(token_client, organizer, event, item, variation):
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
var = ItemVariation.objects.get(pk=resp.data['id'])
|
var = ItemVariation.objects.get(pk=resp.data['id'])
|
||||||
assert var.position == 1
|
assert var.position == 1
|
||||||
assert var.price == 23.0
|
assert var.price == 23.0
|
||||||
@@ -1060,39 +1079,46 @@ def test_variations_update(token_client, organizer, event, item, item3, variatio
|
|||||||
def test_variations_delete(token_client, organizer, event, item, variations, order):
|
def test_variations_delete(token_client, organizer, event, item, variations, order):
|
||||||
resp = token_client.delete('/api/v1/organizers/{}/events/{}/items/{}/variations/{}/'.format(organizer.slug, event.slug, item.pk, variations[0].pk))
|
resp = token_client.delete('/api/v1/organizers/{}/events/{}/items/{}/variations/{}/'.format(organizer.slug, event.slug, item.pk, variations[0].pk))
|
||||||
assert resp.status_code == 204
|
assert resp.status_code == 204
|
||||||
|
with scopes_disabled():
|
||||||
assert not item.variations.filter(pk=variations[0].pk).exists()
|
assert not item.variations.filter(pk=variations[0].pk).exists()
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_variations_with_order_position_not_delete(token_client, organizer, event, item, order, variations, order_position):
|
def test_variations_with_order_position_not_delete(token_client, organizer, event, item, order, variations, order_position):
|
||||||
|
with scopes_disabled():
|
||||||
assert item.variations.filter(pk=variations[0].id).exists()
|
assert item.variations.filter(pk=variations[0].id).exists()
|
||||||
resp = token_client.delete('/api/v1/organizers/{}/events/{}/items/{}/variations/{}/'.format(organizer.slug, event.slug, item.pk, variations[0].pk))
|
resp = token_client.delete('/api/v1/organizers/{}/events/{}/items/{}/variations/{}/'.format(organizer.slug, event.slug, item.pk, variations[0].pk))
|
||||||
assert resp.status_code == 403
|
assert resp.status_code == 403
|
||||||
assert resp.content.decode() == '{"detail":"This variation cannot be deleted because it has already been ordered ' \
|
assert resp.content.decode() == '{"detail":"This variation cannot be deleted because it has already been ordered ' \
|
||||||
'by a user or currently is in a users\'s cart. Please set the variation as ' \
|
'by a user or currently is in a users\'s cart. Please set the variation as ' \
|
||||||
'\'inactive\' instead."}'
|
'\'inactive\' instead."}'
|
||||||
|
with scopes_disabled():
|
||||||
assert item.variations.filter(pk=variations[0].id).exists()
|
assert item.variations.filter(pk=variations[0].id).exists()
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_variations_with_cart_position_not_delete(token_client, organizer, event, item, variations, cart_position):
|
def test_variations_with_cart_position_not_delete(token_client, organizer, event, item, variations, cart_position):
|
||||||
|
with scopes_disabled():
|
||||||
assert item.variations.filter(pk=variations[0].id).exists()
|
assert item.variations.filter(pk=variations[0].id).exists()
|
||||||
resp = token_client.delete('/api/v1/organizers/{}/events/{}/items/{}/variations/{}/'.format(organizer.slug, event.slug, item.pk, variations[0].pk))
|
resp = token_client.delete('/api/v1/organizers/{}/events/{}/items/{}/variations/{}/'.format(organizer.slug, event.slug, item.pk, variations[0].pk))
|
||||||
assert resp.status_code == 403
|
assert resp.status_code == 403
|
||||||
assert resp.content.decode() == '{"detail":"This variation cannot be deleted because it has already been ordered ' \
|
assert resp.content.decode() == '{"detail":"This variation cannot be deleted because it has already been ordered ' \
|
||||||
'by a user or currently is in a users\'s cart. Please set the variation as ' \
|
'by a user or currently is in a users\'s cart. Please set the variation as ' \
|
||||||
'\'inactive\' instead."}'
|
'\'inactive\' instead."}'
|
||||||
|
with scopes_disabled():
|
||||||
assert item.variations.filter(pk=variations[0].id).exists()
|
assert item.variations.filter(pk=variations[0].id).exists()
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_only_variation_not_delete(token_client, organizer, event, item, variation):
|
def test_only_variation_not_delete(token_client, organizer, event, item, variation):
|
||||||
|
with scopes_disabled():
|
||||||
assert item.variations.filter(pk=variation.id).exists()
|
assert item.variations.filter(pk=variation.id).exists()
|
||||||
resp = token_client.delete('/api/v1/organizers/{}/events/{}/items/{}/variations/{}/'.format(organizer.slug, event.slug, item.pk, variation.pk))
|
resp = token_client.delete('/api/v1/organizers/{}/events/{}/items/{}/variations/{}/'.format(organizer.slug, event.slug, item.pk, variation.pk))
|
||||||
assert resp.status_code == 403
|
assert resp.status_code == 403
|
||||||
assert resp.content.decode() == '{"detail":"This variation cannot be deleted because it is the only variation. ' \
|
assert resp.content.decode() == '{"detail":"This variation cannot be deleted because it is the only variation. ' \
|
||||||
'Changing a product with variations to a product without variations is not ' \
|
'Changing a product with variations to a product without variations is not ' \
|
||||||
'allowed."}'
|
'allowed."}'
|
||||||
|
with scopes_disabled():
|
||||||
assert item.variations.filter(pk=variation.id).exists()
|
assert item.variations.filter(pk=variation.id).exists()
|
||||||
|
|
||||||
|
|
||||||
@@ -1144,6 +1170,7 @@ def test_bundles_create(token_client, organizer, event, item, item2, item3):
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
b = ItemBundle.objects.get(pk=resp.data['id'])
|
b = ItemBundle.objects.get(pk=resp.data['id'])
|
||||||
assert b.bundled_item == item3
|
assert b.bundled_item == item3
|
||||||
assert b.bundled_variation is None
|
assert b.bundled_variation is None
|
||||||
@@ -1176,6 +1203,7 @@ def test_bundles_create(token_client, organizer, event, item, item2, item3):
|
|||||||
assert resp.status_code == 400
|
assert resp.status_code == 400
|
||||||
assert resp.content.decode() == '{"non_field_errors":["The bundled item must not be the same item as the bundling one."]}'
|
assert resp.content.decode() == '{"non_field_errors":["The bundled item must not be the same item as the bundling one."]}'
|
||||||
|
|
||||||
|
with scopes_disabled():
|
||||||
item3.bundles.create(bundled_item=item, count=1, designated_price=3)
|
item3.bundles.create(bundled_item=item, count=1, designated_price=3)
|
||||||
resp = token_client.post(
|
resp = token_client.post(
|
||||||
'/api/v1/organizers/{}/events/{}/items/{}/bundles/'.format(organizer.slug, event.slug, item.pk),
|
'/api/v1/organizers/{}/events/{}/items/{}/bundles/'.format(organizer.slug, event.slug, item.pk),
|
||||||
@@ -1201,6 +1229,7 @@ def test_bundles_update(token_client, organizer, event, item, bundle):
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
|
with scopes_disabled():
|
||||||
a = ItemBundle.objects.get(pk=bundle.pk)
|
a = ItemBundle.objects.get(pk=bundle.pk)
|
||||||
assert a.count == 3
|
assert a.count == 3
|
||||||
|
|
||||||
@@ -1210,6 +1239,7 @@ def test_bundles_delete(token_client, organizer, event, item, bundle):
|
|||||||
resp = token_client.delete('/api/v1/organizers/{}/events/{}/items/{}/bundles/{}/'.format(organizer.slug, event.slug,
|
resp = token_client.delete('/api/v1/organizers/{}/events/{}/items/{}/bundles/{}/'.format(organizer.slug, event.slug,
|
||||||
item.pk, bundle.pk))
|
item.pk, bundle.pk))
|
||||||
assert resp.status_code == 204
|
assert resp.status_code == 204
|
||||||
|
with scopes_disabled():
|
||||||
assert not item.bundles.filter(pk=bundle.id).exists()
|
assert not item.bundles.filter(pk=bundle.id).exists()
|
||||||
|
|
||||||
|
|
||||||
@@ -1270,6 +1300,7 @@ def test_addons_create(token_client, organizer, event, item, category, category2
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
addon = ItemAddOn.objects.get(pk=resp.data['id'])
|
addon = ItemAddOn.objects.get(pk=resp.data['id'])
|
||||||
assert addon.position == 1
|
assert addon.position == 1
|
||||||
assert addon.addon_category == category
|
assert addon.addon_category == category
|
||||||
@@ -1315,6 +1346,7 @@ def test_addons_update(token_client, organizer, event, item, addon):
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
|
with scopes_disabled():
|
||||||
a = ItemAddOn.objects.get(pk=addon.pk)
|
a = ItemAddOn.objects.get(pk=addon.pk)
|
||||||
assert a.min_count == 100
|
assert a.min_count == 100
|
||||||
assert a.max_count == 101
|
assert a.max_count == 101
|
||||||
@@ -1337,6 +1369,7 @@ def test_addons_delete(token_client, organizer, event, item, addon):
|
|||||||
resp = token_client.delete('/api/v1/organizers/{}/events/{}/items/{}/addons/{}/'.format(organizer.slug, event.slug,
|
resp = token_client.delete('/api/v1/organizers/{}/events/{}/items/{}/addons/{}/'.format(organizer.slug, event.slug,
|
||||||
item.pk, addon.pk))
|
item.pk, addon.pk))
|
||||||
assert resp.status_code == 204
|
assert resp.status_code == 204
|
||||||
|
with scopes_disabled():
|
||||||
assert not item.addons.filter(pk=addon.id).exists()
|
assert not item.addons.filter(pk=addon.id).exists()
|
||||||
|
|
||||||
|
|
||||||
@@ -1372,6 +1405,7 @@ def test_quota_list(token_client, organizer, event, quota, item, subevent):
|
|||||||
resp = token_client.get(
|
resp = token_client.get(
|
||||||
'/api/v1/organizers/{}/events/{}/quotas/?subevent={}'.format(organizer.slug, event.slug, subevent.pk))
|
'/api/v1/organizers/{}/events/{}/quotas/?subevent={}'.format(organizer.slug, event.slug, subevent.pk))
|
||||||
assert [res] == resp.data['results']
|
assert [res] == resp.data['results']
|
||||||
|
with scopes_disabled():
|
||||||
se2 = event.subevents.create(name="Foobar", date_from=datetime(2017, 12, 27, 10, 0, 0, tzinfo=UTC))
|
se2 = event.subevents.create(name="Foobar", date_from=datetime(2017, 12, 27, 10, 0, 0, tzinfo=UTC))
|
||||||
resp = token_client.get(
|
resp = token_client.get(
|
||||||
'/api/v1/organizers/{}/events/{}/quotas/?subevent={}'.format(organizer.slug, event.slug, se2.pk))
|
'/api/v1/organizers/{}/events/{}/quotas/?subevent={}'.format(organizer.slug, event.slug, se2.pk))
|
||||||
@@ -1404,6 +1438,7 @@ def test_quota_create(token_client, organizer, event, event2, item):
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
quota = Quota.objects.get(pk=resp.data['id'])
|
quota = Quota.objects.get(pk=resp.data['id'])
|
||||||
assert quota.name == "Ticket Quota"
|
assert quota.name == "Ticket Quota"
|
||||||
assert quota.size == 200
|
assert quota.size == 200
|
||||||
@@ -1550,6 +1585,7 @@ def test_quota_update(token_client, organizer, event, quota, item):
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
|
with scopes_disabled():
|
||||||
quota = Quota.objects.get(pk=resp.data['id'])
|
quota = Quota.objects.get(pk=resp.data['id'])
|
||||||
assert quota.name == "Ticket Quota Update"
|
assert quota.name == "Ticket Quota Update"
|
||||||
assert quota.size == 111
|
assert quota.size == 111
|
||||||
@@ -1566,6 +1602,7 @@ def test_quota_update_unchanged(token_client, organizer, event, quota, item):
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
|
with scopes_disabled():
|
||||||
quota = Quota.objects.get(pk=resp.data['id'])
|
quota = Quota.objects.get(pk=resp.data['id'])
|
||||||
assert quota.size == 200
|
assert quota.size == 200
|
||||||
assert quota.all_logentries().count() == 0
|
assert quota.all_logentries().count() == 0
|
||||||
@@ -1575,6 +1612,7 @@ def test_quota_update_unchanged(token_client, organizer, event, quota, item):
|
|||||||
def test_quota_delete(token_client, organizer, event, quota):
|
def test_quota_delete(token_client, organizer, event, quota):
|
||||||
resp = token_client.delete('/api/v1/organizers/{}/events/{}/quotas/{}/'.format(organizer.slug, event.slug, quota.pk))
|
resp = token_client.delete('/api/v1/organizers/{}/events/{}/quotas/{}/'.format(organizer.slug, event.slug, quota.pk))
|
||||||
assert resp.status_code == 204
|
assert resp.status_code == 204
|
||||||
|
with scopes_disabled():
|
||||||
assert not event.quotas.filter(pk=quota.id).exists()
|
assert not event.quotas.filter(pk=quota.id).exists()
|
||||||
|
|
||||||
|
|
||||||
@@ -1690,6 +1728,7 @@ def test_question_create(token_client, organizer, event, event2, item):
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
question = Question.objects.get(pk=resp.data['id'])
|
question = Question.objects.get(pk=resp.data['id'])
|
||||||
assert question.question == "What's your name?"
|
assert question.question == "What's your name?"
|
||||||
assert question.type == "S"
|
assert question.type == "S"
|
||||||
@@ -1784,6 +1823,7 @@ def test_question_create(token_client, organizer, event, event2, item):
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
q2 = Question.objects.get(pk=resp.data['id'])
|
q2 = Question.objects.get(pk=resp.data['id'])
|
||||||
assert q2.dependency_question == question
|
assert q2.dependency_question == question
|
||||||
|
|
||||||
@@ -1799,6 +1839,7 @@ def test_question_update(token_client, organizer, event, question):
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
|
with scopes_disabled():
|
||||||
question = Question.objects.get(pk=resp.data['id'])
|
question = Question.objects.get(pk=resp.data['id'])
|
||||||
assert question.question == "What's your shoe size?"
|
assert question.question == "What's your shoe size?"
|
||||||
assert question.type == "N"
|
assert question.type == "N"
|
||||||
@@ -1806,6 +1847,7 @@ def test_question_update(token_client, organizer, event, question):
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_question_update_circular_dependency(token_client, organizer, event, question):
|
def test_question_update_circular_dependency(token_client, organizer, event, question):
|
||||||
|
with scopes_disabled():
|
||||||
q2 = event.questions.create(question="T-Shirt size", type="B", identifier="FOO", dependency_question=question)
|
q2 = event.questions.create(question="T-Shirt size", type="B", identifier="FOO", dependency_question=question)
|
||||||
resp = token_client.patch(
|
resp = token_client.patch(
|
||||||
'/api/v1/organizers/{}/events/{}/questions/{}/'.format(organizer.slug, event.slug, question.pk),
|
'/api/v1/organizers/{}/events/{}/questions/{}/'.format(organizer.slug, event.slug, question.pk),
|
||||||
@@ -1836,6 +1878,7 @@ def test_question_update_options(token_client, organizer, event, question, item)
|
|||||||
def test_question_delete(token_client, organizer, event, question):
|
def test_question_delete(token_client, organizer, event, question):
|
||||||
resp = token_client.delete('/api/v1/organizers/{}/events/{}/questions/{}/'.format(organizer.slug, event.slug, question.pk))
|
resp = token_client.delete('/api/v1/organizers/{}/events/{}/questions/{}/'.format(organizer.slug, event.slug, question.pk))
|
||||||
assert resp.status_code == 204
|
assert resp.status_code == 204
|
||||||
|
with scopes_disabled():
|
||||||
assert not event.questions.filter(pk=question.id).exists()
|
assert not event.questions.filter(pk=question.id).exists()
|
||||||
|
|
||||||
|
|
||||||
@@ -1881,6 +1924,7 @@ def test_options_create(token_client, organizer, event, question):
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
option = QuestionOption.objects.get(pk=resp.data['id'])
|
option = QuestionOption.objects.get(pk=resp.data['id'])
|
||||||
assert option.answer == "A"
|
assert option.answer == "A"
|
||||||
|
|
||||||
@@ -1907,6 +1951,7 @@ def test_options_update(token_client, organizer, event, question, option):
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
|
with scopes_disabled():
|
||||||
a = QuestionOption.objects.get(pk=option.pk)
|
a = QuestionOption.objects.get(pk=option.pk)
|
||||||
assert a.answer == "B"
|
assert a.answer == "B"
|
||||||
|
|
||||||
@@ -1917,6 +1962,7 @@ def test_options_delete(token_client, organizer, event, question, option):
|
|||||||
organizer.slug, event.slug, question.pk, option.pk
|
organizer.slug, event.slug, question.pk, option.pk
|
||||||
))
|
))
|
||||||
assert resp.status_code == 204
|
assert resp.status_code == 204
|
||||||
|
with scopes_disabled():
|
||||||
assert not question.options.filter(pk=option.id).exists()
|
assert not question.options.filter(pk=option.id).exists()
|
||||||
|
|
||||||
|
|
||||||
@@ -1948,6 +1994,7 @@ def test_question_create_with_option(token_client, organizer, event, item):
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
question = Question.objects.get(pk=resp.data['id'])
|
question = Question.objects.get(pk=resp.data['id'])
|
||||||
assert str(question.options.first().answer) == "A"
|
assert str(question.options.first().answer) == "A"
|
||||||
assert question.options.first().identifier is not None
|
assert question.options.first().identifier is not None
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import pytest
|
|||||||
from django.core import mail as djmail
|
from django.core import mail as djmail
|
||||||
from django.utils.timezone import now
|
from django.utils.timezone import now
|
||||||
from django_countries.fields import Country
|
from django_countries.fields import Country
|
||||||
|
from django_scopes import scopes_disabled
|
||||||
from pytz import UTC
|
from pytz import UTC
|
||||||
from stripe.error import APIConnectionError
|
from stripe.error import APIConnectionError
|
||||||
from tests.plugins.stripe.test_provider import MockedCharge
|
from tests.plugins.stripe.test_provider import MockedCharge
|
||||||
@@ -229,6 +230,7 @@ TEST_ORDER_RES = {
|
|||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_order_list(token_client, organizer, event, order, item, taxrule, question):
|
def test_order_list(token_client, organizer, event, order, item, taxrule, question):
|
||||||
res = dict(TEST_ORDER_RES)
|
res = dict(TEST_ORDER_RES)
|
||||||
|
with scopes_disabled():
|
||||||
res["positions"][0]["id"] = order.positions.first().pk
|
res["positions"][0]["id"] = order.positions.first().pk
|
||||||
res["positions"][0]["item"] = item.pk
|
res["positions"][0]["item"] = item.pk
|
||||||
res["positions"][0]["answers"][0]["question"] = question.pk
|
res["positions"][0]["answers"][0]["question"] = question.pk
|
||||||
@@ -285,6 +287,7 @@ def test_order_list(token_client, organizer, event, order, item, taxrule, questi
|
|||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_order_detail(token_client, organizer, event, order, item, taxrule, question):
|
def test_order_detail(token_client, organizer, event, order, item, taxrule, question):
|
||||||
res = dict(TEST_ORDER_RES)
|
res = dict(TEST_ORDER_RES)
|
||||||
|
with scopes_disabled():
|
||||||
res["positions"][0]["id"] = order.positions.first().pk
|
res["positions"][0]["id"] = order.positions.first().pk
|
||||||
res["positions"][0]["item"] = item.pk
|
res["positions"][0]["item"] = item.pk
|
||||||
res["fees"][0]["tax_rule"] = taxrule.pk
|
res["fees"][0]["tax_rule"] = taxrule.pk
|
||||||
@@ -338,6 +341,7 @@ def test_payment_confirm(token_client, organizer, event, order):
|
|||||||
resp = token_client.post('/api/v1/organizers/{}/events/{}/orders/{}/payments/2/confirm/'.format(
|
resp = token_client.post('/api/v1/organizers/{}/events/{}/orders/{}/payments/2/confirm/'.format(
|
||||||
organizer.slug, event.slug, order.code
|
organizer.slug, event.slug, order.code
|
||||||
), format='json', data={'force': True})
|
), format='json', data={'force': True})
|
||||||
|
with scopes_disabled():
|
||||||
p = order.payments.get(local_id=2)
|
p = order.payments.get(local_id=2)
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
assert p.state == OrderPayment.PAYMENT_STATE_CONFIRMED
|
assert p.state == OrderPayment.PAYMENT_STATE_CONFIRMED
|
||||||
@@ -353,6 +357,7 @@ def test_payment_cancel(token_client, organizer, event, order):
|
|||||||
resp = token_client.post('/api/v1/organizers/{}/events/{}/orders/{}/payments/2/cancel/'.format(
|
resp = token_client.post('/api/v1/organizers/{}/events/{}/orders/{}/payments/2/cancel/'.format(
|
||||||
organizer.slug, event.slug, order.code
|
organizer.slug, event.slug, order.code
|
||||||
))
|
))
|
||||||
|
with scopes_disabled():
|
||||||
p = order.payments.get(local_id=2)
|
p = order.payments.get(local_id=2)
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
assert p.state == OrderPayment.PAYMENT_STATE_CANCELED
|
assert p.state == OrderPayment.PAYMENT_STATE_CANCELED
|
||||||
@@ -365,6 +370,7 @@ def test_payment_cancel(token_client, organizer, event, order):
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_payment_refund_fail(token_client, organizer, event, order, monkeypatch):
|
def test_payment_refund_fail(token_client, organizer, event, order, monkeypatch):
|
||||||
|
with scopes_disabled():
|
||||||
order.payments.last().confirm()
|
order.payments.last().confirm()
|
||||||
resp = token_client.post('/api/v1/organizers/{}/events/{}/orders/{}/payments/2/refund/'.format(
|
resp = token_client.post('/api/v1/organizers/{}/events/{}/orders/{}/payments/2/refund/'.format(
|
||||||
organizer.slug, event.slug, order.code
|
organizer.slug, event.slug, order.code
|
||||||
@@ -424,6 +430,7 @@ def test_payment_refund_success(token_client, organizer, event, order, monkeypat
|
|||||||
c.refunds.create = refund_create
|
c.refunds.create = refund_create
|
||||||
return c
|
return c
|
||||||
|
|
||||||
|
with scopes_disabled():
|
||||||
p1 = order.payments.create(
|
p1 = order.payments.create(
|
||||||
provider='stripe',
|
provider='stripe',
|
||||||
state='confirmed',
|
state='confirmed',
|
||||||
@@ -441,6 +448,7 @@ def test_payment_refund_success(token_client, organizer, event, order, monkeypat
|
|||||||
'mark_canceled': False,
|
'mark_canceled': False,
|
||||||
})
|
})
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
|
with scopes_disabled():
|
||||||
r = order.refunds.get(local_id=resp.data['local_id'])
|
r = order.refunds.get(local_id=resp.data['local_id'])
|
||||||
assert r.provider == "stripe"
|
assert r.provider == "stripe"
|
||||||
assert r.state == OrderRefund.REFUND_STATE_DONE
|
assert r.state == OrderRefund.REFUND_STATE_DONE
|
||||||
@@ -457,6 +465,7 @@ def test_payment_refund_unavailable(token_client, organizer, event, order, monke
|
|||||||
c.refunds.create = refund_create
|
c.refunds.create = refund_create
|
||||||
return c
|
return c
|
||||||
|
|
||||||
|
with scopes_disabled():
|
||||||
p1 = order.payments.create(
|
p1 = order.payments.create(
|
||||||
provider='stripe',
|
provider='stripe',
|
||||||
state='confirmed',
|
state='confirmed',
|
||||||
@@ -475,6 +484,7 @@ def test_payment_refund_unavailable(token_client, organizer, event, order, monke
|
|||||||
})
|
})
|
||||||
assert resp.status_code == 400
|
assert resp.status_code == 400
|
||||||
assert resp.data == {'detail': 'External error: We had trouble communicating with Stripe. Please try again and contact support if the problem persists.'}
|
assert resp.data == {'detail': 'External error: We had trouble communicating with Stripe. Please try again and contact support if the problem persists.'}
|
||||||
|
with scopes_disabled():
|
||||||
r = order.refunds.last()
|
r = order.refunds.last()
|
||||||
assert r.provider == "stripe"
|
assert r.provider == "stripe"
|
||||||
assert r.state == OrderRefund.REFUND_STATE_FAILED
|
assert r.state == OrderRefund.REFUND_STATE_FAILED
|
||||||
@@ -499,12 +509,14 @@ def test_refund_detail(token_client, organizer, event, order):
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_refund_done(token_client, organizer, event, order):
|
def test_refund_done(token_client, organizer, event, order):
|
||||||
|
with scopes_disabled():
|
||||||
r = order.refunds.get(local_id=1)
|
r = order.refunds.get(local_id=1)
|
||||||
r.state = 'transit'
|
r.state = 'transit'
|
||||||
r.save()
|
r.save()
|
||||||
resp = token_client.post('/api/v1/organizers/{}/events/{}/orders/{}/refunds/1/done/'.format(
|
resp = token_client.post('/api/v1/organizers/{}/events/{}/orders/{}/refunds/1/done/'.format(
|
||||||
organizer.slug, event.slug, order.code
|
organizer.slug, event.slug, order.code
|
||||||
))
|
))
|
||||||
|
with scopes_disabled():
|
||||||
r = order.refunds.get(local_id=1)
|
r = order.refunds.get(local_id=1)
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
assert r.state == OrderRefund.REFUND_STATE_DONE
|
assert r.state == OrderRefund.REFUND_STATE_DONE
|
||||||
@@ -517,11 +529,13 @@ def test_refund_done(token_client, organizer, event, order):
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_refund_process_mark_refunded(token_client, organizer, event, order):
|
def test_refund_process_mark_refunded(token_client, organizer, event, order):
|
||||||
|
with scopes_disabled():
|
||||||
p = order.payments.get(local_id=1)
|
p = order.payments.get(local_id=1)
|
||||||
p.create_external_refund()
|
p.create_external_refund()
|
||||||
resp = token_client.post('/api/v1/organizers/{}/events/{}/orders/{}/refunds/2/process/'.format(
|
resp = token_client.post('/api/v1/organizers/{}/events/{}/orders/{}/refunds/2/process/'.format(
|
||||||
organizer.slug, event.slug, order.code
|
organizer.slug, event.slug, order.code
|
||||||
), format='json', data={'mark_canceled': True})
|
), format='json', data={'mark_canceled': True})
|
||||||
|
with scopes_disabled():
|
||||||
r = order.refunds.get(local_id=1)
|
r = order.refunds.get(local_id=1)
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
assert r.state == OrderRefund.REFUND_STATE_DONE
|
assert r.state == OrderRefund.REFUND_STATE_DONE
|
||||||
@@ -536,11 +550,13 @@ def test_refund_process_mark_refunded(token_client, organizer, event, order):
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_refund_process_mark_pending(token_client, organizer, event, order):
|
def test_refund_process_mark_pending(token_client, organizer, event, order):
|
||||||
|
with scopes_disabled():
|
||||||
p = order.payments.get(local_id=1)
|
p = order.payments.get(local_id=1)
|
||||||
p.create_external_refund()
|
p.create_external_refund()
|
||||||
resp = token_client.post('/api/v1/organizers/{}/events/{}/orders/{}/refunds/2/process/'.format(
|
resp = token_client.post('/api/v1/organizers/{}/events/{}/orders/{}/refunds/2/process/'.format(
|
||||||
organizer.slug, event.slug, order.code
|
organizer.slug, event.slug, order.code
|
||||||
), format='json', data={'mark_canceled': False})
|
), format='json', data={'mark_canceled': False})
|
||||||
|
with scopes_disabled():
|
||||||
r = order.refunds.get(local_id=1)
|
r = order.refunds.get(local_id=1)
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
assert r.state == OrderRefund.REFUND_STATE_DONE
|
assert r.state == OrderRefund.REFUND_STATE_DONE
|
||||||
@@ -550,12 +566,14 @@ def test_refund_process_mark_pending(token_client, organizer, event, order):
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_refund_cancel(token_client, organizer, event, order):
|
def test_refund_cancel(token_client, organizer, event, order):
|
||||||
|
with scopes_disabled():
|
||||||
r = order.refunds.get(local_id=1)
|
r = order.refunds.get(local_id=1)
|
||||||
r.state = 'transit'
|
r.state = 'transit'
|
||||||
r.save()
|
r.save()
|
||||||
resp = token_client.post('/api/v1/organizers/{}/events/{}/orders/{}/refunds/1/cancel/'.format(
|
resp = token_client.post('/api/v1/organizers/{}/events/{}/orders/{}/refunds/1/cancel/'.format(
|
||||||
organizer.slug, event.slug, order.code
|
organizer.slug, event.slug, order.code
|
||||||
))
|
))
|
||||||
|
with scopes_disabled():
|
||||||
r = order.refunds.get(local_id=1)
|
r = order.refunds.get(local_id=1)
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
assert r.state == OrderRefund.REFUND_STATE_CANCELED
|
assert r.state == OrderRefund.REFUND_STATE_CANCELED
|
||||||
@@ -571,6 +589,7 @@ def test_orderposition_list(token_client, organizer, event, order, item, subeven
|
|||||||
i2 = copy.copy(item)
|
i2 = copy.copy(item)
|
||||||
i2.pk = None
|
i2.pk = None
|
||||||
i2.save()
|
i2.save()
|
||||||
|
with scopes_disabled():
|
||||||
var = item.variations.create(value="Children")
|
var = item.variations.create(value="Children")
|
||||||
var2 = item.variations.create(value="Children")
|
var2 = item.variations.create(value="Children")
|
||||||
res = dict(TEST_ORDERPOSITION_RES)
|
res = dict(TEST_ORDERPOSITION_RES)
|
||||||
@@ -665,6 +684,7 @@ def test_orderposition_list(token_client, organizer, event, order, item, subeven
|
|||||||
'/api/v1/organizers/{}/events/{}/orderpositions/?has_checkin=true'.format(organizer.slug, event.slug))
|
'/api/v1/organizers/{}/events/{}/orderpositions/?has_checkin=true'.format(organizer.slug, event.slug))
|
||||||
assert [] == resp.data['results']
|
assert [] == resp.data['results']
|
||||||
|
|
||||||
|
with scopes_disabled():
|
||||||
cl = event.checkin_lists.create(name="Default")
|
cl = event.checkin_lists.create(name="Default")
|
||||||
op.checkins.create(datetime=datetime.datetime(2017, 12, 26, 10, 0, 0, tzinfo=UTC), list=cl)
|
op.checkins.create(datetime=datetime.datetime(2017, 12, 26, 10, 0, 0, tzinfo=UTC), list=cl)
|
||||||
res['checkins'] = [{'datetime': '2017-12-26T10:00:00Z', 'list': cl.pk}]
|
res['checkins'] = [{'datetime': '2017-12-26T10:00:00Z', 'list': cl.pk}]
|
||||||
@@ -692,6 +712,7 @@ def test_orderposition_list(token_client, organizer, event, order, item, subeven
|
|||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_orderposition_detail(token_client, organizer, event, order, item, question):
|
def test_orderposition_detail(token_client, organizer, event, order, item, question):
|
||||||
res = dict(TEST_ORDERPOSITION_RES)
|
res = dict(TEST_ORDERPOSITION_RES)
|
||||||
|
with scopes_disabled():
|
||||||
op = order.positions.first()
|
op = order.positions.first()
|
||||||
res["id"] = op.pk
|
res["id"] = op.pk
|
||||||
res["item"] = item.pk
|
res["item"] = item.pk
|
||||||
@@ -711,6 +732,7 @@ def test_orderposition_detail(token_client, organizer, event, order, item, quest
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_orderposition_detail_no_canceled(token_client, organizer, event, order, item, question):
|
def test_orderposition_detail_no_canceled(token_client, organizer, event, order, item, question):
|
||||||
|
with scopes_disabled():
|
||||||
op = order.all_positions.filter(canceled=True).first()
|
op = order.all_positions.filter(canceled=True).first()
|
||||||
resp = token_client.get('/api/v1/organizers/{}/events/{}/orderpositions/{}/'.format(organizer.slug, event.slug,
|
resp = token_client.get('/api/v1/organizers/{}/events/{}/orderpositions/{}/'.format(organizer.slug, event.slug,
|
||||||
op.pk))
|
op.pk))
|
||||||
@@ -719,6 +741,7 @@ def test_orderposition_detail_no_canceled(token_client, organizer, event, order,
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_orderposition_delete(token_client, organizer, event, order, item, question):
|
def test_orderposition_delete(token_client, organizer, event, order, item, question):
|
||||||
|
with scopes_disabled():
|
||||||
op = order.positions.first()
|
op = order.positions.first()
|
||||||
resp = token_client.delete('/api/v1/organizers/{}/events/{}/orderpositions/{}/'.format(
|
resp = token_client.delete('/api/v1/organizers/{}/events/{}/orderpositions/{}/'.format(
|
||||||
organizer.slug, event.slug, op.pk
|
organizer.slug, event.slug, op.pk
|
||||||
@@ -726,6 +749,7 @@ def test_orderposition_delete(token_client, organizer, event, order, item, quest
|
|||||||
assert resp.status_code == 400
|
assert resp.status_code == 400
|
||||||
assert resp.data == ['This operation would leave the order empty. Please cancel the order itself instead.']
|
assert resp.data == ['This operation would leave the order empty. Please cancel the order itself instead.']
|
||||||
|
|
||||||
|
with scopes_disabled():
|
||||||
op2 = OrderPosition.objects.create(
|
op2 = OrderPosition.objects.create(
|
||||||
order=order,
|
order=order,
|
||||||
item=item,
|
item=item,
|
||||||
@@ -744,6 +768,7 @@ def test_orderposition_delete(token_client, organizer, event, order, item, quest
|
|||||||
organizer.slug, event.slug, op2.pk
|
organizer.slug, event.slug, op2.pk
|
||||||
))
|
))
|
||||||
assert resp.status_code == 204
|
assert resp.status_code == 204
|
||||||
|
with scopes_disabled():
|
||||||
assert order.positions.count() == 1
|
assert order.positions.count() == 1
|
||||||
assert order.all_positions.count() == 3
|
assert order.all_positions.count() == 3
|
||||||
order.refresh_from_db()
|
order.refresh_from_db()
|
||||||
@@ -822,6 +847,7 @@ def test_invoice_list(token_client, organizer, event, order, invoice):
|
|||||||
organizer.slug, event.slug))
|
organizer.slug, event.slug))
|
||||||
assert [] == resp.data['results']
|
assert [] == resp.data['results']
|
||||||
|
|
||||||
|
with scopes_disabled():
|
||||||
ic = generate_cancellation(invoice)
|
ic = generate_cancellation(invoice)
|
||||||
|
|
||||||
resp = token_client.get('/api/v1/organizers/{}/events/{}/invoices/?is_cancellation=false'.format(
|
resp = token_client.get('/api/v1/organizers/{}/events/{}/invoices/?is_cancellation=false'.format(
|
||||||
@@ -854,6 +880,7 @@ def test_invoice_detail(token_client, organizer, event, invoice):
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_invoice_regenerate(token_client, organizer, event, invoice):
|
def test_invoice_regenerate(token_client, organizer, event, invoice):
|
||||||
|
with scopes_disabled():
|
||||||
InvoiceAddress.objects.filter(order=invoice.order).update(company="ACME Ltd")
|
InvoiceAddress.objects.filter(order=invoice.order).update(company="ACME Ltd")
|
||||||
|
|
||||||
resp = token_client.post('/api/v1/organizers/{}/events/{}/invoices/{}/regenerate/'.format(
|
resp = token_client.post('/api/v1/organizers/{}/events/{}/invoices/{}/regenerate/'.format(
|
||||||
@@ -866,6 +893,7 @@ def test_invoice_regenerate(token_client, organizer, event, invoice):
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_invoice_reissue(token_client, organizer, event, invoice):
|
def test_invoice_reissue(token_client, organizer, event, invoice):
|
||||||
|
with scopes_disabled():
|
||||||
InvoiceAddress.objects.filter(order=invoice.order).update(company="ACME Ltd")
|
InvoiceAddress.objects.filter(order=invoice.order).update(company="ACME Ltd")
|
||||||
|
|
||||||
resp = token_client.post('/api/v1/organizers/{}/events/{}/invoices/{}/reissue/'.format(
|
resp = token_client.post('/api/v1/organizers/{}/events/{}/invoices/{}/reissue/'.format(
|
||||||
@@ -874,6 +902,7 @@ def test_invoice_reissue(token_client, organizer, event, invoice):
|
|||||||
assert resp.status_code == 204
|
assert resp.status_code == 204
|
||||||
invoice.refresh_from_db()
|
invoice.refresh_from_db()
|
||||||
assert "ACME Ltd" not in invoice.invoice_to
|
assert "ACME Ltd" not in invoice.invoice_to
|
||||||
|
with scopes_disabled():
|
||||||
assert invoice.order.invoices.count() == 3
|
assert invoice.order.invoices.count() == 3
|
||||||
invoice = invoice.order.invoices.last()
|
invoice = invoice.order.invoices.last()
|
||||||
assert "ACME Ltd" in invoice.invoice_to
|
assert "ACME Ltd" in invoice.invoice_to
|
||||||
@@ -1009,6 +1038,7 @@ def test_order_mark_canceled_expired(token_client, organizer, event, order):
|
|||||||
def test_order_mark_paid_canceled_keep_fee(token_client, organizer, event, order):
|
def test_order_mark_paid_canceled_keep_fee(token_client, organizer, event, order):
|
||||||
order.status = Order.STATUS_PAID
|
order.status = Order.STATUS_PAID
|
||||||
order.save()
|
order.save()
|
||||||
|
with scopes_disabled():
|
||||||
order.payments.create(state=OrderPayment.PAYMENT_STATE_CONFIRMED, amount=order.total)
|
order.payments.create(state=OrderPayment.PAYMENT_STATE_CONFIRMED, amount=order.total)
|
||||||
resp = token_client.post(
|
resp = token_client.post(
|
||||||
'/api/v1/organizers/{}/events/{}/orders/{}/mark_canceled/'.format(
|
'/api/v1/organizers/{}/events/{}/orders/{}/mark_canceled/'.format(
|
||||||
@@ -1186,6 +1216,7 @@ def test_order_extend_expired_quota_waiting_list(token_client, organizer, event,
|
|||||||
order.save()
|
order.save()
|
||||||
quota.size = 1
|
quota.size = 1
|
||||||
quota.save()
|
quota.save()
|
||||||
|
with scopes_disabled():
|
||||||
event.waitinglistentries.create(item=item, email='foo@bar.com')
|
event.waitinglistentries.create(item=item, email='foo@bar.com')
|
||||||
newdate = (now() + datetime.timedelta(days=20)).strftime("%Y-%m-%d")
|
newdate = (now() + datetime.timedelta(days=20)).strftime("%Y-%m-%d")
|
||||||
resp = token_client.post(
|
resp = token_client.post(
|
||||||
@@ -1353,6 +1384,7 @@ def test_order_create(token_client, organizer, event, item, quota, question):
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
o = Order.objects.get(code=resp.data['code'])
|
o = Order.objects.get(code=resp.data['code'])
|
||||||
assert o.email == "dummy@dummy.test"
|
assert o.email == "dummy@dummy.test"
|
||||||
assert o.locale == "en"
|
assert o.locale == "en"
|
||||||
@@ -1361,11 +1393,13 @@ def test_order_create(token_client, organizer, event, item, quota, question):
|
|||||||
assert o.sales_channel == "web"
|
assert o.sales_channel == "web"
|
||||||
assert not o.testmode
|
assert not o.testmode
|
||||||
|
|
||||||
|
with scopes_disabled():
|
||||||
p = o.payments.first()
|
p = o.payments.first()
|
||||||
assert p.provider == "banktransfer"
|
assert p.provider == "banktransfer"
|
||||||
assert p.amount == o.total
|
assert p.amount == o.total
|
||||||
assert p.state == "created"
|
assert p.state == "created"
|
||||||
|
|
||||||
|
with scopes_disabled():
|
||||||
fee = o.fees.first()
|
fee = o.fees.first()
|
||||||
assert fee.fee_type == "payment"
|
assert fee.fee_type == "payment"
|
||||||
assert fee.value == Decimal('0.25')
|
assert fee.value == Decimal('0.25')
|
||||||
@@ -1373,11 +1407,13 @@ def test_order_create(token_client, organizer, event, item, quota, question):
|
|||||||
assert ia.company == "Sample company"
|
assert ia.company == "Sample company"
|
||||||
assert ia.name_parts == {"full_name": "Fo", "_scheme": "full"}
|
assert ia.name_parts == {"full_name": "Fo", "_scheme": "full"}
|
||||||
assert ia.name_cached == "Fo"
|
assert ia.name_cached == "Fo"
|
||||||
|
with scopes_disabled():
|
||||||
assert o.positions.count() == 1
|
assert o.positions.count() == 1
|
||||||
pos = o.positions.first()
|
pos = o.positions.first()
|
||||||
assert pos.item == item
|
assert pos.item == item
|
||||||
assert pos.price == Decimal("23.00")
|
assert pos.price == Decimal("23.00")
|
||||||
assert pos.attendee_name_parts == {"full_name": "Peter", "_scheme": "full"}
|
assert pos.attendee_name_parts == {"full_name": "Peter", "_scheme": "full"}
|
||||||
|
with scopes_disabled():
|
||||||
answ = pos.answers.first()
|
answ = pos.answers.first()
|
||||||
assert answ.question == question
|
assert answ.question == question
|
||||||
assert answ.answer == "S"
|
assert answ.answer == "S"
|
||||||
@@ -1395,6 +1431,7 @@ def test_order_create_invoice_address_optional(token_client, organizer, event, i
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
o = Order.objects.get(code=resp.data['code'])
|
o = Order.objects.get(code=resp.data['code'])
|
||||||
with pytest.raises(InvoiceAddress.DoesNotExist):
|
with pytest.raises(InvoiceAddress.DoesNotExist):
|
||||||
o.invoice_address
|
o.invoice_address
|
||||||
@@ -1412,6 +1449,7 @@ def test_order_create_sales_channel_optional(token_client, organizer, event, ite
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
o = Order.objects.get(code=resp.data['code'])
|
o = Order.objects.get(code=resp.data['code'])
|
||||||
assert o.sales_channel == "web"
|
assert o.sales_channel == "web"
|
||||||
|
|
||||||
@@ -1443,6 +1481,7 @@ def test_order_create_in_test_mode(token_client, organizer, event, item, quota,
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
o = Order.objects.get(code=resp.data['code'])
|
o = Order.objects.get(code=resp.data['code'])
|
||||||
assert o.testmode
|
assert o.testmode
|
||||||
|
|
||||||
@@ -1460,6 +1499,7 @@ def test_order_create_attendee_name_optional(token_client, organizer, event, ite
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
o = Order.objects.get(code=resp.data['code'])
|
o = Order.objects.get(code=resp.data['code'])
|
||||||
assert o.positions.first().attendee_name_parts == {}
|
assert o.positions.first().attendee_name_parts == {}
|
||||||
|
|
||||||
@@ -1484,6 +1524,8 @@ def test_order_create_legacy_attendee_name(token_client, organizer, event, item,
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
|
||||||
|
with scopes_disabled():
|
||||||
o = Order.objects.get(code=resp.data['code'])
|
o = Order.objects.get(code=resp.data['code'])
|
||||||
assert o.positions.first().attendee_name_parts == {"_legacy": "Peter"}
|
assert o.positions.first().attendee_name_parts == {"_legacy": "Peter"}
|
||||||
|
|
||||||
@@ -1508,6 +1550,7 @@ def test_order_create_legacy_invoice_name(token_client, organizer, event, item,
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
o = Order.objects.get(code=resp.data['code'])
|
o = Order.objects.get(code=resp.data['code'])
|
||||||
assert o.invoice_address.name_parts == {"_legacy": "Peter"}
|
assert o.invoice_address.name_parts == {"_legacy": "Peter"}
|
||||||
|
|
||||||
@@ -1524,6 +1567,7 @@ def test_order_create_code_optional(token_client, organizer, event, item, quota,
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
o = Order.objects.get(code=resp.data['code'])
|
o = Order.objects.get(code=resp.data['code'])
|
||||||
assert o.code == "ABCDE"
|
assert o.code == "ABCDE"
|
||||||
|
|
||||||
@@ -1557,6 +1601,7 @@ def test_order_email_optional(token_client, organizer, event, item, quota, quest
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
o = Order.objects.get(code=resp.data['code'])
|
o = Order.objects.get(code=resp.data['code'])
|
||||||
assert not o.email
|
assert not o.email
|
||||||
|
|
||||||
@@ -1572,7 +1617,6 @@ def test_order_create_payment_info_optional(token_client, organizer, event, item
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
o = Order.objects.get(code=resp.data['code'])
|
|
||||||
|
|
||||||
res['payment_info'] = {
|
res['payment_info'] = {
|
||||||
'foo': {
|
'foo': {
|
||||||
@@ -1586,6 +1630,7 @@ def test_order_create_payment_info_optional(token_client, organizer, event, item
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
o = Order.objects.get(code=resp.data['code'])
|
o = Order.objects.get(code=resp.data['code'])
|
||||||
|
|
||||||
p = o.payments.first()
|
p = o.payments.first()
|
||||||
@@ -1605,6 +1650,7 @@ def test_order_create_position_secret_optional(token_client, organizer, event, i
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
o = Order.objects.get(code=resp.data['code'])
|
o = Order.objects.get(code=resp.data['code'])
|
||||||
assert o.positions.first().secret
|
assert o.positions.first().secret
|
||||||
|
|
||||||
@@ -1615,6 +1661,7 @@ def test_order_create_position_secret_optional(token_client, organizer, event, i
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
o = Order.objects.get(code=resp.data['code'])
|
o = Order.objects.get(code=resp.data['code'])
|
||||||
assert o.positions.first().secret == "aaa"
|
assert o.positions.first().secret == "aaa"
|
||||||
|
|
||||||
@@ -1642,6 +1689,7 @@ def test_order_create_tax_rules(token_client, organizer, event, item, quota, que
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
o = Order.objects.get(code=resp.data['code'])
|
o = Order.objects.get(code=resp.data['code'])
|
||||||
fee = o.fees.first()
|
fee = o.fees.first()
|
||||||
assert fee.fee_type == "payment"
|
assert fee.fee_type == "payment"
|
||||||
@@ -1650,6 +1698,7 @@ def test_order_create_tax_rules(token_client, organizer, event, item, quota, que
|
|||||||
assert fee.tax_rule == taxrule
|
assert fee.tax_rule == taxrule
|
||||||
ia = o.invoice_address
|
ia = o.invoice_address
|
||||||
assert ia.company == "Sample company"
|
assert ia.company == "Sample company"
|
||||||
|
with scopes_disabled():
|
||||||
pos = o.positions.first()
|
pos = o.positions.first()
|
||||||
assert pos.item == item
|
assert pos.item == item
|
||||||
assert pos.tax_rate == Decimal('19.00')
|
assert pos.tax_rate == Decimal('19.00')
|
||||||
@@ -1765,6 +1814,7 @@ def test_order_create_item_validation(token_client, organizer, event, item, item
|
|||||||
assert resp.status_code == 400
|
assert resp.status_code == 400
|
||||||
assert resp.data == {'positions': [{'item': ['The specified item does not belong to this event.']}]}
|
assert resp.data == {'positions': [{'item': ['The specified item does not belong to this event.']}]}
|
||||||
|
|
||||||
|
with scopes_disabled():
|
||||||
var2 = item2.variations.create(value="A")
|
var2 = item2.variations.create(value="A")
|
||||||
quota.variations.add(var2)
|
quota.variations.add(var2)
|
||||||
|
|
||||||
@@ -1778,6 +1828,7 @@ def test_order_create_item_validation(token_client, organizer, event, item, item
|
|||||||
assert resp.status_code == 400
|
assert resp.status_code == 400
|
||||||
assert resp.data == {'positions': [{'variation': ['You cannot specify a variation for this item.']}]}
|
assert resp.data == {'positions': [{'variation': ['You cannot specify a variation for this item.']}]}
|
||||||
|
|
||||||
|
with scopes_disabled():
|
||||||
var1 = item.variations.create(value="A")
|
var1 = item.variations.create(value="A")
|
||||||
res['positions'][0]['item'] = item.pk
|
res['positions'][0]['item'] = item.pk
|
||||||
res['positions'][0]['variation'] = var1.pk
|
res['positions'][0]['variation'] = var1.pk
|
||||||
@@ -1789,6 +1840,7 @@ def test_order_create_item_validation(token_client, organizer, event, item, item
|
|||||||
assert resp.status_code == 400
|
assert resp.status_code == 400
|
||||||
assert resp.data == {'positions': [{'item': ['The product "Budget Ticket" is not assigned to a quota.']}]}
|
assert resp.data == {'positions': [{'item': ['The product "Budget Ticket" is not assigned to a quota.']}]}
|
||||||
|
|
||||||
|
with scopes_disabled():
|
||||||
quota.variations.add(var1)
|
quota.variations.add(var1)
|
||||||
resp = token_client.post(
|
resp = token_client.post(
|
||||||
'/api/v1/organizers/{}/events/{}/orders/'.format(
|
'/api/v1/organizers/{}/events/{}/orders/'.format(
|
||||||
@@ -1850,6 +1902,7 @@ def test_order_create_positionids_addons(token_client, organizer, event, item, q
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
o = Order.objects.get(code=resp.data['code'])
|
o = Order.objects.get(code=resp.data['code'])
|
||||||
pos1 = o.positions.first()
|
pos1 = o.positions.first()
|
||||||
pos2 = o.positions.last()
|
pos2 = o.positions.last()
|
||||||
@@ -2046,7 +2099,9 @@ def test_order_create_answer_validation(token_client, organizer, event, item, qu
|
|||||||
assert resp.data == {'positions': [
|
assert resp.data == {'positions': [
|
||||||
{'answers': [{'non_field_errors': ['You need to specify options if the question is of a choice type.']}]}]}
|
{'answers': [{'non_field_errors': ['You need to specify options if the question is of a choice type.']}]}]}
|
||||||
|
|
||||||
|
with scopes_disabled():
|
||||||
question.options.create(answer="L")
|
question.options.create(answer="L")
|
||||||
|
with scopes_disabled():
|
||||||
res['positions'][0]['answers'][0]['options'] = [
|
res['positions'][0]['answers'][0]['options'] = [
|
||||||
question.options.first().pk,
|
question.options.first().pk,
|
||||||
question.options.last().pk,
|
question.options.last().pk,
|
||||||
@@ -2073,6 +2128,7 @@ def test_order_create_answer_validation(token_client, organizer, event, item, qu
|
|||||||
|
|
||||||
question.type = Question.TYPE_CHOICE_MULTIPLE
|
question.type = Question.TYPE_CHOICE_MULTIPLE
|
||||||
question.save()
|
question.save()
|
||||||
|
with scopes_disabled():
|
||||||
res['positions'][0]['answers'][0]['options'] = [
|
res['positions'][0]['answers'][0]['options'] = [
|
||||||
question.options.first().pk,
|
question.options.first().pk,
|
||||||
question.options.last().pk,
|
question.options.last().pk,
|
||||||
@@ -2083,6 +2139,7 @@ def test_order_create_answer_validation(token_client, organizer, event, item, qu
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
o = Order.objects.get(code=resp.data['code'])
|
o = Order.objects.get(code=resp.data['code'])
|
||||||
pos = o.positions.first()
|
pos = o.positions.first()
|
||||||
answ = pos.answers.first()
|
answ = pos.answers.first()
|
||||||
@@ -2099,6 +2156,7 @@ def test_order_create_answer_validation(token_client, organizer, event, item, qu
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
o = Order.objects.get(code=resp.data['code'])
|
o = Order.objects.get(code=resp.data['code'])
|
||||||
pos = o.positions.first()
|
pos = o.positions.first()
|
||||||
answ = pos.answers.first()
|
answ = pos.answers.first()
|
||||||
@@ -2126,6 +2184,7 @@ def test_order_create_answer_validation(token_client, organizer, event, item, qu
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
o = Order.objects.get(code=resp.data['code'])
|
o = Order.objects.get(code=resp.data['code'])
|
||||||
pos = o.positions.first()
|
pos = o.positions.first()
|
||||||
answ = pos.answers.first()
|
answ = pos.answers.first()
|
||||||
@@ -2140,6 +2199,7 @@ def test_order_create_answer_validation(token_client, organizer, event, item, qu
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
o = Order.objects.get(code=resp.data['code'])
|
o = Order.objects.get(code=resp.data['code'])
|
||||||
pos = o.positions.first()
|
pos = o.positions.first()
|
||||||
answ = pos.answers.first()
|
answ = pos.answers.first()
|
||||||
@@ -2166,6 +2226,7 @@ def test_order_create_answer_validation(token_client, organizer, event, item, qu
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
o = Order.objects.get(code=resp.data['code'])
|
o = Order.objects.get(code=resp.data['code'])
|
||||||
pos = o.positions.first()
|
pos = o.positions.first()
|
||||||
answ = pos.answers.first()
|
answ = pos.answers.first()
|
||||||
@@ -2192,6 +2253,7 @@ def test_order_create_answer_validation(token_client, organizer, event, item, qu
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
o = Order.objects.get(code=resp.data['code'])
|
o = Order.objects.get(code=resp.data['code'])
|
||||||
pos = o.positions.first()
|
pos = o.positions.first()
|
||||||
answ = pos.answers.first()
|
answ = pos.answers.first()
|
||||||
@@ -2219,6 +2281,7 @@ def test_order_create_answer_validation(token_client, organizer, event, item, qu
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
o = Order.objects.get(code=resp.data['code'])
|
o = Order.objects.get(code=resp.data['code'])
|
||||||
pos = o.positions.first()
|
pos = o.positions.first()
|
||||||
answ = pos.answers.first()
|
answ = pos.answers.first()
|
||||||
@@ -2310,6 +2373,7 @@ def test_order_create_quota_consume_cart(token_client, organizer, event, item, q
|
|||||||
res['positions'][0]['item'] = item.pk
|
res['positions'][0]['item'] = item.pk
|
||||||
res['positions'][0]['answers'][0]['question'] = question.pk
|
res['positions'][0]['answers'][0]['question'] = question.pk
|
||||||
|
|
||||||
|
with scopes_disabled():
|
||||||
cr = CartPosition.objects.create(
|
cr = CartPosition.objects.create(
|
||||||
event=event, cart_id="uxLJBUMEcnxOLI2EuxLYN1hWJq9GKu4yWL9FEgs2m7M0vdFi@api", item=item,
|
event=event, cart_id="uxLJBUMEcnxOLI2EuxLYN1hWJq9GKu4yWL9FEgs2m7M0vdFi@api", item=item,
|
||||||
price=23,
|
price=23,
|
||||||
@@ -2337,6 +2401,7 @@ def test_order_create_quota_consume_cart(token_client, organizer, event, item, q
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
assert not CartPosition.objects.filter(pk=cr.pk).exists()
|
assert not CartPosition.objects.filter(pk=cr.pk).exists()
|
||||||
|
|
||||||
|
|
||||||
@@ -2353,10 +2418,12 @@ def test_order_create_free(token_client, organizer, event, item, quota, question
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
o = Order.objects.get(code=resp.data['code'])
|
o = Order.objects.get(code=resp.data['code'])
|
||||||
assert o.total == Decimal('0.00')
|
assert o.total == Decimal('0.00')
|
||||||
assert o.status == Order.STATUS_PAID
|
assert o.status == Order.STATUS_PAID
|
||||||
|
|
||||||
|
with scopes_disabled():
|
||||||
p = o.payments.first()
|
p = o.payments.first()
|
||||||
assert p.provider == "free"
|
assert p.provider == "free"
|
||||||
assert p.amount == o.total
|
assert p.amount == o.total
|
||||||
@@ -2437,6 +2504,7 @@ def test_order_create_paid_generate_invoice(token_client, organizer, event, item
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
o = Order.objects.get(code=resp.data['code'])
|
o = Order.objects.get(code=resp.data['code'])
|
||||||
assert o.invoices.count() == 1
|
assert o.invoices.count() == 1
|
||||||
|
|
||||||
@@ -2472,6 +2540,7 @@ def test_refund_create(token_client, organizer, event, order):
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
r = order.refunds.get(local_id=resp.data['local_id'])
|
r = order.refunds.get(local_id=resp.data['local_id'])
|
||||||
assert r.provider == "manual"
|
assert r.provider == "manual"
|
||||||
assert r.amount == Decimal("23.00")
|
assert r.amount == Decimal("23.00")
|
||||||
@@ -2493,6 +2562,7 @@ def test_refund_create_mark_refunded(token_client, organizer, event, order):
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
r = order.refunds.get(local_id=resp.data['local_id'])
|
r = order.refunds.get(local_id=resp.data['local_id'])
|
||||||
assert r.provider == "manual"
|
assert r.provider == "manual"
|
||||||
assert r.amount == Decimal("23.00")
|
assert r.amount == Decimal("23.00")
|
||||||
@@ -2515,6 +2585,7 @@ def test_refund_optional_fields(token_client, organizer, event, order):
|
|||||||
), format='json', data=res
|
), format='json', data=res
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
r = order.refunds.get(local_id=resp.data['local_id'])
|
r = order.refunds.get(local_id=resp.data['local_id'])
|
||||||
assert r.provider == "manual"
|
assert r.provider == "manual"
|
||||||
assert r.amount == Decimal("23.00")
|
assert r.amount == Decimal("23.00")
|
||||||
@@ -2562,6 +2633,7 @@ def test_order_delete_test_mode(token_client, organizer, event, order):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
assert resp.status_code == 204
|
assert resp.status_code == 204
|
||||||
|
with scopes_disabled():
|
||||||
assert not Order.objects.filter(code=order.code).exists()
|
assert not Order.objects.filter(code=order.code).exists()
|
||||||
|
|
||||||
|
|
||||||
@@ -2697,6 +2769,7 @@ def test_order_update_allowed_fields(token_client, organizer, event, order):
|
|||||||
assert str(order.invoice_address.country) == "FR"
|
assert str(order.invoice_address.country) == "FR"
|
||||||
assert not order.invoice_address.vat_id_validated
|
assert not order.invoice_address.vat_id_validated
|
||||||
assert order.invoice_address.city == "Paris"
|
assert order.invoice_address.city == "Paris"
|
||||||
|
with scopes_disabled():
|
||||||
assert order.all_logentries().get(action_type='pretix.event.order.comment')
|
assert order.all_logentries().get(action_type='pretix.event.order.comment')
|
||||||
assert order.all_logentries().get(action_type='pretix.event.order.checkin_attention')
|
assert order.all_logentries().get(action_type='pretix.event.order.checkin_attention')
|
||||||
assert order.all_logentries().get(action_type='pretix.event.order.contact.changed')
|
assert order.all_logentries().get(action_type='pretix.event.order.contact.changed')
|
||||||
@@ -2847,6 +2920,7 @@ def test_order_create_invoice(token_client, organizer, event, order):
|
|||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_order_regenerate_secrets(token_client, organizer, event, order):
|
def test_order_regenerate_secrets(token_client, organizer, event, order):
|
||||||
s = order.secret
|
s = order.secret
|
||||||
|
with scopes_disabled():
|
||||||
ps = order.positions.first().secret
|
ps = order.positions.first().secret
|
||||||
resp = token_client.post(
|
resp = token_client.post(
|
||||||
'/api/v1/organizers/{}/events/{}/orders/{}/regenerate_secrets/'.format(
|
'/api/v1/organizers/{}/events/{}/orders/{}/regenerate_secrets/'.format(
|
||||||
@@ -2856,6 +2930,7 @@ def test_order_regenerate_secrets(token_client, organizer, event, order):
|
|||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
order.refresh_from_db()
|
order.refresh_from_db()
|
||||||
assert s != order.secret
|
assert s != order.secret
|
||||||
|
with scopes_disabled():
|
||||||
assert ps != order.positions.first().secret
|
assert ps != order.positions.first().secret
|
||||||
|
|
||||||
|
|
||||||
@@ -2882,6 +2957,7 @@ def test_order_resend_link(token_client, organizer, event, order):
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_orderposition_price_calculation(token_client, organizer, event, order, item):
|
def test_orderposition_price_calculation(token_client, organizer, event, order, item):
|
||||||
|
with scopes_disabled():
|
||||||
op = order.positions.first()
|
op = order.positions.first()
|
||||||
resp = token_client.post(
|
resp = token_client.post(
|
||||||
'/api/v1/organizers/{}/events/{}/orderpositions/{}/price_calc/'.format(organizer.slug, event.slug, op.pk),
|
'/api/v1/organizers/{}/events/{}/orderpositions/{}/price_calc/'.format(organizer.slug, event.slug, op.pk),
|
||||||
@@ -2901,6 +2977,7 @@ def test_orderposition_price_calculation(token_client, organizer, event, order,
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_orderposition_price_calculation_item_with_tax(token_client, organizer, event, order, item, taxrule):
|
def test_orderposition_price_calculation_item_with_tax(token_client, organizer, event, order, item, taxrule):
|
||||||
|
with scopes_disabled():
|
||||||
item2 = event.items.create(name="Budget Ticket", default_price=23, tax_rule=taxrule)
|
item2 = event.items.create(name="Budget Ticket", default_price=23, tax_rule=taxrule)
|
||||||
op = order.positions.first()
|
op = order.positions.first()
|
||||||
resp = token_client.post(
|
resp = token_client.post(
|
||||||
@@ -2922,6 +2999,7 @@ def test_orderposition_price_calculation_item_with_tax(token_client, organizer,
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_orderposition_price_calculation_item_with_variation(token_client, organizer, event, order):
|
def test_orderposition_price_calculation_item_with_variation(token_client, organizer, event, order):
|
||||||
|
with scopes_disabled():
|
||||||
item2 = event.items.create(name="Budget Ticket", default_price=23)
|
item2 = event.items.create(name="Budget Ticket", default_price=23)
|
||||||
var = item2.variations.create(default_price=12, value="XS")
|
var = item2.variations.create(default_price=12, value="XS")
|
||||||
op = order.positions.first()
|
op = order.positions.first()
|
||||||
@@ -2945,6 +3023,7 @@ def test_orderposition_price_calculation_item_with_variation(token_client, organ
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_orderposition_price_calculation_subevent(token_client, organizer, event, order, subevent):
|
def test_orderposition_price_calculation_subevent(token_client, organizer, event, order, subevent):
|
||||||
|
with scopes_disabled():
|
||||||
item2 = event.items.create(name="Budget Ticket", default_price=23)
|
item2 = event.items.create(name="Budget Ticket", default_price=23)
|
||||||
op = order.positions.first()
|
op = order.positions.first()
|
||||||
op.subevent = subevent
|
op.subevent = subevent
|
||||||
@@ -2969,6 +3048,7 @@ def test_orderposition_price_calculation_subevent(token_client, organizer, event
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_orderposition_price_calculation_subevent_with_override(token_client, organizer, event, order, subevent):
|
def test_orderposition_price_calculation_subevent_with_override(token_client, organizer, event, order, subevent):
|
||||||
|
with scopes_disabled():
|
||||||
item2 = event.items.create(name="Budget Ticket", default_price=23)
|
item2 = event.items.create(name="Budget Ticket", default_price=23)
|
||||||
se2 = event.subevents.create(name="Foobar", date_from=datetime.datetime(2017, 12, 27, 10, 0, 0, tzinfo=UTC))
|
se2 = event.subevents.create(name="Foobar", date_from=datetime.datetime(2017, 12, 27, 10, 0, 0, tzinfo=UTC))
|
||||||
se2.subeventitem_set.create(item=item2, price=12)
|
se2.subeventitem_set.create(item=item2, price=12)
|
||||||
@@ -2995,6 +3075,7 @@ def test_orderposition_price_calculation_subevent_with_override(token_client, or
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_orderposition_price_calculation_voucher_matching(token_client, organizer, event, order, subevent, item):
|
def test_orderposition_price_calculation_voucher_matching(token_client, organizer, event, order, subevent, item):
|
||||||
|
with scopes_disabled():
|
||||||
item2 = event.items.create(name="Budget Ticket", default_price=23)
|
item2 = event.items.create(name="Budget Ticket", default_price=23)
|
||||||
q = event.quotas.create(name="Quota")
|
q = event.quotas.create(name="Quota")
|
||||||
q.items.add(item)
|
q.items.add(item)
|
||||||
@@ -3022,6 +3103,7 @@ def test_orderposition_price_calculation_voucher_matching(token_client, organize
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_orderposition_price_calculation_voucher_not_matching(token_client, organizer, event, order, subevent, item):
|
def test_orderposition_price_calculation_voucher_not_matching(token_client, organizer, event, order, subevent, item):
|
||||||
|
with scopes_disabled():
|
||||||
item2 = event.items.create(name="Budget Ticket", default_price=23)
|
item2 = event.items.create(name="Budget Ticket", default_price=23)
|
||||||
q = event.quotas.create(name="Quota")
|
q = event.quotas.create(name="Quota")
|
||||||
q.items.add(item)
|
q.items.add(item)
|
||||||
@@ -3050,6 +3132,7 @@ def test_orderposition_price_calculation_voucher_not_matching(token_client, orga
|
|||||||
def test_orderposition_price_calculation_net_price(token_client, organizer, event, order, subevent, item, taxrule):
|
def test_orderposition_price_calculation_net_price(token_client, organizer, event, order, subevent, item, taxrule):
|
||||||
taxrule.price_includes_tax = False
|
taxrule.price_includes_tax = False
|
||||||
taxrule.save()
|
taxrule.save()
|
||||||
|
with scopes_disabled():
|
||||||
item2 = event.items.create(name="Budget Ticket", default_price=10, tax_rule=taxrule)
|
item2 = event.items.create(name="Budget Ticket", default_price=10, tax_rule=taxrule)
|
||||||
op = order.positions.first()
|
op = order.positions.first()
|
||||||
resp = token_client.post(
|
resp = token_client.post(
|
||||||
@@ -3080,6 +3163,7 @@ def test_orderposition_price_calculation_reverse_charge(token_client, organizer,
|
|||||||
order.invoice_address.vat_id_validated = True
|
order.invoice_address.vat_id_validated = True
|
||||||
order.invoice_address.country = Country('AT')
|
order.invoice_address.country = Country('AT')
|
||||||
order.invoice_address.save()
|
order.invoice_address.save()
|
||||||
|
with scopes_disabled():
|
||||||
item2 = event.items.create(name="Budget Ticket", default_price=10, tax_rule=taxrule)
|
item2 = event.items.create(name="Budget Ticket", default_price=10, tax_rule=taxrule)
|
||||||
op = order.positions.first()
|
op = order.positions.first()
|
||||||
resp = token_client.post(
|
resp = token_client.post(
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ from unittest import mock
|
|||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from django_countries.fields import Country
|
from django_countries.fields import Country
|
||||||
|
from django_scopes import scopes_disabled
|
||||||
from pytz import UTC
|
from pytz import UTC
|
||||||
|
|
||||||
from pretix.base.models import InvoiceAddress, Order, OrderPosition
|
from pretix.base.models import InvoiceAddress, Order, OrderPosition
|
||||||
@@ -159,6 +160,7 @@ def test_subevent_create(token_client, organizer, event, subevent, meta_prop, it
|
|||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
assert not subevent.active
|
assert not subevent.active
|
||||||
|
with scopes_disabled():
|
||||||
assert subevent.meta_values.filter(
|
assert subevent.meta_values.filter(
|
||||||
property__name=meta_prop.name, value="Workshop"
|
property__name=meta_prop.name, value="Workshop"
|
||||||
).exists()
|
).exists()
|
||||||
@@ -217,6 +219,7 @@ def test_subevent_create(token_client, organizer, event, subevent, meta_prop, it
|
|||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
assert item.default_price == Decimal('23.00')
|
assert item.default_price == Decimal('23.00')
|
||||||
|
with scopes_disabled():
|
||||||
assert event.subevents.get(id=resp.data['id']).item_price_overrides[item.pk] == Decimal('23.42')
|
assert event.subevents.get(id=resp.data['id']).item_price_overrides[item.pk] == Decimal('23.42')
|
||||||
|
|
||||||
resp = token_client.post(
|
resp = token_client.post(
|
||||||
@@ -261,6 +264,7 @@ def test_subevent_update(token_client, organizer, event, subevent, item, item2,
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
|
with scopes_disabled():
|
||||||
subevent = event.subevents.get(id=subevent.id)
|
subevent = event.subevents.get(id=subevent.id)
|
||||||
assert subevent.date_from == datetime(2018, 12, 27, 10, 0, tzinfo=UTC)
|
assert subevent.date_from == datetime(2018, 12, 27, 10, 0, tzinfo=UTC)
|
||||||
assert subevent.date_to == datetime(2018, 12, 28, 10, 0, tzinfo=UTC)
|
assert subevent.date_to == datetime(2018, 12, 28, 10, 0, tzinfo=UTC)
|
||||||
@@ -297,6 +301,7 @@ def test_subevent_update(token_client, organizer, event, subevent, item, item2,
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
|
with scopes_disabled():
|
||||||
assert organizer.events.get(slug=event.slug).subevents.get(id=resp.data['id']).meta_values.filter(
|
assert organizer.events.get(slug=event.slug).subevents.get(id=resp.data['id']).meta_values.filter(
|
||||||
property__name=meta_prop.name, value="Conference"
|
property__name=meta_prop.name, value="Conference"
|
||||||
).exists()
|
).exists()
|
||||||
@@ -310,6 +315,7 @@ def test_subevent_update(token_client, organizer, event, subevent, item, item2,
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
|
with scopes_disabled():
|
||||||
assert not subevent.meta_values.filter(
|
assert not subevent.meta_values.filter(
|
||||||
property__name=meta_prop.name
|
property__name=meta_prop.name
|
||||||
).exists()
|
).exists()
|
||||||
@@ -339,6 +345,7 @@ def test_subevent_update(token_client, organizer, event, subevent, item, item2,
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
|
with scopes_disabled():
|
||||||
assert subevent.items.get(id=item.pk).default_price == Decimal('23.00')
|
assert subevent.items.get(id=item.pk).default_price == Decimal('23.00')
|
||||||
assert subevent.item_price_overrides[item.pk] == Decimal('99.99')
|
assert subevent.item_price_overrides[item.pk] == Decimal('99.99')
|
||||||
|
|
||||||
@@ -355,6 +362,7 @@ def test_subevent_update(token_client, organizer, event, subevent, item, item2,
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
|
with scopes_disabled():
|
||||||
assert event.subevents.get(id=subevent.id).item_price_overrides[item.pk] == Decimal('88.88')
|
assert event.subevents.get(id=subevent.id).item_price_overrides[item.pk] == Decimal('88.88')
|
||||||
|
|
||||||
resp = token_client.patch(
|
resp = token_client.patch(
|
||||||
@@ -370,6 +378,7 @@ def test_subevent_update(token_client, organizer, event, subevent, item, item2,
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
|
with scopes_disabled():
|
||||||
assert item.pk not in event.subevents.get(id=subevent.id).item_price_overrides
|
assert item.pk not in event.subevents.get(id=subevent.id).item_price_overrides
|
||||||
|
|
||||||
resp = token_client.patch(
|
resp = token_client.patch(
|
||||||
@@ -385,6 +394,7 @@ def test_subevent_update(token_client, organizer, event, subevent, item, item2,
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
|
with scopes_disabled():
|
||||||
assert event.subevents.get(id=subevent.id).item_price_overrides[item.pk] == Decimal('12.34')
|
assert event.subevents.get(id=subevent.id).item_price_overrides[item.pk] == Decimal('12.34')
|
||||||
|
|
||||||
resp = token_client.patch(
|
resp = token_client.patch(
|
||||||
@@ -395,6 +405,7 @@ def test_subevent_update(token_client, organizer, event, subevent, item, item2,
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
|
with scopes_disabled():
|
||||||
assert item.pk not in event.subevents.get(id=subevent.id).item_price_overrides
|
assert item.pk not in event.subevents.get(id=subevent.id).item_price_overrides
|
||||||
|
|
||||||
resp = token_client.patch(
|
resp = token_client.patch(
|
||||||
@@ -440,6 +451,7 @@ def test_subevent_update(token_client, organizer, event, subevent, item, item2,
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
|
with scopes_disabled():
|
||||||
assert subevent.variations.get(id=variations[0].pk).default_price == Decimal('12.00')
|
assert subevent.variations.get(id=variations[0].pk).default_price == Decimal('12.00')
|
||||||
assert subevent.var_price_overrides[variations[0].pk] == Decimal('99.99')
|
assert subevent.var_price_overrides[variations[0].pk] == Decimal('99.99')
|
||||||
|
|
||||||
@@ -456,6 +468,7 @@ def test_subevent_update(token_client, organizer, event, subevent, item, item2,
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
|
with scopes_disabled():
|
||||||
assert event.subevents.get(id=subevent.id).var_price_overrides[variations[0].pk] == Decimal('88.88')
|
assert event.subevents.get(id=subevent.id).var_price_overrides[variations[0].pk] == Decimal('88.88')
|
||||||
|
|
||||||
resp = token_client.patch(
|
resp = token_client.patch(
|
||||||
@@ -471,6 +484,7 @@ def test_subevent_update(token_client, organizer, event, subevent, item, item2,
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
|
with scopes_disabled():
|
||||||
assert variations[0].pk not in event.subevents.get(id=subevent.id).var_price_overrides
|
assert variations[0].pk not in event.subevents.get(id=subevent.id).var_price_overrides
|
||||||
|
|
||||||
resp = token_client.patch(
|
resp = token_client.patch(
|
||||||
@@ -486,6 +500,7 @@ def test_subevent_update(token_client, organizer, event, subevent, item, item2,
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
|
with scopes_disabled():
|
||||||
assert event.subevents.get(id=subevent.id).var_price_overrides[variations[0].pk] == Decimal('12.34')
|
assert event.subevents.get(id=subevent.id).var_price_overrides[variations[0].pk] == Decimal('12.34')
|
||||||
|
|
||||||
resp = token_client.patch(
|
resp = token_client.patch(
|
||||||
@@ -496,6 +511,7 @@ def test_subevent_update(token_client, organizer, event, subevent, item, item2,
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
|
with scopes_disabled():
|
||||||
assert variations[0].pk not in event.subevents.get(id=subevent.id).var_price_overrides
|
assert variations[0].pk not in event.subevents.get(id=subevent.id).var_price_overrides
|
||||||
|
|
||||||
resp = token_client.patch(
|
resp = token_client.patch(
|
||||||
@@ -544,6 +560,7 @@ def test_subevent_delete(token_client, organizer, event, subevent):
|
|||||||
resp = token_client.delete('/api/v1/organizers/{}/events/{}/subevents/{}/'.format(organizer.slug, event.slug,
|
resp = token_client.delete('/api/v1/organizers/{}/events/{}/subevents/{}/'.format(organizer.slug, event.slug,
|
||||||
subevent.pk))
|
subevent.pk))
|
||||||
assert resp.status_code == 204
|
assert resp.status_code == 204
|
||||||
|
with scopes_disabled():
|
||||||
assert not event.subevents.filter(pk=subevent.id).exists()
|
assert not event.subevents.filter(pk=subevent.id).exists()
|
||||||
|
|
||||||
|
|
||||||
@@ -554,4 +571,5 @@ def test_subevent_with_order_position_not_delete(token_client, organizer, event,
|
|||||||
assert resp.status_code == 403
|
assert resp.status_code == 403
|
||||||
assert resp.content.decode() == '{"detail":"The sub-event can not be deleted as it has already been used in ' \
|
assert resp.content.decode() == '{"detail":"The sub-event can not be deleted as it has already been used in ' \
|
||||||
'orders. Please set \'active\' to false instead to hide it from users."}'
|
'orders. Please set \'active\' to false instead to hide it from users."}'
|
||||||
|
with scopes_disabled():
|
||||||
assert event.subevents.filter(pk=subevent.id).exists()
|
assert event.subevents.filter(pk=subevent.id).exists()
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ from decimal import Decimal
|
|||||||
import pytest
|
import pytest
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from django.utils.timezone import now
|
from django.utils.timezone import now
|
||||||
|
from django_scopes import scopes_disabled
|
||||||
from pytz import UTC
|
from pytz import UTC
|
||||||
|
|
||||||
from pretix.base.models import Event, Voucher
|
from pretix.base.models import Event, Voucher
|
||||||
@@ -58,6 +59,7 @@ def test_voucher_list(token_client, organizer, event, voucher, item, quota, sube
|
|||||||
i2 = copy.copy(item)
|
i2 = copy.copy(item)
|
||||||
i2.pk = None
|
i2.pk = None
|
||||||
i2.save()
|
i2.save()
|
||||||
|
with scopes_disabled():
|
||||||
var2 = i2.variations.create(value="foo")
|
var2 = i2.variations.create(value="foo")
|
||||||
|
|
||||||
resp = token_client.get('/api/v1/organizers/{}/events/{}/vouchers/'.format(organizer.slug, event.slug))
|
resp = token_client.get('/api/v1/organizers/{}/events/{}/vouchers/'.format(organizer.slug, event.slug))
|
||||||
@@ -136,6 +138,7 @@ def test_voucher_list(token_client, organizer, event, voucher, item, quota, sube
|
|||||||
)
|
)
|
||||||
assert [] == resp.data['results']
|
assert [] == resp.data['results']
|
||||||
|
|
||||||
|
with scopes_disabled():
|
||||||
var = item.variations.create(value='VIP')
|
var = item.variations.create(value='VIP')
|
||||||
voucher.variation = var
|
voucher.variation = var
|
||||||
voucher.save()
|
voucher.save()
|
||||||
@@ -208,6 +211,7 @@ def test_voucher_list(token_client, organizer, event, voucher, item, quota, sube
|
|||||||
resp = token_client.get(
|
resp = token_client.get(
|
||||||
'/api/v1/organizers/{}/events/{}/vouchers/?subevent={}'.format(organizer.slug, event.slug, subevent.pk))
|
'/api/v1/organizers/{}/events/{}/vouchers/?subevent={}'.format(organizer.slug, event.slug, subevent.pk))
|
||||||
assert [res] == resp.data['results']
|
assert [res] == resp.data['results']
|
||||||
|
with scopes_disabled():
|
||||||
se2 = event.subevents.create(name="Foobar", date_from=datetime.datetime(2017, 12, 27, 10, 0, 0, tzinfo=UTC))
|
se2 = event.subevents.create(name="Foobar", date_from=datetime.datetime(2017, 12, 27, 10, 0, 0, tzinfo=UTC))
|
||||||
resp = token_client.get(
|
resp = token_client.get(
|
||||||
'/api/v1/organizers/{}/events/{}/vouchers/?subevent={}'.format(organizer.slug, event.slug,
|
'/api/v1/organizers/{}/events/{}/vouchers/?subevent={}'.format(organizer.slug, event.slug,
|
||||||
@@ -237,6 +241,7 @@ def create_voucher(token_client, organizer, event, data, expected_failure=False)
|
|||||||
assert resp.status_code == 400
|
assert resp.status_code == 400
|
||||||
else:
|
else:
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
return Voucher.objects.get(pk=resp.data['id'])
|
return Voucher.objects.get(pk=resp.data['id'])
|
||||||
|
|
||||||
|
|
||||||
@@ -324,6 +329,7 @@ def test_create_non_blocking_item_voucher(token_client, organizer, event, item):
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_create_non_blocking_variation_voucher(token_client, organizer, event, item):
|
def test_create_non_blocking_variation_voucher(token_client, organizer, event, item):
|
||||||
|
with scopes_disabled():
|
||||||
variation = item.variations.create(value="XL")
|
variation = item.variations.create(value="XL")
|
||||||
v = create_voucher(
|
v = create_voucher(
|
||||||
token_client, organizer, event,
|
token_client, organizer, event,
|
||||||
@@ -394,6 +400,7 @@ def test_create_blocking_item_voucher_quota_full_invalid(token_client, organizer
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_create_blocking_variation_voucher_quota_free(token_client, organizer, event, item, quota):
|
def test_create_blocking_variation_voucher_quota_free(token_client, organizer, event, item, quota):
|
||||||
|
with scopes_disabled():
|
||||||
variation = item.variations.create(value="XL")
|
variation = item.variations.create(value="XL")
|
||||||
quota.variations.add(variation)
|
quota.variations.add(variation)
|
||||||
v = create_voucher(
|
v = create_voucher(
|
||||||
@@ -421,6 +428,7 @@ def test_create_short_code(token_client, organizer, event, item):
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_create_blocking_variation_voucher_quota_full(token_client, organizer, event, item, quota):
|
def test_create_blocking_variation_voucher_quota_full(token_client, organizer, event, item, quota):
|
||||||
|
with scopes_disabled():
|
||||||
variation = item.variations.create(value="XL")
|
variation = item.variations.create(value="XL")
|
||||||
quota.variations.add(variation)
|
quota.variations.add(variation)
|
||||||
quota.size = 0
|
quota.size = 0
|
||||||
@@ -463,6 +471,7 @@ def test_create_blocking_quota_voucher_quota_full(token_client, organizer, event
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_create_duplicate_code(token_client, organizer, event, quota):
|
def test_create_duplicate_code(token_client, organizer, event, quota):
|
||||||
|
with scopes_disabled():
|
||||||
v = event.vouchers.create(quota=quota)
|
v = event.vouchers.create(quota=quota)
|
||||||
create_voucher(
|
create_voucher(
|
||||||
token_client, organizer, event,
|
token_client, organizer, event,
|
||||||
@@ -501,6 +510,7 @@ def test_subevent_required_for_blocking(token_client, organizer, event, item, su
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_subevent_blocking_quota_free(token_client, organizer, event, item, quota, subevent):
|
def test_subevent_blocking_quota_free(token_client, organizer, event, item, quota, subevent):
|
||||||
|
with scopes_disabled():
|
||||||
se2 = event.subevents.create(name="Bar", date_from=now())
|
se2 = event.subevents.create(name="Bar", date_from=now())
|
||||||
quota.subevent = subevent
|
quota.subevent = subevent
|
||||||
quota.save()
|
quota.save()
|
||||||
@@ -521,6 +531,7 @@ def test_subevent_blocking_quota_free(token_client, organizer, event, item, quot
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_subevent_blocking_quota_full(token_client, organizer, event, item, quota, subevent):
|
def test_subevent_blocking_quota_full(token_client, organizer, event, item, quota, subevent):
|
||||||
|
with scopes_disabled():
|
||||||
se2 = event.subevents.create(name="Bar", date_from=now())
|
se2 = event.subevents.create(name="Bar", date_from=now())
|
||||||
quota.subevent = subevent
|
quota.subevent = subevent
|
||||||
quota.size = 0
|
quota.size = 0
|
||||||
@@ -553,6 +564,7 @@ def change_voucher(token_client, organizer, event, voucher, data, expected_failu
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_change_to_item_of_other_event(token_client, organizer, event, item):
|
def test_change_to_item_of_other_event(token_client, organizer, event, item):
|
||||||
|
with scopes_disabled():
|
||||||
e2 = Event.objects.create(
|
e2 = Event.objects.create(
|
||||||
organizer=organizer,
|
organizer=organizer,
|
||||||
name='Dummy2',
|
name='Dummy2',
|
||||||
@@ -575,6 +587,7 @@ def test_change_to_item_of_other_event(token_client, organizer, event, item):
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_change_non_blocking_voucher(token_client, organizer, event, item, quota):
|
def test_change_non_blocking_voucher(token_client, organizer, event, item, quota):
|
||||||
|
with scopes_disabled():
|
||||||
v = event.vouchers.create(item=item)
|
v = event.vouchers.create(item=item)
|
||||||
change_voucher(
|
change_voucher(
|
||||||
token_client, organizer, event, v,
|
token_client, organizer, event, v,
|
||||||
@@ -589,6 +602,7 @@ def test_change_non_blocking_voucher(token_client, organizer, event, item, quota
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_change_voucher_reduce_max_usages(token_client, organizer, event, item, quota):
|
def test_change_voucher_reduce_max_usages(token_client, organizer, event, item, quota):
|
||||||
|
with scopes_disabled():
|
||||||
v = event.vouchers.create(item=item, max_usages=5, redeemed=3)
|
v = event.vouchers.create(item=item, max_usages=5, redeemed=3)
|
||||||
change_voucher(
|
change_voucher(
|
||||||
token_client, organizer, event, v,
|
token_client, organizer, event, v,
|
||||||
@@ -604,6 +618,7 @@ def test_change_voucher_reduce_max_usages(token_client, organizer, event, item,
|
|||||||
def test_change_blocking_voucher_unchanged_quota_full(token_client, organizer, event, item, quota):
|
def test_change_blocking_voucher_unchanged_quota_full(token_client, organizer, event, item, quota):
|
||||||
quota.size = 0
|
quota.size = 0
|
||||||
quota.save()
|
quota.save()
|
||||||
|
with scopes_disabled():
|
||||||
v = event.vouchers.create(item=item, block_quota=True)
|
v = event.vouchers.create(item=item, block_quota=True)
|
||||||
change_voucher(
|
change_voucher(
|
||||||
token_client, organizer, event, v,
|
token_client, organizer, event, v,
|
||||||
@@ -620,6 +635,7 @@ def test_change_blocking_voucher_unchanged_quota_full(token_client, organizer, e
|
|||||||
def test_change_voucher_to_blocking_quota_full(token_client, organizer, event, item, quota):
|
def test_change_voucher_to_blocking_quota_full(token_client, organizer, event, item, quota):
|
||||||
quota.size = 0
|
quota.size = 0
|
||||||
quota.save()
|
quota.save()
|
||||||
|
with scopes_disabled():
|
||||||
v = event.vouchers.create(item=item)
|
v = event.vouchers.create(item=item)
|
||||||
change_voucher(
|
change_voucher(
|
||||||
token_client, organizer, event, v,
|
token_client, organizer, event, v,
|
||||||
@@ -632,6 +648,7 @@ def test_change_voucher_to_blocking_quota_full(token_client, organizer, event, i
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_change_voucher_to_blocking_quota_free(token_client, organizer, event, item, quota):
|
def test_change_voucher_to_blocking_quota_free(token_client, organizer, event, item, quota):
|
||||||
|
with scopes_disabled():
|
||||||
v = event.vouchers.create(item=item)
|
v = event.vouchers.create(item=item)
|
||||||
change_voucher(
|
change_voucher(
|
||||||
token_client, organizer, event, v,
|
token_client, organizer, event, v,
|
||||||
@@ -646,6 +663,7 @@ def test_change_voucher_to_blocking_quota_free(token_client, organizer, event, i
|
|||||||
def test_change_voucher_validity_to_valid_quota_full(token_client, organizer, event, item, quota):
|
def test_change_voucher_validity_to_valid_quota_full(token_client, organizer, event, item, quota):
|
||||||
quota.size = 0
|
quota.size = 0
|
||||||
quota.save()
|
quota.save()
|
||||||
|
with scopes_disabled():
|
||||||
v = event.vouchers.create(item=item, valid_until=now() - datetime.timedelta(days=3),
|
v = event.vouchers.create(item=item, valid_until=now() - datetime.timedelta(days=3),
|
||||||
block_quota=True)
|
block_quota=True)
|
||||||
change_voucher(
|
change_voucher(
|
||||||
@@ -660,6 +678,7 @@ def test_change_voucher_validity_to_valid_quota_full(token_client, organizer, ev
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_change_voucher_validity_to_valid_quota_free(token_client, organizer, event, item, quota):
|
def test_change_voucher_validity_to_valid_quota_free(token_client, organizer, event, item, quota):
|
||||||
|
with scopes_disabled():
|
||||||
v = event.vouchers.create(item=item, valid_until=now() - datetime.timedelta(days=3),
|
v = event.vouchers.create(item=item, valid_until=now() - datetime.timedelta(days=3),
|
||||||
block_quota=True)
|
block_quota=True)
|
||||||
change_voucher(
|
change_voucher(
|
||||||
@@ -673,6 +692,7 @@ def test_change_voucher_validity_to_valid_quota_free(token_client, organizer, ev
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_change_item_of_blocking_voucher_quota_free(token_client, organizer, event, item, quota):
|
def test_change_item_of_blocking_voucher_quota_free(token_client, organizer, event, item, quota):
|
||||||
|
with scopes_disabled():
|
||||||
ticket2 = event.items.create(name='Late-bird ticket', default_price=23)
|
ticket2 = event.items.create(name='Late-bird ticket', default_price=23)
|
||||||
quota.items.add(ticket2)
|
quota.items.add(ticket2)
|
||||||
v = event.vouchers.create(item=item, block_quota=True)
|
v = event.vouchers.create(item=item, block_quota=True)
|
||||||
@@ -687,6 +707,7 @@ def test_change_item_of_blocking_voucher_quota_free(token_client, organizer, eve
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_change_item_of_blocking_voucher_quota_full(token_client, organizer, event, item, quota):
|
def test_change_item_of_blocking_voucher_quota_full(token_client, organizer, event, item, quota):
|
||||||
|
with scopes_disabled():
|
||||||
ticket2 = event.items.create(name='Late-bird ticket', default_price=23)
|
ticket2 = event.items.create(name='Late-bird ticket', default_price=23)
|
||||||
quota2 = event.quotas.create(name='Late', size=0)
|
quota2 = event.quotas.create(name='Late', size=0)
|
||||||
quota2.items.add(ticket2)
|
quota2.items.add(ticket2)
|
||||||
@@ -702,6 +723,7 @@ def test_change_item_of_blocking_voucher_quota_full(token_client, organizer, eve
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_change_variation_of_blocking_voucher_quota_free(token_client, organizer, event):
|
def test_change_variation_of_blocking_voucher_quota_free(token_client, organizer, event):
|
||||||
|
with scopes_disabled():
|
||||||
shirt = event.items.create(name='Shirt', default_price=23)
|
shirt = event.items.create(name='Shirt', default_price=23)
|
||||||
vs = shirt.variations.create(value='S')
|
vs = shirt.variations.create(value='S')
|
||||||
vm = shirt.variations.create(value='M')
|
vm = shirt.variations.create(value='M')
|
||||||
@@ -721,6 +743,7 @@ def test_change_variation_of_blocking_voucher_quota_free(token_client, organizer
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_change_variation_of_blocking_voucher_without_quota_change(token_client, organizer, event):
|
def test_change_variation_of_blocking_voucher_without_quota_change(token_client, organizer, event):
|
||||||
|
with scopes_disabled():
|
||||||
shirt = event.items.create(name='Shirt', default_price=23)
|
shirt = event.items.create(name='Shirt', default_price=23)
|
||||||
vs = shirt.variations.create(value='S')
|
vs = shirt.variations.create(value='S')
|
||||||
vm = shirt.variations.create(value='M')
|
vm = shirt.variations.create(value='M')
|
||||||
@@ -739,6 +762,7 @@ def test_change_variation_of_blocking_voucher_without_quota_change(token_client,
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_change_variation_of_blocking_voucher_quota_full(token_client, organizer, event):
|
def test_change_variation_of_blocking_voucher_quota_full(token_client, organizer, event):
|
||||||
|
with scopes_disabled():
|
||||||
shirt = event.items.create(name='Shirt', default_price=23)
|
shirt = event.items.create(name='Shirt', default_price=23)
|
||||||
vs = shirt.variations.create(value='S')
|
vs = shirt.variations.create(value='S')
|
||||||
vm = shirt.variations.create(value='M')
|
vm = shirt.variations.create(value='M')
|
||||||
@@ -758,6 +782,7 @@ def test_change_variation_of_blocking_voucher_quota_full(token_client, organizer
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_change_quota_of_blocking_voucher_quota_free(token_client, organizer, event):
|
def test_change_quota_of_blocking_voucher_quota_free(token_client, organizer, event):
|
||||||
|
with scopes_disabled():
|
||||||
qs = event.quotas.create(name='S', size=2)
|
qs = event.quotas.create(name='S', size=2)
|
||||||
qm = event.quotas.create(name='M', size=2)
|
qm = event.quotas.create(name='M', size=2)
|
||||||
v = event.vouchers.create(quota=qs, block_quota=True)
|
v = event.vouchers.create(quota=qs, block_quota=True)
|
||||||
@@ -772,6 +797,7 @@ def test_change_quota_of_blocking_voucher_quota_free(token_client, organizer, ev
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_change_quota_of_blocking_voucher_quota_full(token_client, organizer, event):
|
def test_change_quota_of_blocking_voucher_quota_full(token_client, organizer, event):
|
||||||
|
with scopes_disabled():
|
||||||
qs = event.quotas.create(name='S', size=2)
|
qs = event.quotas.create(name='S', size=2)
|
||||||
qm = event.quotas.create(name='M', size=0)
|
qm = event.quotas.create(name='M', size=0)
|
||||||
v = event.vouchers.create(quota=qs, block_quota=True)
|
v = event.vouchers.create(quota=qs, block_quota=True)
|
||||||
@@ -786,6 +812,7 @@ def test_change_quota_of_blocking_voucher_quota_full(token_client, organizer, ev
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_change_item_of_blocking_voucher_without_quota_change(token_client, organizer, event, item, quota):
|
def test_change_item_of_blocking_voucher_without_quota_change(token_client, organizer, event, item, quota):
|
||||||
|
with scopes_disabled():
|
||||||
quota.size = 0
|
quota.size = 0
|
||||||
quota.save()
|
quota.save()
|
||||||
ticket2 = event.items.create(name='Standard Ticket', default_price=23)
|
ticket2 = event.items.create(name='Standard Ticket', default_price=23)
|
||||||
@@ -802,6 +829,7 @@ def test_change_item_of_blocking_voucher_without_quota_change(token_client, orga
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_change_code_to_duplicate(token_client, organizer, event, item, quota):
|
def test_change_code_to_duplicate(token_client, organizer, event, item, quota):
|
||||||
|
with scopes_disabled():
|
||||||
v1 = event.vouchers.create(quota=quota)
|
v1 = event.vouchers.create(quota=quota)
|
||||||
v2 = event.vouchers.create(quota=quota)
|
v2 = event.vouchers.create(quota=quota)
|
||||||
change_voucher(
|
change_voucher(
|
||||||
@@ -815,6 +843,7 @@ def test_change_code_to_duplicate(token_client, organizer, event, item, quota):
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_change_subevent_blocking_quota_free(token_client, organizer, event, item, quota, subevent):
|
def test_change_subevent_blocking_quota_free(token_client, organizer, event, item, quota, subevent):
|
||||||
|
with scopes_disabled():
|
||||||
quota.subevent = subevent
|
quota.subevent = subevent
|
||||||
quota.save()
|
quota.save()
|
||||||
se2 = event.subevents.create(name="Bar", date_from=now())
|
se2 = event.subevents.create(name="Bar", date_from=now())
|
||||||
@@ -833,6 +862,7 @@ def test_change_subevent_blocking_quota_free(token_client, organizer, event, ite
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_change_subevent_blocking_quota_full(token_client, organizer, event, item, quota, subevent):
|
def test_change_subevent_blocking_quota_full(token_client, organizer, event, item, quota, subevent):
|
||||||
|
with scopes_disabled():
|
||||||
quota.subevent = subevent
|
quota.subevent = subevent
|
||||||
quota.save()
|
quota.save()
|
||||||
se2 = event.subevents.create(name="Bar", date_from=now())
|
se2 = event.subevents.create(name="Bar", date_from=now())
|
||||||
@@ -851,26 +881,31 @@ def test_change_subevent_blocking_quota_full(token_client, organizer, event, ite
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_delete_voucher(token_client, organizer, event, quota):
|
def test_delete_voucher(token_client, organizer, event, quota):
|
||||||
|
with scopes_disabled():
|
||||||
v = event.vouchers.create(quota=quota)
|
v = event.vouchers.create(quota=quota)
|
||||||
resp = token_client.delete(
|
resp = token_client.delete(
|
||||||
'/api/v1/organizers/{}/events/{}/vouchers/{}/'.format(organizer.slug, event.slug, v.pk),
|
'/api/v1/organizers/{}/events/{}/vouchers/{}/'.format(organizer.slug, event.slug, v.pk),
|
||||||
)
|
)
|
||||||
assert resp.status_code == 204
|
assert resp.status_code == 204
|
||||||
|
with scopes_disabled():
|
||||||
assert not event.vouchers.filter(pk=v.id).exists()
|
assert not event.vouchers.filter(pk=v.id).exists()
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_delete_voucher_redeemed(token_client, organizer, event, quota):
|
def test_delete_voucher_redeemed(token_client, organizer, event, quota):
|
||||||
|
with scopes_disabled():
|
||||||
v = event.vouchers.create(quota=quota, redeemed=1)
|
v = event.vouchers.create(quota=quota, redeemed=1)
|
||||||
resp = token_client.delete(
|
resp = token_client.delete(
|
||||||
'/api/v1/organizers/{}/events/{}/vouchers/{}/'.format(organizer.slug, event.slug, v.pk),
|
'/api/v1/organizers/{}/events/{}/vouchers/{}/'.format(organizer.slug, event.slug, v.pk),
|
||||||
)
|
)
|
||||||
assert resp.status_code == 403
|
assert resp.status_code == 403
|
||||||
|
with scopes_disabled():
|
||||||
assert event.vouchers.filter(pk=v.id).exists()
|
assert event.vouchers.filter(pk=v.id).exists()
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_redeemed_is_not_writable(token_client, organizer, event, item):
|
def test_redeemed_is_not_writable(token_client, organizer, event, item):
|
||||||
|
with scopes_disabled():
|
||||||
v = event.vouchers.create(item=item)
|
v = event.vouchers.create(item=item)
|
||||||
change_voucher(
|
change_voucher(
|
||||||
token_client, organizer, event, v,
|
token_client, organizer, event, v,
|
||||||
@@ -919,6 +954,7 @@ def test_create_multiple_vouchers(token_client, organizer, event, item):
|
|||||||
], format='json'
|
], format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
assert Voucher.objects.count() == 2
|
assert Voucher.objects.count() == 2
|
||||||
assert resp.data[0]['code'] == 'ABCDEFGHI'
|
assert resp.data[0]['code'] == 'ABCDEFGHI'
|
||||||
v1 = Voucher.objects.get(code='ABCDEFGHI')
|
v1 = Voucher.objects.get(code='ABCDEFGHI')
|
||||||
@@ -967,6 +1003,7 @@ def test_create_multiple_vouchers_one_invalid(token_client, organizer, event, it
|
|||||||
)
|
)
|
||||||
assert resp.status_code == 400
|
assert resp.status_code == 400
|
||||||
assert resp.data == [{}, {'code': ['Ensure this field has at least 5 characters.']}]
|
assert resp.data == [{}, {'code': ['Ensure this field has at least 5 characters.']}]
|
||||||
|
with scopes_disabled():
|
||||||
assert Voucher.objects.count() == 0
|
assert Voucher.objects.count() == 0
|
||||||
|
|
||||||
|
|
||||||
@@ -1009,4 +1046,5 @@ def test_create_multiple_vouchers_duplicate_code(token_client, organizer, event,
|
|||||||
)
|
)
|
||||||
assert resp.status_code == 400
|
assert resp.status_code == 400
|
||||||
assert resp.data == [{}, {'code': ['Duplicate voucher code in request.']}]
|
assert resp.data == [{}, {'code': ['Duplicate voucher code in request.']}]
|
||||||
|
with scopes_disabled():
|
||||||
assert Voucher.objects.count() == 0
|
assert Voucher.objects.count() == 0
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import datetime
|
|||||||
from unittest import mock
|
from unittest import mock
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
from django_scopes import scopes_disabled
|
||||||
from pytz import UTC
|
from pytz import UTC
|
||||||
|
|
||||||
from pretix.base.models import WaitingListEntry
|
from pretix.base.models import WaitingListEntry
|
||||||
@@ -44,6 +45,7 @@ TEST_WLE_RES = {
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_wle_list(token_client, organizer, event, wle, item, subevent):
|
def test_wle_list(token_client, organizer, event, wle, item, subevent):
|
||||||
|
with scopes_disabled():
|
||||||
var = item.variations.create(value="Children")
|
var = item.variations.create(value="Children")
|
||||||
var2 = item.variations.create(value="Children")
|
var2 = item.variations.create(value="Children")
|
||||||
res = dict(TEST_WLE_RES)
|
res = dict(TEST_WLE_RES)
|
||||||
@@ -97,6 +99,7 @@ def test_wle_list(token_client, organizer, event, wle, item, subevent):
|
|||||||
'/api/v1/organizers/{}/events/{}/waitinglistentries/?has_voucher=true'.format(organizer.slug, event.slug))
|
'/api/v1/organizers/{}/events/{}/waitinglistentries/?has_voucher=true'.format(organizer.slug, event.slug))
|
||||||
assert [] == resp.data['results']
|
assert [] == resp.data['results']
|
||||||
|
|
||||||
|
with scopes_disabled():
|
||||||
v = event.vouchers.create(item=item, price_mode='set', value=12, tag='Foo')
|
v = event.vouchers.create(item=item, price_mode='set', value=12, tag='Foo')
|
||||||
wle.voucher = v
|
wle.voucher = v
|
||||||
wle.save()
|
wle.save()
|
||||||
@@ -112,6 +115,7 @@ def test_wle_list(token_client, organizer, event, wle, item, subevent):
|
|||||||
resp = token_client.get(
|
resp = token_client.get(
|
||||||
'/api/v1/organizers/{}/events/{}/waitinglistentries/?subevent={}'.format(organizer.slug, event.slug, subevent.pk))
|
'/api/v1/organizers/{}/events/{}/waitinglistentries/?subevent={}'.format(organizer.slug, event.slug, subevent.pk))
|
||||||
assert [res] == resp.data['results']
|
assert [res] == resp.data['results']
|
||||||
|
with scopes_disabled():
|
||||||
se2 = event.subevents.create(name="Foobar", date_from=datetime.datetime(2017, 12, 27, 10, 0, 0, tzinfo=UTC))
|
se2 = event.subevents.create(name="Foobar", date_from=datetime.datetime(2017, 12, 27, 10, 0, 0, tzinfo=UTC))
|
||||||
resp = token_client.get(
|
resp = token_client.get(
|
||||||
'/api/v1/organizers/{}/events/{}/waitinglistentries/?subevent={}'.format(organizer.slug, event.slug,
|
'/api/v1/organizers/{}/events/{}/waitinglistentries/?subevent={}'.format(organizer.slug, event.slug,
|
||||||
@@ -136,11 +140,13 @@ def test_delete_wle(token_client, organizer, event, wle, item):
|
|||||||
'/api/v1/organizers/{}/events/{}/waitinglistentries/{}/'.format(organizer.slug, event.slug, wle.pk),
|
'/api/v1/organizers/{}/events/{}/waitinglistentries/{}/'.format(organizer.slug, event.slug, wle.pk),
|
||||||
)
|
)
|
||||||
assert resp.status_code == 204
|
assert resp.status_code == 204
|
||||||
|
with scopes_disabled():
|
||||||
assert not event.waitinglistentries.filter(pk=wle.id).exists()
|
assert not event.waitinglistentries.filter(pk=wle.id).exists()
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_delete_wle_assigned(token_client, organizer, event, wle, item):
|
def test_delete_wle_assigned(token_client, organizer, event, wle, item):
|
||||||
|
with scopes_disabled():
|
||||||
v = event.vouchers.create(item=item, price_mode='set', value=12, tag='Foo')
|
v = event.vouchers.create(item=item, price_mode='set', value=12, tag='Foo')
|
||||||
wle.voucher = v
|
wle.voucher = v
|
||||||
wle.save()
|
wle.save()
|
||||||
@@ -148,6 +154,7 @@ def test_delete_wle_assigned(token_client, organizer, event, wle, item):
|
|||||||
'/api/v1/organizers/{}/events/{}/waitinglistentries/{}/'.format(organizer.slug, event.slug, wle.pk),
|
'/api/v1/organizers/{}/events/{}/waitinglistentries/{}/'.format(organizer.slug, event.slug, wle.pk),
|
||||||
)
|
)
|
||||||
assert resp.status_code == 403
|
assert resp.status_code == 403
|
||||||
|
with scopes_disabled():
|
||||||
assert event.waitinglistentries.filter(pk=wle.id).exists()
|
assert event.waitinglistentries.filter(pk=wle.id).exists()
|
||||||
|
|
||||||
|
|
||||||
@@ -159,8 +166,8 @@ def create_wle(token_client, organizer, event, data, expected_failure=False):
|
|||||||
if expected_failure:
|
if expected_failure:
|
||||||
assert resp.status_code == 400
|
assert resp.status_code == 400
|
||||||
else:
|
else:
|
||||||
print(resp.data)
|
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
return WaitingListEntry.objects.get(pk=resp.data['id'])
|
return WaitingListEntry.objects.get(pk=resp.data['id'])
|
||||||
|
|
||||||
|
|
||||||
@@ -205,6 +212,7 @@ def test_wle_require_fields(token_client, organizer, event, item, quota):
|
|||||||
},
|
},
|
||||||
expected_failure=True
|
expected_failure=True
|
||||||
)
|
)
|
||||||
|
with scopes_disabled():
|
||||||
v = item.variations.create(value="S")
|
v = item.variations.create(value="S")
|
||||||
create_wle(
|
create_wle(
|
||||||
token_client, organizer, event,
|
token_client, organizer, event,
|
||||||
@@ -300,6 +308,7 @@ def test_wle_change_email(token_client, organizer, event, item, wle, quota):
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_wle_change_assigned(token_client, organizer, event, item, wle, quota):
|
def test_wle_change_assigned(token_client, organizer, event, item, wle, quota):
|
||||||
|
with scopes_disabled():
|
||||||
v = event.vouchers.create(item=item, price_mode='set', value=12, tag='Foo')
|
v = event.vouchers.create(item=item, price_mode='set', value=12, tag='Foo')
|
||||||
wle.voucher = v
|
wle.voucher = v
|
||||||
wle.save()
|
wle.save()
|
||||||
@@ -315,6 +324,7 @@ def test_wle_change_assigned(token_client, organizer, event, item, wle, quota):
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_wle_change_to_available_item(token_client, organizer, event, item, wle, quota):
|
def test_wle_change_to_available_item(token_client, organizer, event, item, wle, quota):
|
||||||
|
with scopes_disabled():
|
||||||
i = event.items.create(name="Budget Ticket", default_price=23)
|
i = event.items.create(name="Budget Ticket", default_price=23)
|
||||||
q = event.quotas.create(name="Budget Ticket", size=1)
|
q = event.quotas.create(name="Budget Ticket", size=1)
|
||||||
q.items.add(i)
|
q.items.add(i)
|
||||||
@@ -330,6 +340,7 @@ def test_wle_change_to_available_item(token_client, organizer, event, item, wle,
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_wle_change_to_unavailable_item(token_client, organizer, event, item, wle, quota):
|
def test_wle_change_to_unavailable_item(token_client, organizer, event, item, wle, quota):
|
||||||
|
with scopes_disabled():
|
||||||
i = event.items.create(name="Budget Ticket", default_price=23)
|
i = event.items.create(name="Budget Ticket", default_price=23)
|
||||||
v = i.variations.create(value="S")
|
v = i.variations.create(value="S")
|
||||||
q = event.quotas.create(name="Budget Ticket", size=0)
|
q = event.quotas.create(name="Budget Ticket", size=0)
|
||||||
@@ -349,6 +360,7 @@ def test_wle_change_to_unavailable_item(token_client, organizer, event, item, wl
|
|||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_wle_change_to_unavailable_item_missing_var(token_client, organizer, event, item, wle, quota):
|
def test_wle_change_to_unavailable_item_missing_var(token_client, organizer, event, item, wle, quota):
|
||||||
|
with scopes_disabled():
|
||||||
i = event.items.create(name="Budget Ticket", default_price=23)
|
i = event.items.create(name="Budget Ticket", default_price=23)
|
||||||
v = i.variations.create(value="S")
|
v = i.variations.create(value="S")
|
||||||
q = event.quotas.create(name="Budget Ticket", size=0)
|
q = event.quotas.create(name="Budget Ticket", size=0)
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import copy
|
import copy
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
from django_scopes import scopes_disabled
|
||||||
|
|
||||||
from pretix.api.models import WebHook
|
from pretix.api.models import WebHook
|
||||||
|
|
||||||
@@ -64,6 +65,7 @@ def test_hook_create(token_client, organizer, event):
|
|||||||
format='json'
|
format='json'
|
||||||
)
|
)
|
||||||
assert resp.status_code == 201
|
assert resp.status_code == 201
|
||||||
|
with scopes_disabled():
|
||||||
cl = WebHook.objects.get(pk=resp.data['id'])
|
cl = WebHook.objects.get(pk=resp.data['id'])
|
||||||
assert cl.target_url == "https://google.com"
|
assert cl.target_url == "https://google.com"
|
||||||
assert cl.limit_events.count() == 1
|
assert cl.limit_events.count() == 1
|
||||||
@@ -136,6 +138,7 @@ def test_hook_patch_url(token_client, organizer, event, webhook):
|
|||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
webhook.refresh_from_db()
|
webhook.refresh_from_db()
|
||||||
assert webhook.target_url == "https://pretix.eu"
|
assert webhook.target_url == "https://pretix.eu"
|
||||||
|
with scopes_disabled():
|
||||||
assert webhook.limit_events.count() == 1
|
assert webhook.limit_events.count() == 1
|
||||||
assert set(webhook.listeners.values_list('action_type', flat=True)) == {'pretix.event.order.placed',
|
assert set(webhook.listeners.values_list('action_type', flat=True)) == {'pretix.event.order.placed',
|
||||||
'pretix.event.order.paid'}
|
'pretix.event.order.paid'}
|
||||||
@@ -153,6 +156,7 @@ def test_hook_patch_types(token_client, organizer, event, webhook):
|
|||||||
)
|
)
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
webhook.refresh_from_db()
|
webhook.refresh_from_db()
|
||||||
|
with scopes_disabled():
|
||||||
assert webhook.limit_events.count() == 1
|
assert webhook.limit_events.count() == 1
|
||||||
assert set(webhook.listeners.values_list('action_type', flat=True)) == {'pretix.event.order.placed',
|
assert set(webhook.listeners.values_list('action_type', flat=True)) == {'pretix.event.order.placed',
|
||||||
'pretix.event.order.canceled'}
|
'pretix.event.order.canceled'}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import pytest
|
import pytest
|
||||||
|
from django_scopes import scopes_disabled
|
||||||
from xdist.dsession import DSession
|
from xdist.dsession import DSession
|
||||||
|
|
||||||
CRASHED_ITEMS = set()
|
CRASHED_ITEMS = set()
|
||||||
@@ -31,3 +32,9 @@ def pytest_configure(config):
|
|||||||
self.sched.check_schedule(node)
|
self.sched.check_schedule(node)
|
||||||
|
|
||||||
DSession.handle_crashitem = _handle_crashitem
|
DSession.handle_crashitem = _handle_crashitem
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.hookimpl(hookwrapper=True)
|
||||||
|
def pytest_fixture_setup(fixturedef, request):
|
||||||
|
with scopes_disabled():
|
||||||
|
yield
|
||||||
|
|||||||
Reference in New Issue
Block a user