bcquality/microsoft/knowledge/testing/recordref-open-temp-parameter-defeats-real-table-checks.bad.al
Michael Dieringer 01967ff808 Address review: TableRelation validation carve-out, RecordRef nits
- tablerelation: fields with ValidateTableRelation/TestTableRelation = false
  are skipped by codeunit 134926 and may be longer (filter/totaling
  fields); shorter is still a finding. Add Code/Text type rule, BaseApp
  evidence, a ValidateTableRelation = false filter field to the good
  fixture, and the carve-out to the data-modeling cue.
- recordref: add FindLast/Next, relabel SplitLocalTableFilter as filter
  splitting, mark fixtures as test-library-style helpers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 23:33:12 +02:00

22 lines
912 B
AL

// Test-library-style helper (uses "Library - Utility"); not a Subtype = Test codeunit.
codeunit 50150 "Sample Payment Terms Codes"
{
procedure GenerateUnusedPaymentTermsCode(): Code[10]
var
PaymentTerms: Record "Payment Terms";
LibraryUtility: Codeunit "Library - Utility";
RecRef: RecordRef;
FieldRef: FieldRef;
NewCode: Code[10];
begin
// Temp = true: RecRef is an empty temporary instance, so IsEmpty()
// is true on the first pass and existing Payment Terms are never seen.
RecRef.Open(Database::"Payment Terms", true, CompanyName());
FieldRef := RecRef.Field(PaymentTerms.FieldNo(Code));
repeat
NewCode := CopyStr(LibraryUtility.GenerateRandomXMLText(MaxStrLen(NewCode)), 1, MaxStrLen(NewCode));
FieldRef.SetRange(NewCode);
until RecRef.IsEmpty();
exit(NewCode);
end;
}