|
2 | 2 |
|
3 | 3 | from schedule.tests.factories import ( |
4 | 4 | DayFactory, |
| 5 | + RoomFactory, |
5 | 6 | ScheduleItemAttendeeFactory, |
6 | 7 | ScheduleItemFactory, |
7 | 8 | SlotFactory, |
@@ -186,3 +187,69 @@ def test_user_cannot_book_any_event(graphql_client, user, simple_schedule_item, |
186 | 187 | assert not ScheduleItemAttendee.objects.filter( |
187 | 188 | schedule_item=schedule_item, user_id=user.id |
188 | 189 | ).exists() |
| 190 | + |
| 191 | + |
| 192 | +def test_user_book_with_limited_capacity_from_room( |
| 193 | + graphql_client, user, simple_schedule_item, mocker |
| 194 | +): |
| 195 | + mocker.patch( |
| 196 | + "api.schedule.mutations.book_schedule_item.user_has_admission_ticket", |
| 197 | + return_value=True, |
| 198 | + ) |
| 199 | + |
| 200 | + graphql_client.force_login(user) |
| 201 | + |
| 202 | + schedule_item = simple_schedule_item |
| 203 | + schedule_item.rooms.add(RoomFactory(attendees_total_capacity=10)) |
| 204 | + schedule_item.attendees_total_capacity = None |
| 205 | + schedule_item.save() |
| 206 | + |
| 207 | + ScheduleItemAttendeeFactory.create_batch(2, schedule_item=schedule_item) |
| 208 | + |
| 209 | + response = graphql_client.query( |
| 210 | + """mutation($id: ID!) { |
| 211 | + bookScheduleItem(id: $id) { |
| 212 | + __typename |
| 213 | + } |
| 214 | + }""", |
| 215 | + variables={"id": schedule_item.id}, |
| 216 | + ) |
| 217 | + |
| 218 | + assert response["data"]["bookScheduleItem"]["__typename"] == "ScheduleItem" |
| 219 | + |
| 220 | + assert ScheduleItemAttendee.objects.filter( |
| 221 | + schedule_item=schedule_item, user_id=user.id |
| 222 | + ).exists() |
| 223 | + |
| 224 | + |
| 225 | +def test_user_book_full_item_from_room( |
| 226 | + graphql_client, user, simple_schedule_item, mocker |
| 227 | +): |
| 228 | + mocker.patch( |
| 229 | + "api.schedule.mutations.book_schedule_item.user_has_admission_ticket", |
| 230 | + return_value=True, |
| 231 | + ) |
| 232 | + |
| 233 | + graphql_client.force_login(user) |
| 234 | + |
| 235 | + schedule_item = simple_schedule_item |
| 236 | + schedule_item.rooms.add(RoomFactory(attendees_total_capacity=10)) |
| 237 | + schedule_item.attendees_total_capacity = None |
| 238 | + schedule_item.save() |
| 239 | + |
| 240 | + ScheduleItemAttendeeFactory.create_batch(11, schedule_item=schedule_item) |
| 241 | + |
| 242 | + response = graphql_client.query( |
| 243 | + """mutation($id: ID!) { |
| 244 | + bookScheduleItem(id: $id) { |
| 245 | + __typename |
| 246 | + } |
| 247 | + }""", |
| 248 | + variables={"id": schedule_item.id}, |
| 249 | + ) |
| 250 | + |
| 251 | + assert response["data"]["bookScheduleItem"]["__typename"] == "ScheduleItemIsFull" |
| 252 | + |
| 253 | + assert not ScheduleItemAttendee.objects.filter( |
| 254 | + schedule_item=schedule_item, user_id=user.id |
| 255 | + ).exists() |
0 commit comments