Skip to content

Commit a5e3f94

Browse files
author
Chris Coutinho
committed
Use unique calendar_test_client
1 parent 69fccb4 commit a5e3f94

File tree

1 file changed

+77
-39
lines changed

1 file changed

+77
-39
lines changed

tests/integration/test_calendar_operations.py

Lines changed: 77 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,33 @@
1414
pytestmark = pytest.mark.integration
1515

1616

17+
@pytest.fixture
18+
async def calendar_test_client():
19+
"""Create a new, isolated NextcloudClient for calendar tests."""
20+
client = NextcloudClient.from_env()
21+
try:
22+
yield client
23+
finally:
24+
await client.close()
25+
26+
1727
@pytest.fixture
1828
def test_calendar_name():
1929
"""Unique calendar name for testing."""
2030
return f"test_calendar_{uuid.uuid4().hex[:8]}"
2131

2232

2333
@pytest.fixture
24-
async def temporary_calendar(nc_client: NextcloudClient, test_calendar_name: str):
34+
async def temporary_calendar(
35+
calendar_test_client: NextcloudClient, test_calendar_name: str
36+
):
2537
"""Create a temporary calendar for testing and clean up afterward."""
2638
calendar_name = test_calendar_name
2739

2840
try:
2941
# Create a test calendar
3042
logger.info(f"Creating temporary calendar: {calendar_name}")
31-
result = await nc_client.calendar.create_calendar(
43+
result = await calendar_test_client.calendar.create_calendar(
3244
calendar_name=calendar_name,
3345
display_name=f"Test Calendar {calendar_name}",
3446
description="Temporary calendar for integration testing",
@@ -49,14 +61,16 @@ async def temporary_calendar(nc_client: NextcloudClient, test_calendar_name: str
4961
# Cleanup: Delete the temporary calendar
5062
try:
5163
logger.info(f"Cleaning up temporary calendar: {calendar_name}")
52-
await nc_client.calendar.delete_calendar(calendar_name)
64+
await calendar_test_client.calendar.delete_calendar(calendar_name)
5365
logger.info(f"Successfully deleted temporary calendar: {calendar_name}")
5466
except Exception as e:
5567
logger.error(f"Error deleting temporary calendar {calendar_name}: {e}")
5668

5769

5870
@pytest.fixture
59-
async def temporary_event(nc_client: NextcloudClient, temporary_calendar: str):
71+
async def temporary_event(
72+
calendar_test_client: NextcloudClient, temporary_calendar: str
73+
):
6074
"""Create a temporary event for testing and clean up afterward."""
6175
event_uid = None
6276
calendar_name = temporary_calendar
@@ -76,7 +90,9 @@ async def temporary_event(nc_client: NextcloudClient, temporary_calendar: str):
7690

7791
try:
7892
logger.info(f"Creating temporary event in calendar: {calendar_name}")
79-
result = await nc_client.calendar.create_event(calendar_name, event_data)
93+
result = await calendar_test_client.calendar.create_event(
94+
calendar_name, event_data
95+
)
8096
event_uid = result.get("uid")
8197

8298
if not event_uid:
@@ -90,7 +106,9 @@ async def temporary_event(nc_client: NextcloudClient, temporary_calendar: str):
90106
if event_uid:
91107
try:
92108
logger.info(f"Cleaning up temporary event: {event_uid}")
93-
await nc_client.calendar.delete_event(calendar_name, event_uid)
109+
await calendar_test_client.calendar.delete_event(
110+
calendar_name, event_uid
111+
)
94112
logger.info(f"Successfully deleted temporary event: {event_uid}")
95113
except HTTPStatusError as e:
96114
if e.response.status_code != 404:
@@ -101,9 +119,9 @@ async def temporary_event(nc_client: NextcloudClient, temporary_calendar: str):
101119
)
102120

103121

104-
async def test_list_calendars(nc_client: NextcloudClient):
122+
async def test_list_calendars(calendar_test_client: NextcloudClient):
105123
"""Test listing available calendars."""
106-
calendars = await nc_client.calendar.list_calendars()
124+
calendars = await calendar_test_client.calendar.list_calendars()
107125

108126
assert isinstance(calendars, list)
109127

@@ -125,7 +143,7 @@ async def test_list_calendars(nc_client: NextcloudClient):
125143

126144

127145
async def test_create_and_delete_event(
128-
nc_client: NextcloudClient, temporary_calendar: str
146+
calendar_test_client: NextcloudClient, temporary_calendar: str
129147
):
130148
"""Test creating and deleting a basic event."""
131149
calendar_name = temporary_calendar
@@ -144,23 +162,27 @@ async def test_create_and_delete_event(
144162
}
145163

146164
try:
147-
result = await nc_client.calendar.create_event(calendar_name, event_data)
165+
result = await calendar_test_client.calendar.create_event(
166+
calendar_name, event_data
167+
)
148168
assert "uid" in result
149169
assert result["status_code"] in [200, 201, 204]
150170

151171
event_uid = result["uid"]
152172
logger.info(f"Created event with UID: {event_uid}")
153173

154174
# Verify event was created by retrieving it
155-
retrieved_event, etag = await nc_client.calendar.get_event(
175+
retrieved_event, etag = await calendar_test_client.calendar.get_event(
156176
calendar_name, event_uid
157177
)
158178
assert retrieved_event["uid"] == event_uid
159179
assert retrieved_event["title"] == "Integration Test Event"
160180
assert retrieved_event["location"] == "Test Room"
161181

162182
# Delete event
163-
delete_result = await nc_client.calendar.delete_event(calendar_name, event_uid)
183+
delete_result = await calendar_test_client.calendar.delete_event(
184+
calendar_name, event_uid
185+
)
164186
assert delete_result["status_code"] in [200, 204, 404]
165187

166188
logger.info(f"Successfully deleted event: {event_uid}")
@@ -171,7 +193,7 @@ async def test_create_and_delete_event(
171193

172194

173195
async def test_create_all_day_event(
174-
nc_client: NextcloudClient, temporary_calendar: str
196+
calendar_test_client: NextcloudClient, temporary_calendar: str
175197
):
176198
"""Test creating an all-day event."""
177199
calendar_name = temporary_calendar
@@ -186,27 +208,29 @@ async def test_create_all_day_event(
186208
}
187209

188210
try:
189-
result = await nc_client.calendar.create_event(calendar_name, event_data)
211+
result = await calendar_test_client.calendar.create_event(
212+
calendar_name, event_data
213+
)
190214
event_uid = result["uid"]
191215
logger.info(f"Created all-day event with UID: {event_uid}")
192216

193217
# Verify event
194-
retrieved_event, _ = await nc_client.calendar.get_event(
218+
retrieved_event, _ = await calendar_test_client.calendar.get_event(
195219
calendar_name, event_uid
196220
)
197221
assert retrieved_event["title"] == "All Day Test Event"
198222
assert retrieved_event.get("all_day") is True
199223

200224
# Cleanup
201-
await nc_client.calendar.delete_event(calendar_name, event_uid)
225+
await calendar_test_client.calendar.delete_event(calendar_name, event_uid)
202226

203227
except Exception as e:
204228
logger.error(f"All-day event test failed: {e}")
205229
raise
206230

207231

208232
async def test_create_recurring_event(
209-
nc_client: NextcloudClient, temporary_calendar: str
233+
calendar_test_client: NextcloudClient, temporary_calendar: str
210234
):
211235
"""Test creating a recurring event."""
212236
calendar_name = temporary_calendar
@@ -223,34 +247,38 @@ async def test_create_recurring_event(
223247
}
224248

225249
try:
226-
result = await nc_client.calendar.create_event(calendar_name, event_data)
250+
result = await calendar_test_client.calendar.create_event(
251+
calendar_name, event_data
252+
)
227253
event_uid = result["uid"]
228254
logger.info(f"Created recurring event with UID: {event_uid}")
229255

230256
# Verify event
231-
retrieved_event, _ = await nc_client.calendar.get_event(
257+
retrieved_event, _ = await calendar_test_client.calendar.get_event(
232258
calendar_name, event_uid
233259
)
234260
assert retrieved_event["title"] == "Weekly Recurring Test"
235261
assert retrieved_event.get("recurring") is True
236262

237263
# Cleanup
238-
await nc_client.calendar.delete_event(calendar_name, event_uid)
264+
await calendar_test_client.calendar.delete_event(calendar_name, event_uid)
239265

240266
except Exception as e:
241267
logger.error(f"Recurring event test failed: {e}")
242268
raise
243269

244270

245-
async def test_list_events_in_range(nc_client: NextcloudClient, temporary_event: dict):
271+
async def test_list_events_in_range(
272+
calendar_test_client: NextcloudClient, temporary_event: dict
273+
):
246274
"""Test listing events within a date range."""
247275
calendar_name = temporary_event["calendar_name"]
248276

249277
# Get events for the next week
250278
start_datetime = datetime.now()
251279
end_datetime = datetime.now() + timedelta(days=7)
252280

253-
events = await nc_client.calendar.get_calendar_events(
281+
events = await calendar_test_client.calendar.get_calendar_events(
254282
calendar_name=calendar_name,
255283
start_datetime=start_datetime,
256284
end_datetime=end_datetime,
@@ -271,7 +299,9 @@ async def test_list_events_in_range(nc_client: NextcloudClient, temporary_event:
271299
assert "start_datetime" in event
272300

273301

274-
async def test_update_event(nc_client: NextcloudClient, temporary_event: dict):
302+
async def test_update_event(
303+
calendar_test_client: NextcloudClient, temporary_event: dict
304+
):
275305
"""Test updating an existing event."""
276306
calendar_name = temporary_event["calendar_name"]
277307
event_uid = temporary_event["uid"]
@@ -285,13 +315,15 @@ async def test_update_event(nc_client: NextcloudClient, temporary_event: dict):
285315
}
286316

287317
try:
288-
result = await nc_client.calendar.update_event(
318+
result = await calendar_test_client.calendar.update_event(
289319
calendar_name, event_uid, updated_data
290320
)
291321
assert result["uid"] == event_uid
292322

293323
# Verify updates
294-
updated_event, _ = await nc_client.calendar.get_event(calendar_name, event_uid)
324+
updated_event, _ = await calendar_test_client.calendar.get_event(
325+
calendar_name, event_uid
326+
)
295327
assert updated_event["title"] == "Updated Test Event Title"
296328
assert updated_event["description"] == "Updated description for test event"
297329
assert updated_event["location"] == "Updated Location"
@@ -305,7 +337,7 @@ async def test_update_event(nc_client: NextcloudClient, temporary_event: dict):
305337

306338

307339
async def test_create_event_with_attendees(
308-
nc_client: NextcloudClient, temporary_calendar: str
340+
calendar_test_client: NextcloudClient, temporary_calendar: str
309341
):
310342
"""Test creating an event with attendees."""
311343
calendar_name = temporary_calendar
@@ -323,54 +355,56 @@ async def test_create_event_with_attendees(
323355
}
324356

325357
try:
326-
result = await nc_client.calendar.create_event(calendar_name, event_data)
358+
result = await calendar_test_client.calendar.create_event(
359+
calendar_name, event_data
360+
)
327361
event_uid = result["uid"]
328362
logger.info(f"Created event with attendees, UID: {event_uid}")
329363

330364
# Verify event
331-
retrieved_event, _ = await nc_client.calendar.get_event(
365+
retrieved_event, _ = await calendar_test_client.calendar.get_event(
332366
calendar_name, event_uid
333367
)
334368
assert retrieved_event["title"] == "Meeting with Attendees"
335369
assert "[email protected]" in retrieved_event.get("attendees", "")
336370
assert retrieved_event["status"] == "TENTATIVE"
337371

338372
# Cleanup
339-
await nc_client.calendar.delete_event(calendar_name, event_uid)
373+
await calendar_test_client.calendar.delete_event(calendar_name, event_uid)
340374

341375
except Exception as e:
342376
logger.error(f"Event with attendees test failed: {e}")
343377
raise
344378

345379

346380
async def test_get_nonexistent_event(
347-
nc_client: NextcloudClient, temporary_calendar: str
381+
calendar_test_client: NextcloudClient, temporary_calendar: str
348382
):
349383
"""Test retrieving a non-existent event."""
350384
calendar_name = temporary_calendar
351385
fake_uid = f"nonexistent-{uuid.uuid4()}"
352386

353387
with pytest.raises(HTTPStatusError) as exc_info:
354-
await nc_client.calendar.get_event(calendar_name, fake_uid)
388+
await calendar_test_client.calendar.get_event(calendar_name, fake_uid)
355389

356390
assert exc_info.value.response.status_code == 404
357391
logger.info(f"Correctly got 404 for nonexistent event: {fake_uid}")
358392

359393

360394
async def test_delete_nonexistent_event(
361-
nc_client: NextcloudClient, temporary_calendar: str
395+
calendar_test_client: NextcloudClient, temporary_calendar: str
362396
):
363397
"""Test deleting a non-existent event."""
364398
calendar_name = temporary_calendar
365399
fake_uid = f"nonexistent-{uuid.uuid4()}"
366400

367-
result = await nc_client.calendar.delete_event(calendar_name, fake_uid)
401+
result = await calendar_test_client.calendar.delete_event(calendar_name, fake_uid)
368402
assert result["status_code"] == 404
369403
logger.info(f"Correctly got 404 for deleting nonexistent event: {fake_uid}")
370404

371405

372406
async def test_event_with_url_and_categories(
373-
nc_client: NextcloudClient, temporary_calendar: str
407+
calendar_test_client: NextcloudClient, temporary_calendar: str
374408
):
375409
"""Test creating an event with URL and multiple categories."""
376410
calendar_name = temporary_calendar
@@ -388,12 +422,14 @@ async def test_event_with_url_and_categories(
388422
}
389423

390424
try:
391-
result = await nc_client.calendar.create_event(calendar_name, event_data)
425+
result = await calendar_test_client.calendar.create_event(
426+
calendar_name, event_data
427+
)
392428
event_uid = result["uid"]
393429
logger.info(f"Created event with metadata, UID: {event_uid}")
394430

395431
# Verify event
396-
retrieved_event, _ = await nc_client.calendar.get_event(
432+
retrieved_event, _ = await calendar_test_client.calendar.get_event(
397433
calendar_name, event_uid
398434
)
399435
assert retrieved_event["title"] == "Event with URL and Categories"
@@ -404,20 +440,22 @@ async def test_event_with_url_and_categories(
404440
assert retrieved_event.get("priority") == 2
405441

406442
# Cleanup
407-
await nc_client.calendar.delete_event(calendar_name, event_uid)
443+
await calendar_test_client.calendar.delete_event(calendar_name, event_uid)
408444

409445
except Exception as e:
410446
logger.error(f"Event with metadata test failed: {e}")
411447
raise
412448

413449

414-
async def test_calendar_operations_error_handling(nc_client: NextcloudClient):
450+
async def test_calendar_operations_error_handling(
451+
calendar_test_client: NextcloudClient,
452+
):
415453
"""Test error handling for calendar operations."""
416454

417455
# Test with non-existent calendar
418456
fake_calendar = f"nonexistent_calendar_{uuid.uuid4().hex}"
419457

420458
with pytest.raises(HTTPStatusError):
421-
await nc_client.calendar.get_calendar_events(fake_calendar)
459+
await calendar_test_client.calendar.get_calendar_events(fake_calendar)
422460

423461
logger.info("Error handling tests completed successfully")

0 commit comments

Comments
 (0)