diff --git a/src/tests/api/test_reusable_media.py b/src/tests/api/test_reusable_media.py index ae2d7fce18..11e8fb3533 100644 --- a/src/tests/api/test_reusable_media.py +++ b/src/tests/api/test_reusable_media.py @@ -356,7 +356,7 @@ def test_medium_create(token_client, organizer, giftcard): @pytest.mark.django_db -def test_medium_create_linked_orderposition(token_client, organizer, organizer2, event, medium): +def test_medium_create_linked_orderposition(token_client, organizer, event, org2_event, medium): with scopes_disabled(): o = Order.objects.create( code='FOO', event=event, email='dummy@dummy.test', @@ -369,15 +369,26 @@ def test_medium_create_linked_orderposition(token_client, organizer, organizer2, op = o.positions.create(item=ticket, price=Decimal("14")) op2 = o.positions.create(item=ticket, price=Decimal("14")) + org2_o = Order.objects.create( + code='FOO', event=org2_event, email='dummy@dummy.test', + status=Order.STATUS_PENDING, datetime=now(), expires=now() + timedelta(days=10), + sales_channel=org2_event.organizer.sales_channels.get(identifier="web"), + total=14, locale='en' + ) + org2_ticket = org2_event.items.create(name='Early-bird ticket', category=None, default_price=23, admission=True, + personalized=True) + org2_op = org2_o.positions.create(item=org2_ticket, price=Decimal("14")) + payload = dict(TEST_MEDIUM_CREATE_PAYLOAD) - # wrong organizer for orderposition + # wrong orderposition for organizer + payload['linked_orderposition'] = org2_op.pk resp = token_client.post( - '/api/v1/organizers/{}/reusablemedia/'.format(organizer2.slug), + '/api/v1/organizers/{}/reusablemedia/'.format(organizer.slug), payload, format='json' ) - assert resp.status_code == 403 + assert resp.status_code == 400 # unkown orderposition payload['linked_orderposition'] = "unknown" @@ -410,7 +421,7 @@ def test_medium_create_linked_orderposition(token_client, organizer, organizer2, # create with linked_orderposition and linked_orderpositions (not allowed) payload['identifier'] = "FOOBAZ" - payload['linked_orderpositions'] = [op.pk, op2.pk] + payload['linked_orderpositions'] = [op.pk, org2_op.pk] resp = token_client.post( '/api/v1/organizers/{}/reusablemedia/'.format(organizer.slug), payload, @@ -418,13 +429,22 @@ def test_medium_create_linked_orderposition(token_client, organizer, organizer2, ) assert resp.status_code == 400 - # multiple linked_orderpositions + # multiple linked_orderpositions, but from different organizers del payload['linked_orderposition'] resp = token_client.post( '/api/v1/organizers/{}/reusablemedia/'.format(organizer.slug), payload, format='json' ) + assert resp.status_code == 400 + + # multiple linked_orderpositions from same organizer + payload['linked_orderpositions'] = [op.pk, op2.pk] + resp = token_client.post( + '/api/v1/organizers/{}/reusablemedia/'.format(organizer.slug), + payload, + format='json' + ) assert resp.status_code == 201 with scopes_disabled(): m = ReusableMedium.objects.get(pk=resp.data['id'])