Skip to content

Commit

Permalink
Test Runner - Fixing wrong update of AL tests (#2831)
Browse files Browse the repository at this point in the history
#### Summary 
Fixing Update Test method does not work with multiple codeunits

#### Work Item(s)
Fixes
[AB#557808](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/557808)
  • Loading branch information
nikolakukrika authored Jan 24, 2025
1 parent d93a886 commit 677f001
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -273,35 +273,38 @@ codeunit 130458 "Test Inputs Management"
local procedure InsertDataInputLine(DataOnlyTestInput: JsonObject; var TestInputGroup: Record "Test Input Group")
var
TestInput: Record "Test Input";
DataNameJsonToken: JsonToken;
DescriptionJsonToken: JsonToken;
TestInputJsonToken: JsonToken;
TestInputText: Text;
begin
TestInput."Test Input Group Code" := TestInputGroup.Code;

if not DataOnlyTestInput.Get(TestInputTok, TestInputJsonToken) then
TestInputJsonToken := DataOnlyTestInput.AsToken()
else begin
if DataOnlyTestInput.Get(DataNameTok, DataNameJsonToken) then
TestInput.Code := CopyStr(DataNameJsonToken.AsValue().AsText(), 1, MaxStrLen(TestInput.Code));
TestInputJsonToken := DataOnlyTestInput.AsToken();

if DataOnlyTestInput.Get(DescriptionTok, DescriptionJsonToken) then
TestInput.Description := CopyStr(DescriptionJsonToken.AsValue().AsText(), 1, MaxStrLen(TestInput.Description))
end;

if TestInput.Code = '' then
AssignTestInputName(TestInput, TestInputGroup);

if TestInput.Description = '' then
TestInput.Description := TestInput.Code;
AssignTestInputCode(TestInput, TestInputGroup, TestInputJsonToken.AsObject());

TestInput.Insert(true);

TestInputJsonToken.WriteTo(TestInputText);
TestInput.SetInput(TestInput, TestInputText);
end;

local procedure AssignTestInputCode(var TestInput: Record "Test Input"; var TestInputGroup: Record "Test Input Group"; TestInputJsonToken: JsonObject)
var
DataNameJsonToken: JsonToken;
DescriptionJsonToken: JsonToken;
begin
if TestInputJsonToken.Get(DataNameTok, DataNameJsonToken) then
TestInput.Code := CopyStr(DataNameJsonToken.AsValue().AsText(), 1, MaxStrLen(TestInput.Code))
else
AssignTestInputName(TestInput, TestInputGroup);

if TestInputJsonToken.Get(DescriptionTok, DescriptionJsonToken) then
TestInput.Description := CopyStr(DescriptionJsonToken.AsValue().AsText(), 1, MaxStrLen(TestInput.Description))
else
TestInput.Description := TestInput.Code;
end;

procedure InsertTestMethodLines(var TempTestMethodLine: Record "Test Method Line" temporary; var ALTestSuite: Record "AL Test Suite")
var
ExpandDataDrivenTests: Codeunit "Expand Data Driven Tests";
Expand Down
20 changes: 13 additions & 7 deletions src/Tools/Test Framework/Test Runner/src/TestSuiteMgt.Codeunit.al
Original file line number Diff line number Diff line change
Expand Up @@ -403,14 +403,19 @@ codeunit 130456 "Test Suite Mgt."
Dialog.Update(2, format(Counter) + '/' + format(TotalCount) + ' (' + format(round(Counter / TotalCount * 100, 1)) + '%)');
end;

TempTestMethodLine.TransferFields(TestMethodLine);
TempTestMethodLine.Insert();
ExpandDataDrivenTests.SetDataDrivenTests(TempTestMethodLine);
BindSubscription(ExpandDataDrivenTests);
if TestMethodLine."Data Input Group Code" <> '' then begin
TempTestMethodLine.TransferFields(TestMethodLine);
TempTestMethodLine.Insert();
ExpandDataDrivenTests.SetDataDrivenTests(TempTestMethodLine);
BindSubscription(ExpandDataDrivenTests);
end;

TestRunnerGetMethods.SetUpdateTests(true);
TestRunnerGetMethods.Run(TestMethodLine);
UnbindSubscription(ExpandDataDrivenTests);
TempTestMethodLine.DeleteAll();
if TempTestMethodLine."Data Input Group Code" <> '' then begin
UnbindSubscription(ExpandDataDrivenTests);
TempTestMethodLine.DeleteAll();
end;
until TestMethodLine.Next() = 0;

if GuiAllowed() then
Expand Down Expand Up @@ -481,7 +486,8 @@ codeunit 130456 "Test Suite Mgt."
CodeunitTestMethodLine.SetRange("Test Codeunit", TestMethodLine."Test Codeunit");
CodeunitTestMethodLine.SetRange("Line Type", TestMethodLine."Line Type"::Codeunit);
CodeunitTestMethodLine.SetAscending("Line No.", true);
CodeunitTestMethodLine.FindLast();
if not CodeunitTestMethodLine.FindLast() then
CodeunitTestMethodLine."Line No." := TestMethodLine."Line No.";

NextCodeunitTestMethodLine.SetFilter("Line No.", '>%1', TestMethodLine."Line No.");
NextCodeunitTestMethodLine.SetRange("Test Suite", TestMethodLine."Test Suite");
Expand Down

0 comments on commit 677f001

Please sign in to comment.