mirror of
https://github.com/microsoft/BCQuality.git
synced 2026-08-06 17:36:53 +01:00
* Add testing knowledge: UI handlers, table relations, asserterror, fixtures (P1+P2) Six BC-specific testing-domain knowledge articles in community/knowledge/testing/, each with .good.al/.bad.al samples: - ui-calls-require-test-handlers - tablerelation-requires-prerequisite-records - handlers-enqueue-never-assert - handlerfunctions-attribute-must-match-ui-path - asserterror-needs-expectederror-and-code - use-library-codeunits-for-test-fixtures Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Move testing knowledge from community to microsoft layer Relocates the six P1+P2 testing-domain articles (18 files: .md + .good.al + .bad.al each) from community/knowledge/testing/ to microsoft/knowledge/testing/ per maintainer request. Pure git-mv rename; no content or frontmatter changes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address review: merge handler articles, adopt enqueue-driven pattern Respond to @nikolakukrika's review on #62: - Merge ui-calls-require-test-handlers, handlerfunctions-attribute-must-match-ui-path and handlers-enqueue-never-assert into a single ui-handlers-in-tests article. - Adopt the enqueue-from-test / dequeue-and-assert-in-handler pattern using Assert.ExpectedConfirm/ExpectedMessage (substring match), with Initialize() clearing LibraryVariableStorage and AssertEmpty() proving exact call counts. - asserterror sample now uses Assert.ExpectedTestFieldError + FieldCaption instead of hardcoded message/code; article text points to the library helpers. - Drop the tablerelation article and fold its test-relevant ordering point (relations checked on Validate/Insert(true); build parents first) into use-library-codeunits-for-test-fixtures. Article count 198 -> 195. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Jesper Schulz-Wedde <jesper.schulzwedde@microsoft.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
57 lines
2.1 KiB
AL
57 lines
2.1 KiB
AL
codeunit 50400 "Test UI Handlers Good"
|
|
{
|
|
Subtype = Test;
|
|
|
|
[Test]
|
|
[HandlerFunctions('ConfirmHandler,PostMessageHandler')]
|
|
procedure PostDocumentConfirmsAndMessages()
|
|
begin
|
|
Initialize();
|
|
|
|
// [GIVEN] the test enqueues, in interaction order, what each handler
|
|
// will see and how it should answer: the Confirm's expected
|
|
// question plus the reply to return, then the expected Message.
|
|
LibraryVariableStorage.Enqueue('Post this document?'); // expected question (substring)
|
|
LibraryVariableStorage.Enqueue(true); // reply ConfirmHandler returns
|
|
LibraryVariableStorage.Enqueue('Posting completed.'); // expected message (substring)
|
|
|
|
// [WHEN] the code under test raises the Confirm and then the Message
|
|
RunPostingThatConfirmsAndMessages();
|
|
|
|
// [THEN] every enqueued expectation was consumed exactly once
|
|
LibraryVariableStorage.AssertEmpty();
|
|
end;
|
|
|
|
local procedure Initialize()
|
|
begin
|
|
// Clear leftover values so a value leaked by an earlier test cannot
|
|
// cascade into this one.
|
|
LibraryVariableStorage.Clear();
|
|
end;
|
|
|
|
local procedure RunPostingThatConfirmsAndMessages()
|
|
begin
|
|
// Stands in for the production routine that confirms, then messages.
|
|
if Confirm('Post this document?', false) then
|
|
Message('Posting completed.');
|
|
end;
|
|
|
|
[ConfirmHandler]
|
|
procedure ConfirmHandler(Question: Text[1024]; var Reply: Boolean)
|
|
begin
|
|
// Verify the RIGHT dialog fired (substring match), then return the
|
|
// reply the test enqueued for it.
|
|
Assert.ExpectedConfirm(LibraryVariableStorage.DequeueText(), Question);
|
|
Reply := LibraryVariableStorage.DequeueBoolean();
|
|
end;
|
|
|
|
[MessageHandler]
|
|
procedure PostMessageHandler(Message: Text[1024])
|
|
begin
|
|
Assert.ExpectedMessage(LibraryVariableStorage.DequeueText(), Message);
|
|
end;
|
|
|
|
var
|
|
Assert: Codeunit "Library Assert";
|
|
LibraryVariableStorage: Codeunit "Library - Variable Storage";
|
|
}
|