Skip to content

ATS-ACC-PRD-005Withdraw a product from sale and restore it: Capability Test Specification

Markdown

ATS-ACC-PRD-005

Withdraw a product from sale and restore it: Capability Test Specification

Markdown
  • DocumentProposed

KindAcceptance test setProduct areaAccountingModuleProductsRevision3

Read atservices-accounting f47cb263react-console baf6dae3

Coverage

  • Rule gap: FND-ACC-PRD-054
  • Transition covered
  • Validation covered
  • Permission covered
  • Edge covered
  • Failure gap: FND-ACC-PRD-054
  • Boundary gap: FND-ACC-PRD-054
  • Concurrency gap: FND-ACC-PRD-054
  • Invariant gap: FND-ACC-PRD-054
  • Interaction covered

Test Scenarios

9 scenarios proving CAP-ACC-PRD-005; 6 bound to an existing test.

01 Withdrawal and return advance catalogue statustransitionbrowsertest
Proves
BR-CAP-ACC-PRD-005-01
Preconditions
An active product is available in the grid.
Steps
Confirm Deactivate followed by Activate.
Expected
Each change advances the version and produces the selected status.
Data
An active product is available in the grid.
Bound to
Source
react-console:acceptance/accounting/playwright/journeys/products/ACT-ACC-0107.spec.ts#ACT-ACC-0107
02 Retirement changes status oncetransitionunitnegativetest
Proves
BR-CAP-ACC-PRD-005-02
Preconditions
An active product is available.
Steps
Retire it and repeat retirement.
Expected
The first action changes status at the next version; the repeat is refused.
Data
An active product is available.
Bound to
Source
services-accounting:modules/products/tests/integration/services/persistence/products.integration.spec.js#retires the product at version 2, changing nothing else
03 Reactivation supports both withdrawn statestransitionunitnegativetest
Proves
BR-CAP-ACC-PRD-005-03
Preconditions
One product is inactive and another retired.
Steps
Reactivate both and also attempt reactivation of an active product.
Expected
Withdrawn products become active; the active-product attempt fails.
Data
One product is inactive and another retired.
Bound to
Source
services-accounting:modules/products/tests/integration/services/persistence/products.integration.spec.js#reactivates an inactive product
04 Lifecycle writes require the read versionvalidationapinegativetest
Proves
BR-CAP-ACC-PRD-005-04
Preconditions
A product is at version two.
Steps
Request retirement without a version and with version one.
Expected
Both requests fail.
Data
A product is at version two.
Bound to
services-accounting:modules/products/tests/e2e/products.e2e.spec.js#answers 400 to a lifecycle request without the version read
Source
services-accounting:modules/products/tests/e2e/products.e2e.spec.js#answers 400 to a lifecycle request without the version read
05 Update locks stop lifecycle changespermissionunitnegativetest
Proves
BR-CAP-ACC-PRD-005-05
Preconditions
A product is locked against updates.
Steps
Attempt retirement.
Expected
The refusal identifies the lock.
Data
A product is locked against updates.
Bound to
services-accounting:modules/products/tests/unit/rules/product-rules.spec.js#refuses a retire of a record locked against updates, naming the lock
Source
services-accounting:modules/products/tests/integration/services/persistence/products.integration.spec.js#names the lock when a locked product is retired
06 Retirement needs update authoritypermissionapinegativetest
Proves
BR-CAP-ACC-PRD-005-06
Preconditions
A product reader is available.
Steps
Request retirement.
Expected
The caller is denied.
Data
A product reader is available.
Bound to
Source
services-accounting:modules/products/tests/e2e/products-security.e2e.spec.js#is refused retiring a product
07 Inactive retirement and locked restoration are checkededgeapinegativeproposed
Proves
BR-CAP-ACC-PRD-005-02 BR-CAP-ACC-PRD-005-03 BR-CAP-ACC-PRD-005-05
Preconditions
One product is inactive and another retired product has combined protection.
Steps
Retire the inactive product, then try to reactivate the protected retired product.
Expected
Retirement succeeds without replacing configuration; restoration refuses the protected record.
Data
One product is inactive and another retired product has combined protection.
Source
services-accounting:modules/products/tests/integration/services/persistence/products.integration.spec.js#retires the product at version 2, changing nothing else; services-accounting:modules/products/tests/integration/services/persistence/products.integration.spec.js#reactivates an inactive product; services-accounting:modules/products/tests/integration/services/persistence/products.integration.spec.js#names the lock when a locked product is retired
08 Restoration requires update authoritypermissionapinegativeproposed
Proves
BR-CAP-ACC-PRD-005-06
Preconditions
A retired product exists and the caller can read products but cannot update them.
Steps
Request reactivation and read the product with an authorized reader.
Expected
Access is refused and retirement remains unchanged.
Data
A retired product exists and the caller can read products but cannot update them.
Source
services-accounting:modules/products/tests/e2e/products-security.e2e.spec.js#is refused retiring a product
09 Retiring a held component changes admission without removing the relationshipinteractionapinegativeproposed
Proves
BR-CAP-ACC-PRD-005-02 BR-CAP-ACC-PRD-004-04 BR-CAP-ACC-PRD-011-03 BR-CAP-ACC-PRD-006-01
Preconditions
A bundle holds one active component and a second active product is not included.
Steps
Retire both products; try ordinary correction, resave the held component, add the newly retired product, and delete the held component.
Expected
Ordinary correction and new inclusion fail; retained inclusion succeeds and its deletion remains blocked.
Data
A bundle holds one active component and a second active product is not included.
Source
services-accounting:modules/products/tests/integration/services/persistence/products.integration.spec.js#retires the product at version 2, changing nothing else; services-accounting:modules/products/tests/e2e/products.e2e.spec.js#answers 409 to replacing a retired product; services-accounting:modules/products/tests/integration/services/persistence/products.integration.spec.js#keeps a retired component the bundle already holds when a replacement resends it, and refuses a new retired one; services-accounting:modules/products/tests/integration/services/persistence/products.integration.spec.js#refuses deleting a product another product bundles, 409, and keeps it

The Markdown files under specs/ in rhythmsoftware/rhythm-v2-docs are the canonical source of truth. This reader is a generated, read-only projection of them.