Skip to content

Commit

Permalink
test for batch processing
Browse files Browse the repository at this point in the history
  • Loading branch information
StefanMaron committed Jan 12, 2024
1 parent e9e9756 commit b6b3336
Show file tree
Hide file tree
Showing 12 changed files with 159 additions and 35 deletions.
22 changes: 21 additions & 1 deletion MSDyn365BC.Ntfy.Test/.vscode/launch.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,25 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "BC23-dev",
"type": "al",
"request": "launch",
"environmentType": "OnPrem",
"server": "http://BC23-dev",
"port": 7049,
"serverInstance": "BC",
"authentication": "UserPassword",
"breakOnError": "All",
"breakOnRecordWrite": "None",
"launchBrowser": true,
"enableSqlInformationDebugger": true,
"enableLongRunningSqlStatements": true,
"longRunningSqlStatementsThreshold": 500,
"numberOfSqlStatements": 10,
"tenant": "default",
"usePublicURLFromServer": true,
"schemaUpdateMode": "ForceSync"
}
]
}
}
26 changes: 0 additions & 26 deletions MSDyn365BC.Ntfy.Test/HelloWorld.Test.al

This file was deleted.

53 changes: 53 additions & 0 deletions MSDyn365BC.Ntfy.Test/TestBatchSend.Codeunit.al
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
codeunit 50000 "TestBatchSend"
{
Subtype = Test;

var
Assert: Codeunit "Library Assert";

[Test]
procedure TestCreateBodyGetsCalled()
var
NtfyEntry: Record NtfyEntryNTSTM temporary;
BatchSend: Codeunit BatchSendNtfysNTSTM;
RestWrapper: Codeunit RestWrapperTestBodyNTSTM;
begin
NtfyEntry.Init();
NtfyEntry.NtfyMessage := 'Hello World';
if not NtfyEntry.Insert() then;
asserterror BatchSend.SendRequests(NtfyEntry, RestWrapper);

Assert.ExpectedError('CreateBody was called');
end;

[Test]
procedure TestPostGetsCalled()
var
NtfyEntry: Record NtfyEntryNTSTM temporary;
BatchSend: Codeunit BatchSendNtfysNTSTM;
RestWrapper: Codeunit RestWrapperTestPostNTSTM;
begin
NtfyEntry.Init();
NtfyEntry.NtfyMessage := 'Hello World';
if not NtfyEntry.Insert() then;
asserterror BatchSend.SendRequests(NtfyEntry, RestWrapper);

Assert.ExpectedError(StrSubstNo('Post was called with RequestUri: %1', StrSubstNo('https://ntfy.sh/%1', NtfyEntry.NtfyTopic)));
end;

[Test]
procedure TestBodyGetsPassedToPostCorrectly()
var
NtfyEntry: Record NtfyEntryNTSTM temporary;
BatchSend: Codeunit BatchSendNtfysNTSTM;
RestWrapper: Codeunit RestWrapBodyPassNTSTM;
begin
NtfyEntry.Init();
NtfyEntry.NtfyMessage := 'Hello World';
if not NtfyEntry.Insert() then;
BatchSend.SendRequests(NtfyEntry, RestWrapper);
end;


}

