Skip to content

Commit 7c641a5

Browse files
fix: Let event fields be nullable (#7251)
1 parent a3bedb4 commit 7c641a5

File tree

4 files changed

+68
-3
lines changed

4 files changed

+68
-3
lines changed

app/api/events.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ def validate_event(user, data):
7272

7373
if not data.get('name', None) and data.get('state', None) == 'published':
7474
raise ConflictError(
75-
{'pointer': '/data/attributes/location-name'},
75+
{'pointer': '/data/attributes/name'},
7676
"Event Name is required to publish the event",
7777
)
7878

app/api/schema/events.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,8 @@
1010
from app.api.helpers.utilities import dasherize
1111
from app.api.schema.base import SoftDeletionSchema
1212
from app.models.event import Event
13-
from utils.common import use_defaults
1413

1514

16-
@use_defaults()
1715
class EventSchemaPublic(SoftDeletionSchema):
1816
class Meta:
1917
type_ = 'event'

tests/all/integration/api/event/__init__.py

Whitespace-only changes.
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
import json
2+
3+
from tests.factories.event import EventFactoryBasic
4+
5+
6+
def get_event(db):
7+
event = EventFactoryBasic(location_name='Amsterdam')
8+
db.session.commit()
9+
10+
return event
11+
12+
13+
def test_edit_event_default_field(db, client, admin_jwt):
14+
# Should let the previous value remain unchanged if field is not present in data
15+
event = get_event(db)
16+
17+
data = json.dumps(
18+
{
19+
'data': {
20+
'type': 'event',
21+
'id': str(event.id),
22+
'attributes': {'timezone': 'Europe/Berlin'},
23+
}
24+
}
25+
)
26+
27+
response = client.patch(
28+
f'/v1/events/{event.id}',
29+
content_type='application/vnd.api+json',
30+
headers=admin_jwt,
31+
data=data,
32+
)
33+
34+
db.session.refresh(event)
35+
36+
assert response.status_code == 200
37+
assert event.location_name == 'Amsterdam'
38+
assert event.timezone == 'Europe/Berlin'
39+
40+
41+
def test_edit_event_null_field(db, client, admin_jwt):
42+
# Should let the previous value be nulled if field is null in data
43+
event = get_event(db)
44+
45+
assert event.location_name == 'Amsterdam'
46+
47+
data = json.dumps(
48+
{
49+
'data': {
50+
'type': 'event',
51+
'id': str(event.id),
52+
'attributes': {'location-name': None},
53+
}
54+
}
55+
)
56+
57+
response = client.patch(
58+
f'/v1/events/{event.id}',
59+
content_type='application/vnd.api+json',
60+
headers=admin_jwt,
61+
data=data,
62+
)
63+
64+
db.session.refresh(event)
65+
66+
assert response.status_code == 200
67+
assert event.location_name is None

0 commit comments

Comments
 (0)