Skip to content

Commit f318173

Browse files
author
Jani Giannoudis
committed
test runner: added support for async payrun job execution
updated version to 0.9.0-beta.14
1 parent 13f73b0 commit f318173

7 files changed

Lines changed: 211 additions & 148 deletions

Client.Test/PayrollEngine.Client.Test.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
<ItemGroup>
1919
<PackageReference Include="Microsoft.CodeAnalysis.Compilers" Version="5.0.0" />
20-
<PackageReference Include="PayrollEngine.Client.Core" Version="0.9.0-beta.13" />
20+
<PackageReference Include="PayrollEngine.Client.Core" Version="0.9.0-beta.14" />
2121
</ItemGroup>
2222

2323
<!-- include xml documention files and json schemas to the nuget package -->

Client.Test/PayrollEngine.Client.Test.xml

Lines changed: 49 additions & 24 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Client.Test/Payrun/PayrunEmployeeTestRunner.cs

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,6 @@ namespace PayrollEngine.Client.Test.Payrun;
1212
/// <summary>Payrun employee test runner</summary>
1313
public class PayrunEmployeeTestRunner : PayrunTestRunnerBase
1414
{
15-
/// <summary>The delay between creation and test</summary>
16-
public int DelayBetweenCreateAndTest { get; set; }
17-
1815
/// <summary>The employee test mode</summary>
1916
public IScriptParser ScriptParser { get; }
2017

@@ -27,17 +24,15 @@ public class PayrunEmployeeTestRunner : PayrunTestRunnerBase
2724
/// <summary>Initializes a new instance of the <see cref="PayrunEmployeeTestRunner"/> class</summary>
2825
/// <param name="httpClient">The payroll engine http client</param>
2926
/// <param name="scriptParser">The script parser</param>
30-
/// <param name="owner">The test owner</param>
31-
/// <param name="testPrecision">The testing precision</param>
27+
/// <param name="settings">The test settings</param>
3228
/// <param name="employeeMode">The test running mode</param>
33-
/// <param name="resultMode">The test result mode (default: clean)</param>
3429
/// <param name="runMode">The employee test mode</param>
35-
public PayrunEmployeeTestRunner(PayrollHttpClient httpClient, IScriptParser scriptParser,
36-
TestPrecision testPrecision = TestPrecision.TestPrecision2, string owner = null,
30+
public PayrunEmployeeTestRunner(PayrollHttpClient httpClient,
31+
IScriptParser scriptParser,
32+
PayrunTestSettings settings,
3733
EmployeeTestMode employeeMode = EmployeeTestMode.InsertEmployee,
38-
TestResultMode resultMode = TestResultMode.CleanTest,
3934
TestRunMode runMode = TestRunMode.RunTests) :
40-
base(httpClient, testPrecision, resultMode, owner)
35+
base(httpClient, settings)
4136
{
4237
ScriptParser = scriptParser ?? throw new ArgumentNullException(nameof(scriptParser));
4338
EmployeeMode = employeeMode;
@@ -50,7 +45,7 @@ public PayrunEmployeeTestRunner(PayrollHttpClient httpClient, IScriptParser scri
5045
public override async Task<Dictionary<Tenant, List<PayrollTestResult>>> TestAllAsync(Model.Exchange exchange)
5146
{
5247
// apply owner
53-
ApplyOwner(exchange, Owner);
48+
ApplyOwner(exchange, Settings.Owner);
5449

5550
var results = new Dictionary<Tenant, List<PayrollTestResult>>();
5651
try
@@ -77,12 +72,6 @@ public override async Task<Dictionary<Tenant, List<PayrollTestResult>>> TestAllA
7772
continue;
7873
}
7974

80-
// all payrun jobs should be executed
81-
if (DelayBetweenCreateAndTest > 0)
82-
{
83-
Task.Delay(DelayBetweenCreateAndTest).Wait();
84-
}
85-
8675
// test results
8776
var payrunJobResult = await TestPayrunJobAsync(tenant, JobResultMode.Multiple);
8877
results.Add(tenant, payrunJobResult.ToList());
@@ -196,7 +185,7 @@ protected virtual async Task DuplicateTestEmployees(int tenantId, ExchangeTenant
196185
/// <param name="tenantResults">Results</param>
197186
protected virtual async Task CleanupEmployees(Dictionary<Tenant, List<PayrollTestResult>> tenantResults)
198187
{
199-
if (ResultMode == TestResultMode.KeepTest)
188+
if (Settings.ResultMode == TestResultMode.KeepTest)
200189
{
201190
return;
202191
}
@@ -208,7 +197,7 @@ protected virtual async Task CleanupEmployees(Dictionary<Tenant, List<PayrollTes
208197
foreach (var result in tenantResult.Value)
209198
{
210199
// keep failed
211-
if (ResultMode == TestResultMode.KeepFailedTest && result.Failed)
200+
if (Settings.ResultMode == TestResultMode.KeepFailedTest && result.Failed)
212201
{
213202
continue;
214203
}
@@ -223,9 +212,9 @@ protected virtual async Task CleanupEmployees(Dictionary<Tenant, List<PayrollTes
223212

224213
try
225214
{
226-
await DeleteEmployeeAsync(tenantId, employeeId);
227-
// update delete history
228-
deleteEmployeeIds.Add(employeeId);
215+
await DeleteEmployeeAsync(tenantId, employeeId);
216+
// update delete history
217+
deleteEmployeeIds.Add(employeeId);
229218
}
230219
catch (Exception exception)
231220
{

Client.Test/Payrun/PayrunTestRunner.cs

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -22,23 +22,18 @@ public class PayrunTestRunner : PayrunTestRunnerBase
2222
/// <summary>The test running mode</summary>
2323
public TestRunMode RunMode { get; }
2424

25-
/// <summary>The delay between creation and test</summary>
26-
public int DelayBetweenCreateAndTest { get; set; }
27-
2825
/// <summary>Initializes a new instance of the <see cref="PayrunTestRunner"/> class</summary>
2926
/// <param name="httpClient">The payroll engine http client</param>
3027
/// <param name="scriptParser">The script parser</param>
31-
/// <param name="testPrecision">The testing precision</param>
32-
/// <param name="owner">The test owner</param>
28+
/// <param name="settings">The test settings</param>
3329
/// <param name="importMode">The data import mode (default: single)</param>
34-
/// <param name="resultMode">The test result mode (default: clean)</param>
3530
/// <param name="runMode">The employee test mode</param>
36-
public PayrunTestRunner(PayrollHttpClient httpClient, IScriptParser scriptParser,
37-
TestPrecision testPrecision = TestPrecision.TestPrecision2,
38-
string owner = null, DataImportMode importMode = DataImportMode.Single,
39-
TestResultMode resultMode = TestResultMode.CleanTest,
31+
public PayrunTestRunner(PayrollHttpClient httpClient,
32+
IScriptParser scriptParser,
33+
PayrunTestSettings settings,
34+
DataImportMode importMode = DataImportMode.Single,
4035
TestRunMode runMode = TestRunMode.RunTests) :
41-
base(httpClient, testPrecision, resultMode, owner)
36+
base(httpClient, settings)
4237
{
4338
ScriptParser = scriptParser ?? throw new ArgumentNullException(nameof(scriptParser));
4439
ImportMode = importMode;
@@ -50,7 +45,7 @@ public PayrunTestRunner(PayrollHttpClient httpClient, IScriptParser scriptParser
5045
public override async Task<Dictionary<Tenant, List<PayrollTestResult>>> TestAllAsync(Model.Exchange exchange)
5146
{
5247
// apply owner
53-
ApplyOwner(exchange, Owner);
48+
ApplyOwner(exchange, Settings.Owner);
5449

5550
var results = new Dictionary<Tenant, List<PayrollTestResult>>();
5651
try
@@ -73,15 +68,18 @@ public override async Task<Dictionary<Tenant, List<PayrollTestResult>>> TestAllA
7368
// not test skip
7469
if (RunMode == TestRunMode.RunTests)
7570
{
76-
// all payrun jobs should be executed
77-
if (DelayBetweenCreateAndTest > 0)
78-
{
79-
Task.Delay(DelayBetweenCreateAndTest).Wait();
80-
}
81-
8271
// test tenants
8372
foreach (var tenant in exchange.Tenants)
8473
{
74+
// no test
75+
if (tenant.PayrollResults == null || !tenant.PayrollResults.Any())
76+
{
77+
continue;
78+
}
79+
80+
// wait for completed payrun jobs
81+
// await WaitForCompletedPayrunJobsAsync(tenant, JobResultMode.Single);
82+
8583
// test results
8684
var payrunJobResult = await TestPayrunJobAsync(tenant, JobResultMode.Single);
8785
results.Add(tenant, payrunJobResult.ToList());
@@ -129,7 +127,7 @@ protected virtual void ValidateTenant(ExchangeTenant tenant)
129127
/// <param name="results">Results</param>
130128
protected virtual async Task CleanupTenants(Model.Exchange exchange, Dictionary<Tenant, List<PayrollTestResult>> results)
131129
{
132-
if (ResultMode == TestResultMode.KeepTest)
130+
if (Settings.ResultMode == TestResultMode.KeepTest)
133131
{
134132
return;
135133
}
@@ -142,7 +140,7 @@ protected virtual async Task CleanupTenants(Model.Exchange exchange, Dictionary<
142140
var keep = false;
143141

144142
// keep tenant on failed test
145-
if (ResultMode == TestResultMode.KeepFailedTest &&
143+
if (Settings.ResultMode == TestResultMode.KeepFailedTest &&
146144
results.TryGetValue(exchangeTenant, out var result))
147145
{
148146
keep = result.Any(x => x.Failed);

0 commit comments

Comments
 (0)