Create private test drafts and publish complete announcements #44

Open
opened 2026-11-01 20:12:01 +00:00 by viacheslavshuka · 0 comments

Organizers need to prepare a test before making it discoverable. Deliver the website creation form, draft persistence, publication action, and protected published details together.

Acceptance criteria

  • Eligible material owners or collaborators can create a private draft. Its creator is the initial owner and organizer.
  • Drafts may omit publication fields and emit no discovery announcement. Only the current owner and current accepted organizers can view them.
  • An organizer can schedule a block or unpartitioned package directly, without creating a complete tournament hierarchy.
  • Publication requires selected material, one definite start, an explicitly entered minimum tester count, and expected duration in elapsed minutes.
  • Maximum capacity is optional and defaults to no limit. When provided, it cannot be below minimum quorum.
  • Automatic approval is the initial registration mode. Organizers can select manual approval before publication.
  • Description input supports ordinary text, paragraphs, and line breaks. Website announcements format that text without interpreting user HTML or Markdown.
  • Difficulty and target audience are optional text. Material language remains separate from the Russian-first interface language.
  • Before publication, warn about overlaps with every visible published non-cancelled test. Compare start through expected end. Touching intervals do not overlap. The warning does not prevent publication.
  • Reject nonexistent local start times. For repeated local times, require an explicit occurrence and display both UTC offsets.
  • Display dates, start, end, and deadlines in the recipient's saved named timezone, with the applicable UTC offset and both dates for overnight tests.
  • Published tests are visible to signed-in users. No private, unlisted, or invitation-only published mode exists initially.
  • Explain that first publication makes associated title, format, tournament links, and part names searchable by signed-in users. Later cancellation does not reverse this visibility.
  • Publication can succeed without meeting links and shows a pending-link state.

Validation

Exercise incomplete drafts, unauthorized reads, DST gaps and folds, elapsed duration across offset changes, touching intervals, and publication with no links. Check API schemas and generated-client compatibility. Use a browser workflow to publish without loading the full calendar.

Construct current-role fixtures where the original creator has no owner or organizer role. Their private-draft read must fail. Publish an unpartitioned package without artificial child blocks.

Dependencies

Organizers need to prepare a test before making it discoverable. Deliver the website creation form, draft persistence, publication action, and protected published details together. ## Acceptance criteria - Eligible material owners or collaborators can create a private draft. Its creator is the initial owner and organizer. - Drafts may omit publication fields and emit no discovery announcement. Only the current owner and current accepted organizers can view them. - An organizer can schedule a block or unpartitioned package directly, without creating a complete tournament hierarchy. - Publication requires selected material, one definite start, an explicitly entered minimum tester count, and expected duration in elapsed minutes. - Maximum capacity is optional and defaults to no limit. When provided, it cannot be below minimum quorum. - Automatic approval is the initial registration mode. Organizers can select manual approval before publication. - Description input supports ordinary text, paragraphs, and line breaks. Website announcements format that text without interpreting user HTML or Markdown. - Difficulty and target audience are optional text. Material language remains separate from the Russian-first interface language. - Before publication, warn about overlaps with every visible published non-cancelled test. Compare start through expected end. Touching intervals do not overlap. The warning does not prevent publication. - Reject nonexistent local start times. For repeated local times, require an explicit occurrence and display both UTC offsets. - Display dates, start, end, and deadlines in the recipient's saved named timezone, with the applicable UTC offset and both dates for overnight tests. - Published tests are visible to signed-in users. No private, unlisted, or invitation-only published mode exists initially. - Explain that first publication makes associated title, format, tournament links, and part names searchable by signed-in users. Later cancellation does not reverse this visibility. - Publication can succeed without meeting links and shows a pending-link state. ## Validation Exercise incomplete drafts, unauthorized reads, DST gaps and folds, elapsed duration across offset changes, touching intervals, and publication with no links. Check API schemas and generated-client compatibility. Use a browser workflow to publish without loading the full calendar. Construct current-role fixtures where the original creator has no owner or organizer role. Their private-draft read must fail. Publish an unpartitioned package without artificial child blocks. ## Dependencies - [#39: Let material owners invite collaborators and control group reuse](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/39). Provides material access and new-test permissions. - [#20: Display dates and deadlines in each user's saved timezone](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/20). Provides saved named timezones and explicit date display. ## Related work - [#56: Manage organizer-supplied access links for tests](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/56) - [#47: Manage test co-organizers through accepted invitations](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/47) - [#57: Preserve bookings and prevent stale overwrites when test details change](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/57) - [#52: Register individual testers with approval, tentative status, and capacity checks](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/52) - [#55: Announce matching tests once and combine deferred discoveries into digests](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/55)
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
viacheslavshuka/quorum#44
No description provided.