Feature: Retreat Management Scenario: Create retreat as admin Given I login as "admin@perauset.org" When I create a retreat "Summer Solstice" with slug "summer-solstice-2026" from "2026-06-20" to "2026-06-22" Then the response status should be 200 And the response body field "status" should be "draft" And I store the response field "retreatId" as "retreatId" Scenario: List retreats Given I login as "admin@perauset.org" When I create a retreat "Autumn Equinox" with slug "autumn-equinox-2026" from "2026-09-22" to "2026-09-24" Then the response status should be 200 When I list retreats Then the response status should be 200 And the response body field "items" should be truthy Scenario: Update retreat Given I login as "admin@perauset.org" When I create a retreat "Spring Retreat" with slug "spring-retreat-2026" from "2026-03-20" to "2026-03-22" Then the response status should be 200 And I store the response field "retreatId" as "retreatId" When I update the retreat with name "Spring Renewal Retreat" and capacity 30 Then the response status should be 200 And the response body field "success" should be truthy Scenario: Publish retreat Given I login as "admin@perauset.org" When I create a retreat "Winter Solstice" with slug "winter-solstice-2026" from "2026-12-20" to "2026-12-22" Then the response status should be 200 And I store the response field "retreatId" as "retreatId" When I publish the retreat Then the response status should be 200 And the response body field "status" should be "published" Scenario: Add person to retreat Given I login as "admin@perauset.org" When I create a retreat "Meditation Retreat" with slug "meditation-2026" from "2026-08-01" to "2026-08-03" Then the response status should be 200 And I store the response field "retreatId" as "retreatId" When I add a person "Jane Doe" with role "participant" to the retreat Then the response status should be 200 And the response body field "attendanceStatus" should be "registered" And I store the response field "retreatPersonId" as "retreatPersonId" Scenario: Add schedule item to retreat Given I login as "admin@perauset.org" When I create a retreat "Yoga Retreat" with slug "yoga-retreat-2026" from "2026-10-01" to "2026-10-03" Then the response status should be 200 And I store the response field "retreatId" as "retreatId" When I add a schedule item "Morning Yoga" from "2026-10-01T07:00:00Z" to "2026-10-01T08:30:00Z" at "Main Hall" Then the response status should be 200 And the response body field "itemId" should be truthy Scenario: Cancel retreat Given I login as "admin@perauset.org" When I create a retreat "Cancelled Event" with slug "cancelled-event-2026" from "2026-11-01" to "2026-11-03" Then the response status should be 200 And I store the response field "retreatId" as "retreatId" When I cancel the retreat Then the response status should be 200 And the response body field "status" should be "cancelled" Scenario: Unpermissioned user cannot create retreats Given a user "guest@test.org" exists with roles "guest" And I login as "guest@test.org" When I create a retreat "Forbidden Retreat" with slug "forbidden-2026" from "2026-07-01" to "2026-07-03" Then the response status should be 403