Skip to content

fix(organisations): the concept organisations widget lists draft organisations and accepts them - #1186

Merged
rubenvdlinde merged 2 commits into
developmentfrom
fix/concept-organisaties-widget-status
Sep 29, 2026
Merged

rubenvdlinde merged 2 commits into
developmentfrom
fix/concept-organisaties-widget-status

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

Defect fix in shipped code, not a parity build. The org-status row stays decided-no (phase A, #1172); this only repairs the widget that already ships.

What was broken

ConceptOrganisatiesWidget filtered organisations on status concept and accepted them by writing actief. The organization schema's status enum is Draft, Active, Inactive, merged (default Draft), so the widget listed nothing and every accept would have been refused by OpenRegister's validator.

Fix

  • src/utils/organisationStatus.js: CONCEPT_STATUS = 'Draft', ACCEPTED_STATUS = 'Active', isConceptOrganisation(), acceptPayload().
  • The widget filters and patches through those helpers.
  • composer test:unit pointed at a missing tests/phpunit.xml; it now runs phpunit -c phpunit-unit.xml.

Tests (red first)

tests/vitest/organisationStatus.spec.js, written against the old values first: 3 of 4 red (expected [ 'Draft', 'Active', 'Inactive', …(1) ] to include 'concept', and the Ajv enum error on the accept payload). Green after the fix, plus a wiring test that reads the widget source and requires the helpers at the filter and the patch call. The accept payload is validated with Ajv against the real status property (type and enum) of lib/Settings/softwarecatalogus_register.json.

Live check

Dashboard, add the concept organisations widget. An organisation with status Draft is listed; Accept sets it to Active (PATCH 200) and it leaves the list.

Inherited, not fixed here

PHP code still reads actief in places (OrganizationSyncService counts LOWER(o.status) = 'actief', which an Active organisation does not match). Separate defect, not in this diff.

@SPEC openspec/specs/fe-organizations/spec.md

Gate run

check:strict 0, lint 0, stylelint 0, format 0, test:l10n 0, check:schema-l10n 0, check:l10n-js 0, check:manifest 0, check:vue-demi 0, jest 0, vitest 0, ci-gates (hydra-gates@main, full coverage) 0 (81/81). phpunit exit 2: the 20 inherited errors, identical by name to the lane baseline.

…nisations and accepts them as Active

The widget filtered on 'concept' and wrote 'actief'; neither is in the
organization status enum (Draft, Active, Inactive, merged), so it listed
nothing and every accept was refused. composer test:unit now points at
phpunit-unit.xml instead of the missing tests/phpunit.xml.
@rubenvdlinde
rubenvdlinde merged commit 1edd2ba into development Sep 29, 2026
37 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/stackiq @ c6d5264

Check PHP Vue Security License Tests
lint ✅
phpcs ✅
phpmd ✅
psalm ✅
phpstan ✅
phpmetrics ✅
eslint ✅
stylelint ✅
build ✅
check-manifest ✅
check-vue-demi ✅
test-l10n ✅
format ✅
check-schema-l10n ✅
check-l10n-js ✅
composer ✅ ✅ 130/130
npm ✅ ✅ 807/807
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 on any branch from the Actions tab, or locally with npx playwright test.
Hydra gates ✅

Quality workflow — 2026-09-29 16:56 UTC

Download the full PDF report from the workflow artifacts.

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