The structured coverage map distinguishes specified examples from missing category coverage. Every required rule names its proving scenarios in the structured rule coverage register. A scenario’s executable binding applies only to the cited assertions; the transition and permission registers retain the combinations that still need explicit proof.
Save forty-five-day customer terms, retrieve them through Commerce’s billing function, create a bill without explicit terms and inspect its current financial standing. Create another bill with an explicit due date.
The first bill uses the saved default and the second retains the explicit date; standing classifies each debt from its resolved deadline; the service read remains separately authorized. The complete chain remains proposed until one executable run proves its combined outcomes.
Coverage
Rulegap: FND-ACC-TRX-084
Transitioncovered
Validationcovered
Permissioncovered
Edgegap: FND-ACC-TRX-084
Failurecovered
Boundarycovered
Concurrencycovered
Invariantcovered
Interactioncovered
Test Scenarios
9 scenarios proving CAP-ACC-TRX-019; 7 bound to an existing test.
01Terms defaults and uniqueness remain workspace-scopedboundaryapitest
One party lacks local terms and another workspace has the same party identity.
Steps
[
{
"do": "Read defaults and attempt duplicate local creation.",
"provenance": "test",
"source": "services-accounting:modules/transactions/tests/e2e/customer-terms.e2e.spec.js#it answers the defaults, saying so, before Acme has a record"
}
]
Expected
Marked defaults remain isolated and a second saved record is rejected.
[
{
"do": "Create, duplicate-create, stale-replace and validly replace with omissions.",
"provenance": "test",
"source": "services-accounting:modules/transactions/tests/integration/services/persistence/customer-terms.integration.spec.js#it refuses a replacement at a stale version, writing nothing"
}
]
Expected
Creation starts at version one, invalid writes fail and valid replacement advances while resetting absent settings.
[
{
"do": "Use each as default and submit an unknown collection standing.",
"provenance": "test",
"source": "services-accounting:modules/transactions/tests/integration/services/persistence/customer-terms.integration.spec.js#it refuses inactive terms, naming the field"
}
]
Expected
Each attempted save refuses the invalid configuration.
[
{
"do": "Delete with an obsolete and then current version and read again.",
"provenance": "test",
"source": "services-accounting:modules/transactions/tests/integration/services/persistence/customer-terms.integration.spec.js#it refuses a delete at a stale version, keeping the record"
}
]
Expected
Obsolete removal preserves the record and valid removal restores defaults.
[
{
"do": "Delete that definition.",
"provenance": "test",
"source": "services-accounting:modules/transactions/tests/integration/services/persistence/customer-terms.integration.spec.js#it keeps terms a party names from being deleted (409, the key)"
}
]
[
{
"do": "Read as both, then write and remove as reader.",
"provenance": "test",
"source": "services-accounting:modules/transactions/tests/e2e/customer-terms.e2e.spec.js#it refuses the write and the delete without accounting.customer-terms.manage (403), the reader’s key not enough"
}
]
Expected
Only the reader inspects, and its mutations are denied.
An isolated workspace has eligible customers, products, matching accounts, an open period and two open batches. Each branch owns separate financial records.
Steps
[
{
"do": "Save forty-five-day customer terms, retrieve them through Commerce’s billing function, create a bill without explicit terms and inspect its current financial standing. Create another bill with an explicit due date.",
"provenance": "proposed",
"source": "services-accounting:modules/transactions/tests/e2e/customer-terms.e2e.spec.js#it answers the defaults, saying so, before Acme has a record; services-accounting:modules/transactions/tests/integration/services/persistence/customer-terms.integration.spec.js#it refuses a replacement at a stale version, writing nothing; services-accounting:modules/transactions/tests/e2e/customer-terms.e2e.spec.js#it refuses the write and the delete without accounting.customer-terms.manage (403), the reader’s key not enough; rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-019-record-a-customer-s-collection-terms.md#BR-CAP-ACC-TRX-019-01; rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-019-record-a-customer-s-collection-terms.md#BR-CAP-ACC-TRX-019-02; rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-019-record-a-customer-s-collection-terms.md#BR-CAP-ACC-TRX-019-06; rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-001-bill-a-customer-with-an-invoice.md#BR-CAP-ACC-TRX-001-05; rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-017-know-where-a-customer-stands.md#BR-CAP-ACC-TRX-017-02; rhythm-v2-docs:specs/accounting/transactions/planning/capabilities/CAP-ACC-TRX-020-let-commerce-and-the-processor-work-with-accounting-safely.md#BR-CAP-ACC-TRX-020-01"
}
]
Expected
The first bill uses the saved default and the second retains the explicit date; standing classifies each debt from its resolved deadline; the service read remains separately authorized.
Data
Separate command keys, two customers, invoice lines, receipts and credit; controlled processor outcomes and a fixed calendar where the branch requires them.
The customer has no saved override and fifty-one distinct supported collection options are available.
Steps
[
{
"do": "Save an empty allow-list, replace it with fifty unique options, then attempt fifty-one options and a duplicate option.",
"provenance": "proposed",
"source": "services-accounting:modules/transactions/services/persistence/customer-terms.ts; services-accounting:modules/transactions/db/customer-terms.table.ts; services-accounting:modules/transactions/tests/integration/services/persistence/customer-terms.integration.spec.js#it stores an empty allow-list as no allow-list; services-accounting:modules/transactions/aws/api/customer-terms.schemas.ts"
}
]
Expected
Empty selection becomes unrestricted; fifty unique options are retained; excessive and duplicate selections are refused without replacing the last valid record.
Data
Branch-owned records in one configured workspace, valid accounting context and controlled requests at the stated boundary.