Skip to content

feat(example-sets): an object may be a draft of a portal subject - #4757

Open
rubenvdlinde wants to merge 2 commits into
developmentfrom
feat/example-set-draft-objects
Open

rubenvdlinde wants to merge 2 commits into
developmentfrom
feat/example-set-draft-objects

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

This PR lets an example set seed a saved portal form. An object's data may now declare @self: {status: "draft", owner: "<scope>:<reference>"}. The change is example-set-draft-objects, and its spec is included.

  • Install writes such an object in status draft, owned by that scoped owner. That is how FormSubmitService::saveDraft() keeps a saved portal form (decisions 180 and 195).
  • The check refuses a @self with any other key, any status other than draft, and an owner that DraftOwner::scoped() refuses. Nothing is written when it refuses.
  • @self never reaches the schema validator.
  • The logic lives in a new ExampleSetDraft. ExampleSetStore::validate() and create() use it.

Why: portaliq's FormulierHervatten board shows a resident reopening a form they saved earlier. With this change the Zuiddrecht set can give Sanne one saved Woo request.

Verified:

  • PHPUnit tests/Unit/Service/ExampleSet/ passes: 143 tests, including two new store tests, one for the draft write and one for the four refusals.
  • phpstan is OK and phpmd is clean.
  • phpcs is clean on the lib files, with no new findings in the test file.

🤖 Generated with Claude Code

An object's data may declare @self: {status: draft, owner:
<scope>:<reference>}. Install writes it in status draft for that scoped
owner, as a saved portal form is (decisions 180, 195); the check refuses
any other @self key or status and an owner DraftOwner::scoped() refuses,
and @self never reaches the schema validator.

Assisted-by: ClaudeCode:claude-opus-5-5
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/openregister @ b8a669b

Check PHP Vue Security License Tests
lint ✅
phpcs ✅
phpmd ✅
psalm ✅
phpstan ✅
phpmetrics ✅
eslint ✅
stylelint ✅
build ✅
check-specs ✅
test-l10n ✅
test-l10n-parity ✅
format ✅
check-schema-l10n ✅
composer ✅ ✅ 173/173
npm ✅ ✅ 648/648
app:check-code ⏭️
info.xml ✅
REUSE ✅
lockfile sync ✅
PHPUnit ❌
Newman ❌
Playwright ⏭️ deferred: E2E runs locally and on the promotion path only. This pull request targets development, so the suite is asked once per promotion into beta and main rather than once per push per open pull request. Run it locally with npx playwright test, or from the Actions tab on a branch with no open pull request into development.
Hydra gates ❌

Quality workflow — 2026-10-21 19:11 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/openregister @ 60aefaa

Check PHP Vue Security License Tests
lint ✅
phpcs ✅
phpmd ❌
psalm ✅
phpstan ✅
phpmetrics ✅
eslint ✅
stylelint ✅
build ✅
check-specs ✅
test-l10n ✅
test-l10n-parity ✅
format ✅
check-schema-l10n ✅
composer ✅ ✅ 173/173
npm ✅ ✅ 648/648
app:check-code ⏭️
info.xml ✅
REUSE ✅
lockfile sync ✅
PHPUnit ❌
Newman ❌
Playwright ⏭️ deferred: E2E runs locally and on the promotion path only. This pull request targets development, so the suite is asked once per promotion into beta and main rather than once per push per open pull request. Run it locally with npx playwright test, or from the Actions tab on a branch with no open pull request into development.
Hydra gates ❌

Quality workflow — 2026-10-21 21:08 UTC

Download the full PDF report from the workflow artifacts.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant