mirror of
https://github.com/microsoft/BCQuality.git
synced 2026-10-05 14:46:55 +01:00
Give the table-relation-test fixtures a real relation to exclude and one to protect
The "Category Code" field had no TableRelation at all, so the good
subscriber's RemoveTableRelation call targeted metadata that never
existed - a no-op. Added a real TableRelation to "Sample Setup" on
that field (the one known exception to exclude) and a second,
ordinary self-referencing relation ("Parent No." -> "Sample
Header"."No.") with no exception. The good fixture now removes only
the first; the bad fixture's table-wide removal (field/related
table/field all 0) now demonstrably also strips the second, showing
the actual anti-pattern instead of removing nothing meaningful.
This commit is contained in:
parent
e3d9b8eb25
commit
89f648928f
2 changed files with 28 additions and 6 deletions
|
|
@ -16,7 +16,14 @@ table 50145 "Sample Header"
|
|||
fields
|
||||
{
|
||||
field(1; "No."; Code[20]) { }
|
||||
field(10; "Category Code"; Code[20]) { }
|
||||
field(10; "Category Code"; Code[10])
|
||||
{
|
||||
TableRelation = "Sample Setup"."Primary Key";
|
||||
}
|
||||
field(11; "Parent No."; Code[20])
|
||||
{
|
||||
TableRelation = "Sample Header"."No.";
|
||||
}
|
||||
}
|
||||
keys
|
||||
{
|
||||
|
|
@ -31,7 +38,10 @@ codeunit 50141 "Sample Table Relation Test Ext"
|
|||
var
|
||||
TableRelationTest: Codeunit "Table Relation Test";
|
||||
begin
|
||||
// Removes every relation on the whole table, not just the one known exception
|
||||
// Removes every relation on the whole table (field/related table/
|
||||
// related field all 0), not just the one known exception - this
|
||||
// also strips "Parent No." -> "Sample Header"."No.", which had no
|
||||
// exception and should have stayed covered by the standard test.
|
||||
TableRelationTest.RemoveTableRelation(TableRelationsMetadata, Database::"Sample Header", 0, 0, 0);
|
||||
end;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,10 +16,20 @@ table 50145 "Sample Header"
|
|||
fields
|
||||
{
|
||||
field(1; "No."; Code[20]) { }
|
||||
// A known exception: this field is allowed to reference "Sample
|
||||
// Setup" loosely (no TableRelation enforced here on purpose), so
|
||||
// the standard Table Relation Test would otherwise reject it.
|
||||
field(10; "Category Code"; Code[20]) { }
|
||||
// A known exception: "Category Code" predates "Sample Setup" and
|
||||
// can carry a value that no longer resolves to a real row there,
|
||||
// so the standard Table Relation Test would otherwise reject it -
|
||||
// excluded via OnAfterRemoveTableRelation below.
|
||||
field(10; "Category Code"; Code[10])
|
||||
{
|
||||
TableRelation = "Sample Setup"."Primary Key";
|
||||
}
|
||||
// An ordinary relation with no exception - ExcludeSampleFieldFrom
|
||||
// TableRelationTest below must leave this one checked.
|
||||
field(11; "Parent No."; Code[20])
|
||||
{
|
||||
TableRelation = "Sample Header"."No.";
|
||||
}
|
||||
}
|
||||
keys
|
||||
{
|
||||
|
|
@ -34,6 +44,8 @@ codeunit 50141 "Sample Table Relation Test Ext"
|
|||
var
|
||||
TableRelationTest: Codeunit "Table Relation Test";
|
||||
begin
|
||||
// Removes only the one known exception. "Parent No." -> "Sample
|
||||
// Header"."No." is untouched and stays covered by the standard test.
|
||||
TableRelationTest.RemoveTableRelation(TableRelationsMetadata, Database::"Sample Header", 10, Database::"Sample Setup", 1);
|
||||
end;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue