bcquality/microsoft/knowledge/testing/use-testpage-editable-to-verify-field-editability.md
Michael Dieringer e538664a50 Address Jesper Schulz-Wedde's review on PR #158
- use-generateguid-for-unique-test-fixture-values.md: GenerateGUID()
  is a Code[10] number-series value, not a real GUID; truncating it
  with CopyStr for a shorter field cuts off the changing digits. Point
  to GenerateRandomCode/GenerateRandomCodeWithLength/GenerateRandomXMLText
  instead, which verify uniqueness against the actual table.
- Split use-testpage-visible-enabled-to-verify-field-ui-state.md: drop
  its editability claim (the sample opens with OpenView() and asserts
  Enabled(), which verifies enabled state, not editability — Editable()
  and Enabled() are distinct TestField methods). New companion article
  use-testpage-editable-to-verify-field-editability.md covers Editable()
  with OpenEdit() specifically.
- Wire GenerateGUID/CopyStr and TestPage Visible/Enabled/Editable cues
  into al-testing-review.md, and the Item Ledger Entry/Last Shipping No.
  posting cue into al-data-modeling-review.md.

The Item Ledger Entry article itself was independently verified against
current BCApps source and needs no changes.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-21 22:34:40 +02:00

1.2 KiB

bc-version domain keywords technologies countries application-area
all
testing
testpage
editable
openedit
ui-state
field-verification
al
w1
all

Verify field editability with TestPage.Editable(), opened in edit mode

Description

Whether a field can actually be changed is a distinct state from whether it is shown or enabled — Editable() and Enabled() are separate TestField functions. Verifying editability also requires opening the TestPage with OpenEdit(), not OpenView(): OpenView() opens the page in view mode, so it does not exercise the field's own conditional editability logic the way an actual edit-mode session does.

Best Practice

Open the TestPage with OpenEdit(), navigate to the relevant record, then assert against TestPageField.Editable() to verify whether the field can be changed under the given precondition.

See sample: use-testpage-editable-to-verify-field-editability.good.al.

Anti Pattern

Asserting Enabled() (or checking nothing at all) when the actual claim is about editability, or opening the page with OpenView() when the field's editability depends on business logic that only applies in edit mode.

See sample: use-testpage-editable-to-verify-field-editability.bad.al.