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
|
fields
|
||||||
{
|
{
|
||||||
field(1; "No."; Code[20]) { }
|
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
|
keys
|
||||||
{
|
{
|
||||||
|
|
@ -31,7 +38,10 @@ codeunit 50141 "Sample Table Relation Test Ext"
|
||||||
var
|
var
|
||||||
TableRelationTest: Codeunit "Table Relation Test";
|
TableRelationTest: Codeunit "Table Relation Test";
|
||||||
begin
|
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);
|
TableRelationTest.RemoveTableRelation(TableRelationsMetadata, Database::"Sample Header", 0, 0, 0);
|
||||||
end;
|
end;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,10 +16,20 @@ table 50145 "Sample Header"
|
||||||
fields
|
fields
|
||||||
{
|
{
|
||||||
field(1; "No."; Code[20]) { }
|
field(1; "No."; Code[20]) { }
|
||||||
// A known exception: this field is allowed to reference "Sample
|
// A known exception: "Category Code" predates "Sample Setup" and
|
||||||
// Setup" loosely (no TableRelation enforced here on purpose), so
|
// can carry a value that no longer resolves to a real row there,
|
||||||
// the standard Table Relation Test would otherwise reject it.
|
// so the standard Table Relation Test would otherwise reject it -
|
||||||
field(10; "Category Code"; Code[20]) { }
|
// 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
|
keys
|
||||||
{
|
{
|
||||||
|
|
@ -34,6 +44,8 @@ codeunit 50141 "Sample Table Relation Test Ext"
|
||||||
var
|
var
|
||||||
TableRelationTest: Codeunit "Table Relation Test";
|
TableRelationTest: Codeunit "Table Relation Test";
|
||||||
begin
|
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);
|
TableRelationTest.RemoveTableRelation(TableRelationsMetadata, Database::"Sample Header", 10, Database::"Sample Setup", 1);
|
||||||
end;
|
end;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue