Skip to content

Commit ad3e288

Browse files
author
Chris Coutinho
committed
test: Replace test_*_clients with single nc_client for tests
1 parent 0a97357 commit ad3e288

File tree

2 files changed

+40
-76
lines changed

2 files changed

+40
-76
lines changed

tests/conftest.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
logger = logging.getLogger(__name__)
1414

1515

16-
@pytest.fixture(scope="session")
16+
@pytest.fixture(scope="module")
1717
async def nc_client() -> AsyncGenerator[NextcloudClient, Any]:
1818
"""
1919
Fixture to create a NextcloudClient instance for integration tests.

tests/integration/test_calendar_operations.py

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

1717

18-
@pytest.fixture
19-
async def calendar_test_client():
20-
"""Create a new, isolated NextcloudClient for calendar tests."""
21-
client = NextcloudClient.from_env()
22-
try:
23-
yield client
24-
finally:
25-
await client.close()
26-
27-
2818
@pytest.fixture
2919
def test_calendar_name():
3020
"""Unique calendar name for testing."""
3121
return f"test_calendar_{uuid.uuid4().hex[:8]}"
3222

3323

3424
@pytest.fixture
35-
async def temporary_calendar(
36-
calendar_test_client: NextcloudClient, test_calendar_name: str
37-
):
25+
async def temporary_calendar(nc_client: NextcloudClient, test_calendar_name: str):
3826
"""Create a temporary calendar for testing and clean up afterward."""
3927
calendar_name = test_calendar_name
4028

4129
try:
4230
# Create a test calendar
4331
logger.info(f"Creating temporary calendar: {calendar_name}")
44-
result = await calendar_test_client.calendar.create_calendar(
32+
result = await nc_client.calendar.create_calendar(
4533
calendar_name=calendar_name,
4634
display_name=f"Test Calendar {calendar_name}",
4735
description="Temporary calendar for integration testing",
@@ -62,16 +50,14 @@ async def temporary_calendar(
6250
# Cleanup: Delete the temporary calendar
6351
try:
6452
logger.info(f"Cleaning up temporary calendar: {calendar_name}")
65-
await calendar_test_client.calendar.delete_calendar(calendar_name)
53+
await nc_client.calendar.delete_calendar(calendar_name)
6654
logger.info(f"Successfully deleted temporary calendar: {calendar_name}")
6755
except Exception as e:
6856
logger.error(f"Error deleting temporary calendar {calendar_name}: {e}")
6957

7058

7159
@pytest.fixture
72-
async def temporary_event(
73-
calendar_test_client: NextcloudClient, temporary_calendar: str
74-
):
60+
async def temporary_event(nc_client: NextcloudClient, temporary_calendar: str):
7561
"""Create a temporary event for testing and clean up afterward."""
7662
event_uid = None
7763
calendar_name = temporary_calendar
@@ -91,9 +77,7 @@ async def temporary_event(
9177

9278
try:
9379
logger.info(f"Creating temporary event in calendar: {calendar_name}")
94-
result = await calendar_test_client.calendar.create_event(
95-
calendar_name, event_data
96-
)
80+
result = await nc_client.calendar.create_event(calendar_name, event_data)
9781
event_uid = result.get("uid")
9882

9983
if not event_uid:
@@ -107,9 +91,7 @@ async def temporary_event(
10791
if event_uid:
10892
try:
10993
logger.info(f"Cleaning up temporary event: {event_uid}")
110-
await calendar_test_client.calendar.delete_event(
111-
calendar_name, event_uid
112-
)
94+
await nc_client.calendar.delete_event(calendar_name, event_uid)
11395
logger.info(f"Successfully deleted temporary event: {event_uid}")
11496
except HTTPStatusError as e:
11597
if e.response.status_code != 404:
@@ -120,9 +102,9 @@ async def temporary_event(
120102
)
121103

122104

123-
async def test_list_calendars(calendar_test_client: NextcloudClient):
105+
async def test_list_calendars(nc_client: NextcloudClient):
124106
"""Test listing available calendars."""
125-
calendars = await calendar_test_client.calendar.list_calendars()
107+
calendars = await nc_client.calendar.list_calendars()
126108

127109
assert isinstance(calendars, list)
128110

@@ -144,7 +126,7 @@ async def test_list_calendars(calendar_test_client: NextcloudClient):
144126

145127

146128
async def test_create_and_delete_event(
147-
calendar_test_client: NextcloudClient, temporary_calendar: str
129+
nc_client: NextcloudClient, temporary_calendar: str
148130
):
149131
"""Test creating and deleting a basic event."""
150132
calendar_name = temporary_calendar
@@ -163,27 +145,23 @@ async def test_create_and_delete_event(
163145
}
164146

165147
try:
166-
result = await calendar_test_client.calendar.create_event(
167-
calendar_name, event_data
168-
)
148+
result = await nc_client.calendar.create_event(calendar_name, event_data)
169149
assert "uid" in result
170150
assert result["status_code"] in [200, 201, 204]
171151

172152
event_uid = result["uid"]
173153
logger.info(f"Created event with UID: {event_uid}")
174154

175155
# Verify event was created by retrieving it
176-
retrieved_event, etag = await calendar_test_client.calendar.get_event(
156+
retrieved_event, etag = await nc_client.calendar.get_event(
177157
calendar_name, event_uid
178158
)
179159
assert retrieved_event["uid"] == event_uid
180160
assert retrieved_event["title"] == "Integration Test Event"
181161
assert retrieved_event["location"] == "Test Room"
182162

183163
# Delete event
184-
delete_result = await calendar_test_client.calendar.delete_event(
185-
calendar_name, event_uid
186-
)
164+
delete_result = await nc_client.calendar.delete_event(calendar_name, event_uid)
187165
assert delete_result["status_code"] in [200, 204, 404]
188166

189167
logger.info(f"Successfully deleted event: {event_uid}")
@@ -194,7 +172,7 @@ async def test_create_and_delete_event(
194172

195173

196174
async def test_create_all_day_event(
197-
calendar_test_client: NextcloudClient, temporary_calendar: str
175+
nc_client: NextcloudClient, temporary_calendar: str
198176
):
199177
"""Test creating an all-day event."""
200178
calendar_name = temporary_calendar
@@ -209,29 +187,27 @@ async def test_create_all_day_event(
209187
}
210188

211189
try:
212-
result = await calendar_test_client.calendar.create_event(
213-
calendar_name, event_data
214-
)
190+
result = await nc_client.calendar.create_event(calendar_name, event_data)
215191
event_uid = result["uid"]
216192
logger.info(f"Created all-day event with UID: {event_uid}")
217193

218194
# Verify event
219-
retrieved_event, _ = await calendar_test_client.calendar.get_event(
195+
retrieved_event, _ = await nc_client.calendar.get_event(
220196
calendar_name, event_uid
221197
)
222198
assert retrieved_event["title"] == "All Day Test Event"
223199
assert retrieved_event.get("all_day") is True
224200

225201
# Cleanup
226-
await calendar_test_client.calendar.delete_event(calendar_name, event_uid)
202+
await nc_client.calendar.delete_event(calendar_name, event_uid)
227203

228204
except Exception as e:
229205
logger.error(f"All-day event test failed: {e}")
230206
raise
231207

232208

233209
async def test_create_recurring_event(
234-
calendar_test_client: NextcloudClient, temporary_calendar: str
210+
nc_client: NextcloudClient, temporary_calendar: str
235211
):
236212
"""Test creating a recurring event."""
237213
calendar_name = temporary_calendar
@@ -248,38 +224,34 @@ async def test_create_recurring_event(
248224
}
249225

250226
try:
251-
result = await calendar_test_client.calendar.create_event(
252-
calendar_name, event_data
253-
)
227+
result = await nc_client.calendar.create_event(calendar_name, event_data)
254228
event_uid = result["uid"]
255229
logger.info(f"Created recurring event with UID: {event_uid}")
256230

257231
# Verify event
258-
retrieved_event, _ = await calendar_test_client.calendar.get_event(
232+
retrieved_event, _ = await nc_client.calendar.get_event(
259233
calendar_name, event_uid
260234
)
261235
assert retrieved_event["title"] == "Weekly Recurring Test"
262236
assert retrieved_event.get("recurring") is True
263237

264238
# Cleanup
265-
await calendar_test_client.calendar.delete_event(calendar_name, event_uid)
239+
await nc_client.calendar.delete_event(calendar_name, event_uid)
266240

267241
except Exception as e:
268242
logger.error(f"Recurring event test failed: {e}")
269243
raise
270244

271245

272-
async def test_list_events_in_range(
273-
calendar_test_client: NextcloudClient, temporary_event: dict
274-
):
246+
async def test_list_events_in_range(nc_client: NextcloudClient, temporary_event: dict):
275247
"""Test listing events within a date range."""
276248
calendar_name = temporary_event["calendar_name"]
277249

278250
# Get events for the next week
279251
start_datetime = datetime.now()
280252
end_datetime = datetime.now() + timedelta(days=7)
281253

282-
events = await calendar_test_client.calendar.get_calendar_events(
254+
events = await nc_client.calendar.get_calendar_events(
283255
calendar_name=calendar_name,
284256
start_datetime=start_datetime,
285257
end_datetime=end_datetime,
@@ -300,9 +272,7 @@ async def test_list_events_in_range(
300272
assert "start_datetime" in event
301273

302274

303-
async def test_update_event(
304-
calendar_test_client: NextcloudClient, temporary_event: dict
305-
):
275+
async def test_update_event(nc_client: NextcloudClient, temporary_event: dict):
306276
"""Test updating an existing event."""
307277
calendar_name = temporary_event["calendar_name"]
308278
event_uid = temporary_event["uid"]
@@ -316,15 +286,13 @@ async def test_update_event(
316286
}
317287

318288
try:
319-
result = await calendar_test_client.calendar.update_event(
289+
result = await nc_client.calendar.update_event(
320290
calendar_name, event_uid, updated_data
321291
)
322292
assert result["uid"] == event_uid
323293

324294
# Verify updates
325-
updated_event, _ = await calendar_test_client.calendar.get_event(
326-
calendar_name, event_uid
327-
)
295+
updated_event, _ = await nc_client.calendar.get_event(calendar_name, event_uid)
328296
assert updated_event["title"] == "Updated Test Event Title"
329297
assert updated_event["description"] == "Updated description for test event"
330298
assert updated_event["location"] == "Updated Location"
@@ -338,7 +306,7 @@ async def test_update_event(
338306

339307

340308
async def test_create_event_with_attendees(
341-
calendar_test_client: NextcloudClient, temporary_calendar: str
309+
nc_client: NextcloudClient, temporary_calendar: str
342310
):
343311
"""Test creating an event with attendees."""
344312
calendar_name = temporary_calendar
@@ -356,56 +324,54 @@ async def test_create_event_with_attendees(
356324
}
357325

358326
try:
359-
result = await calendar_test_client.calendar.create_event(
360-
calendar_name, event_data
361-
)
327+
result = await nc_client.calendar.create_event(calendar_name, event_data)
362328
event_uid = result["uid"]
363329
logger.info(f"Created event with attendees, UID: {event_uid}")
364330

365331
# Verify event
366-
retrieved_event, _ = await calendar_test_client.calendar.get_event(
332+
retrieved_event, _ = await nc_client.calendar.get_event(
367333
calendar_name, event_uid
368334
)
369335
assert retrieved_event["title"] == "Meeting with Attendees"
370336
assert "[email protected]" in retrieved_event.get("attendees", "")
371337
assert retrieved_event["status"] == "TENTATIVE"
372338

373339
# Cleanup
374-
await calendar_test_client.calendar.delete_event(calendar_name, event_uid)
340+
await nc_client.calendar.delete_event(calendar_name, event_uid)
375341

376342
except Exception as e:
377343
logger.error(f"Event with attendees test failed: {e}")
378344
raise
379345

380346

381347
async def test_get_nonexistent_event(
382-
calendar_test_client: NextcloudClient, temporary_calendar: str
348+
nc_client: NextcloudClient, temporary_calendar: str
383349
):
384350
"""Test retrieving a non-existent event."""
385351
calendar_name = temporary_calendar
386352
fake_uid = f"nonexistent-{uuid.uuid4()}"
387353

388354
with pytest.raises(HTTPStatusError) as exc_info:
389-
await calendar_test_client.calendar.get_event(calendar_name, fake_uid)
355+
await nc_client.calendar.get_event(calendar_name, fake_uid)
390356

391357
assert exc_info.value.response.status_code == 404
392358
logger.info(f"Correctly got 404 for nonexistent event: {fake_uid}")
393359

394360

395361
async def test_delete_nonexistent_event(
396-
calendar_test_client: NextcloudClient, temporary_calendar: str
362+
nc_client: NextcloudClient, temporary_calendar: str
397363
):
398364
"""Test deleting a non-existent event."""
399365
calendar_name = temporary_calendar
400366
fake_uid = f"nonexistent-{uuid.uuid4()}"
401367

402-
result = await calendar_test_client.calendar.delete_event(calendar_name, fake_uid)
368+
result = await nc_client.calendar.delete_event(calendar_name, fake_uid)
403369
assert result["status_code"] == 404
404370
logger.info(f"Correctly got 404 for deleting nonexistent event: {fake_uid}")
405371

406372

407373
async def test_event_with_url_and_categories(
408-
calendar_test_client: NextcloudClient, temporary_calendar: str
374+
nc_client: NextcloudClient, temporary_calendar: str
409375
):
410376
"""Test creating an event with URL and multiple categories."""
411377
calendar_name = temporary_calendar
@@ -423,14 +389,12 @@ async def test_event_with_url_and_categories(
423389
}
424390

425391
try:
426-
result = await calendar_test_client.calendar.create_event(
427-
calendar_name, event_data
428-
)
392+
result = await nc_client.calendar.create_event(calendar_name, event_data)
429393
event_uid = result["uid"]
430394
logger.info(f"Created event with metadata, UID: {event_uid}")
431395

432396
# Verify event
433-
retrieved_event, _ = await calendar_test_client.calendar.get_event(
397+
retrieved_event, _ = await nc_client.calendar.get_event(
434398
calendar_name, event_uid
435399
)
436400
assert retrieved_event["title"] == "Event with URL and Categories"
@@ -441,22 +405,22 @@ async def test_event_with_url_and_categories(
441405
assert retrieved_event.get("priority") == 2
442406

443407
# Cleanup
444-
await calendar_test_client.calendar.delete_event(calendar_name, event_uid)
408+
await nc_client.calendar.delete_event(calendar_name, event_uid)
445409

446410
except Exception as e:
447411
logger.error(f"Event with metadata test failed: {e}")
448412
raise
449413

450414

451415
async def test_calendar_operations_error_handling(
452-
calendar_test_client: NextcloudClient,
416+
nc_client: NextcloudClient,
453417
):
454418
"""Test error handling for calendar operations."""
455419

456420
# Test with non-existent calendar
457421
fake_calendar = f"nonexistent_calendar_{uuid.uuid4().hex}"
458422

459423
with pytest.raises(HTTPStatusError):
460-
await calendar_test_client.calendar.get_calendar_events(fake_calendar)
424+
await nc_client.calendar.get_calendar_events(fake_calendar)
461425

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

0 commit comments

Comments
 (0)