8 changes: 7 additions & 1 deletion MSDyn365BC.Ntfy.Test/app.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,12 @@
"name": "Any",
"id": "e7320ebb-08b3-4406-b1ec-b4927d3e280b",
"version": "22.0.0.0"
},
{
"id": "57aaf99d-c3f2-4d57-96fb-2363ff53666b",
"name": "MSDyn365BC.Ntfy",
"publisher": "Stefan Maron Consulting",
"version": "1.0.0.0"
}
],
"screenshots": [],
Expand All @@ -41,4 +47,4 @@
"allowDownloadingSource": false,
"includeSourceInSymbolFile": false
}
}
}
18 changes: 18 additions & 0 deletions MSDyn365BC.Ntfy.Test/doubles/RestWrapBodyPassNTSTM.Codeunit.al
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
codeunit 50003 RestWrapBodyPassNTSTM implements IRestWrapperNTSTM
{
var
TempContentText: Text;

procedure CreateBody(Content: Text) HttpContent: Codeunit System.RestClient."Http Content"
begin
TempContentText := Content;
HttpContent.Create(Content);
end;

procedure Post(RequestUri: Text; Content: Codeunit System.RestClient."Http Content") HttpResponseMessage: Codeunit System.RestClient."Http Response Message"
var
Assert: Codeunit "Library Assert";
begin
Assert.AreEqual(TempContentText, Content.AsText(), 'Content is not the same');
end;
}
11 changes: 11 additions & 0 deletions MSDyn365BC.Ntfy.Test/doubles/RestWrapperTestBodyNTSTM.Codeunit.al
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
codeunit 50001 RestWrapperTestBodyNTSTM implements IRestWrapperNTSTM
{
procedure CreateBody(Content: Text) HttpContent: Codeunit System.RestClient."Http Content"
begin
Error('CreateBody was called');
end;

procedure Post(RequestUri: Text; Content: Codeunit System.RestClient."Http Content") HttpResponseMessage: Codeunit System.RestClient."Http Response Message"
begin
end;
}
11 changes: 11 additions & 0 deletions MSDyn365BC.Ntfy.Test/doubles/RestWrapperTestPostNTSTM.Codeunit.al
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
codeunit 50002 RestWrapperTestPostNTSTM implements IRestWrapperNTSTM
{
procedure CreateBody(Content: Text) HttpContent: Codeunit System.RestClient."Http Content"
begin
end;

procedure Post(RequestUri: Text; Content: Codeunit System.RestClient."Http Content") HttpResponseMessage: Codeunit System.RestClient."Http Response Message"
begin
Error('Post was called with RequestUri: %1', RequestUri);
end;
}
2 changes: 1 addition & 1 deletion MSDyn365BC.Ntfy/.vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@
"request": "launch",
"environmentType": "OnPrem",
"server": "http://BC23-dev",
"port": 7049,
"serverInstance": "BC",
"authentication": "UserPassword",
"startupObjectId": 22,
"breakOnError": "All",
"breakOnRecordWrite": "None",
"launchBrowser": true,
Expand Down
11 changes: 9 additions & 2 deletions MSDyn365BC.Ntfy/app.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,13 @@
"screenshots": [],
"platform": "1.0.0.0",
"application": "22.0.0.0",
"internalsVisibleTo": [
{
"id": "ae87fcc8-d66a-40c9-928e-efc6e9f7f2df",
"name": "MSDyn365BC.Ntfy.Test",
"publisher": "Stefan Maron Consulting"

Check warning on line 22 in MSDyn365BC.Ntfy/app.json

View workflow job for this annotation

GitHub Actions / Build . (Default) / . (Default)

AS0081 The InternalsVisibleTo setting will expose your internal objects to any extension with the given name, publisher, and ID. Access modifiers are not designed to be used as a security boundary, but for API development.
}
],
"idRanges": [
{
"from": 71179875,
Expand All @@ -30,7 +37,7 @@
],
"resourceExposurePolicy": {
"allowDebugging": true,
"allowDownloadingSource": false,
"includeSourceInSymbolFile": false
"allowDownloadingSource": true,
"includeSourceInSymbolFile": true
}
}
13 changes: 9 additions & 4 deletions MSDyn365BC.Ntfy/src/foundation/BatchSendNtfys.Codeunit.al
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,20 @@ codeunit 71179879 BatchSendNtfysNTSTM

trigger OnRun()
var
RestClient: Codeunit "Rest Client";
RestWrapper: Codeunit RestWrapperNTSTM;
begin
SendRequests(Rec, RestWrapper);
end;

internal procedure SendRequests(var Rec: Record NtfyEntryNTSTM; IRestWrapper: Interface IRestWrapperNTSTM)
var
Body: Codeunit "Http Content";
begin
Body.Create(Rec.NtfyMessage);
Body := IRestWrapper.CreateBody(Rec.NtfyMessage);

if Rec.FindSet() then
repeat
Clear(RestClient);
RestClient.Post(StrSubstNo('https://ntfy.sh/%1', Rec.NtfyTopic), Body);
IRestWrapper.Post(StrSubstNo('https://ntfy.sh/%1', Rec.NtfyTopic), Body);
until Rec.Next() = 0;
end;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
interface IRestWrapperNTSTM
{
procedure CreateBody(Content: Text): Codeunit "Http Content"
procedure Post(RequestUri: Text; Content: Codeunit "Http Content") HttpResponseMessage: Codeunit "Http Response Message"
}
14 changes: 14 additions & 0 deletions MSDyn365BC.Ntfy/src/helperInterfaces/RestWrapper.Codeunit.al
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
codeunit 71179880 RestWrapperNTSTM implements IRestWrapperNTSTM
{
procedure CreateBody(Content: Text) HttpContent: Codeunit System.RestClient."Http Content"
begin
HttpContent.Create(Content);
end;

procedure Post(RequestUri: Text; Content: Codeunit System.RestClient."Http Content") HttpResponseMessage: Codeunit System.RestClient."Http Response Message"
var
RestClient: Codeunit "Rest Client";
begin
exit(RestClient.Post(RequestUri, Content));
end;
}

0 comments on commit b6b3336

Please sign in to comment.