Skip to content

Commit 55881d2

Browse files
Ready for PR i think
1 parent 4e28e93 commit 55881d2

File tree

31 files changed

+2318
-591
lines changed

31 files changed

+2318
-591
lines changed

TransactionProcessorACL.BusinessLogic.Tests/MediatorTests.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ public MediatorTests()
2929
this.Requests.Add(TestData.ProcessLogonTransactionRequest);
3030
this.Requests.Add(TestData.ProcessReconciliationRequest);
3131
this.Requests.Add(TestData.ProcessSaleTransactionRequest);
32+
this.Requests.Add(TestData.VersionCheckRequest);
33+
this.Requests.Add(TestData.GetVoucherRequest);
34+
this.Requests.Add(TestData.RedeemVoucherRequest);
3235
}
3336

3437
[Fact]
@@ -128,5 +131,21 @@ public async Task<ProcessReconciliationResponse> ProcessReconciliation(Guid esta
128131
CancellationToken cancellationToken) {
129132
return new ProcessReconciliationResponse();
130133
}
134+
135+
public async Task<GetVoucherResponse> GetVoucher(Guid estateId,
136+
Guid contractId,
137+
String voucherCode,
138+
CancellationToken cancellationToken)
139+
{
140+
return new GetVoucherResponse();
141+
}
142+
143+
public async Task<RedeemVoucherResponse> RedeemVoucher(Guid estateId,
144+
Guid contractId,
145+
String voucherCode,
146+
CancellationToken cancellationToken)
147+
{
148+
return new RedeemVoucherResponse();
149+
}
131150
}
132151
}

TransactionProcessorACL.BusinessLogic.Tests/RequestHandlerTests.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,30 @@ public async Task VersionCheckRequestHandler_Handle_NewerVersionBuildNumber_Requ
150150
});
151151
}
152152

153+
[Fact]
154+
public async Task VoucherRequestHandler_GetVoucherRequest_Handle_RequestIsHandled()
155+
{
156+
Mock<ITransactionProcessorACLApplicationService> applicationService = new Mock<ITransactionProcessorACLApplicationService>();
157+
VoucherRequestHandler requestHandler = new VoucherRequestHandler(applicationService.Object);
158+
159+
Should.NotThrow(async () =>
160+
{
161+
await requestHandler.Handle(TestData.GetVoucherRequest, CancellationToken.None);
162+
});
163+
}
164+
165+
[Fact]
166+
public async Task VoucherRequestHandler_RedeemVoucherRequest_Handle_RequestIsHandled()
167+
{
168+
Mock<ITransactionProcessorACLApplicationService> applicationService = new Mock<ITransactionProcessorACLApplicationService>();
169+
VoucherRequestHandler requestHandler = new VoucherRequestHandler(applicationService.Object);
170+
171+
Should.NotThrow(async () =>
172+
{
173+
await requestHandler.Handle(TestData.RedeemVoucherRequest, CancellationToken.None);
174+
});
175+
}
176+
153177
#endregion
154178
}
155179
}

TransactionProcessorACL.BusinessLogic.Tests/RequestTests.cs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,29 @@ public void VersionCheckRequest_CanBeCreated_IsCreated()
8383
request.VersionNumber.ShouldBe(TestData.ApplicationVersion);
8484
}
8585

86+
/// <summary>
87+
/// Processes the logon transaction request can be created is created.
88+
/// </summary>
89+
[Fact]
90+
public void GetVoucherRequest_CanBeCreated_IsCreated()
91+
{
92+
GetVoucherRequest request = GetVoucherRequest.Create(TestData.EstateId, TestData.ContractId, TestData.VoucherCode);
93+
94+
request.EstateId.ShouldBe(TestData.EstateId);
95+
request.ContractId.ShouldBe(TestData.ContractId);
96+
request.VoucherCode.ShouldBe(TestData.VoucherCode);
97+
}
98+
99+
[Fact]
100+
public void RedeemVoucherRequest_CanBeCreated_IsCreated()
101+
{
102+
RedeemVoucherRequest request = RedeemVoucherRequest.Create(TestData.EstateId, TestData.ContractId, TestData.VoucherCode);
103+
104+
request.EstateId.ShouldBe(TestData.EstateId);
105+
request.ContractId.ShouldBe(TestData.ContractId);
106+
request.VoucherCode.ShouldBe(TestData.VoucherCode);
107+
}
108+
86109
#endregion
87110
}
88111
}

TransactionProcessorACL.BusinessLogic.Tests/TransactionProcessorACLApplicationServiceTests.cs

Lines changed: 134 additions & 61 deletions
Large diffs are not rendered by default.
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
using MediatR;
2+
using System;
3+
using System.Collections.Generic;
4+
using System.Linq;
5+
using System.Text;
6+
using System.Threading;
7+
using System.Threading.Tasks;
8+
using TransactionProcessorACL.BusinessLogic.Requests;
9+
10+
namespace TransactionProcessorACL.BusinessLogic.RequestHandlers
11+
{
12+
using Models;
13+
using Services;
14+
using RedeemVoucherRequest = Requests.RedeemVoucherRequest;
15+
16+
public class VoucherRequestHandler : IRequestHandler<GetVoucherRequest, GetVoucherResponse>, IRequestHandler<RedeemVoucherRequest, RedeemVoucherResponse>
17+
{
18+
#region Fields
19+
20+
private readonly ITransactionProcessorACLApplicationService ApplicationService;
21+
22+
#endregion
23+
24+
#region Constructors
25+
26+
/// <summary>
27+
/// Initializes a new instance of the <see cref="VoucherRequestHandler" /> class.
28+
/// </summary>
29+
/// <param name="applicationService">The application service.</param>
30+
public VoucherRequestHandler(ITransactionProcessorACLApplicationService applicationService)
31+
{
32+
this.ApplicationService = applicationService;
33+
}
34+
35+
#endregion
36+
37+
#region Methods
38+
39+
/// <summary>
40+
/// Handles a request
41+
/// </summary>
42+
/// <param name="request">The request</param>
43+
/// <param name="cancellationToken">Cancellation token</param>
44+
/// <returns>
45+
/// Response from the request
46+
/// </returns>
47+
public async Task<GetVoucherResponse> Handle(GetVoucherRequest request,
48+
CancellationToken cancellationToken)
49+
{
50+
return await this.ApplicationService.GetVoucher(request.EstateId, request.ContractId, request.VoucherCode, cancellationToken);
51+
}
52+
53+
/// <summary>
54+
/// Handles a request
55+
/// </summary>
56+
/// <param name="request">The request</param>
57+
/// <param name="cancellationToken">Cancellation token</param>
58+
/// <returns>
59+
/// Response from the request
60+
/// </returns>
61+
public async Task<RedeemVoucherResponse> Handle(RedeemVoucherRequest request,
62+
CancellationToken cancellationToken){
63+
return await this.ApplicationService.RedeemVoucher(request.EstateId, request.ContractId, request.VoucherCode, cancellationToken);
64+
}
65+
66+
#endregion
67+
}
68+
}
Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
using MediatR;
2+
using System;
3+
using System.Collections.Generic;
4+
using System.Linq;
5+
using System.Text;
6+
using System.Threading.Tasks;
7+
8+
namespace TransactionProcessorACL.BusinessLogic.Requests
9+
{
10+
using Models;
11+
12+
public class GetVoucherRequest : IRequest<GetVoucherResponse>
13+
{
14+
#region Constructors
15+
16+
/// <summary>
17+
/// Initializes a new instance of the <see cref="GetVoucherRequest"/> class.
18+
/// </summary>
19+
/// <param name="estateId">The estate identifier.</param>
20+
/// <param name="contractId">The contract identifier.</param>
21+
/// <param name="voucherCode">The voucher code.</param>
22+
private GetVoucherRequest(Guid estateId,
23+
Guid contractId,
24+
String voucherCode)
25+
{
26+
this.EstateId = estateId;
27+
this.ContractId = contractId;
28+
this.VoucherCode = voucherCode;
29+
}
30+
31+
#endregion
32+
33+
#region Properties
34+
35+
/// <summary>
36+
/// Gets the contract identifier.
37+
/// </summary>
38+
/// <value>
39+
/// The contract identifier.
40+
/// </value>
41+
public Guid ContractId { get; }
42+
43+
/// <summary>
44+
/// Gets the estate identifier.
45+
/// </summary>
46+
/// <value>
47+
/// The estate identifier.
48+
/// </value>
49+
public Guid EstateId { get; }
50+
51+
/// <summary>
52+
/// Gets the voucher code.
53+
/// </summary>
54+
/// <value>
55+
/// The voucher code.
56+
/// </value>
57+
public String VoucherCode { get; }
58+
59+
#endregion
60+
61+
#region Methods
62+
63+
/// <summary>
64+
/// Creates the specified version number.
65+
/// </summary>
66+
/// <param name="estateId">The estate identifier.</param>
67+
/// <param name="contractId">The contract identifier.</param>
68+
/// <param name="voucherCode">The voucher code.</param>
69+
/// <returns></returns>
70+
public static GetVoucherRequest Create(Guid estateId,
71+
Guid contractId,
72+
String voucherCode)
73+
{
74+
return new GetVoucherRequest(estateId, contractId, voucherCode);
75+
}
76+
77+
#endregion
78+
}
79+
80+
public class RedeemVoucherRequest : IRequest<RedeemVoucherResponse>
81+
{
82+
#region Constructors
83+
84+
/// <summary>
85+
/// Initializes a new instance of the <see cref="RedeemVoucherRequest"/> class.
86+
/// </summary>
87+
/// <param name="estateId">The estate identifier.</param>
88+
/// <param name="contractId">The contract identifier.</param>
89+
/// <param name="voucherCode">The voucher code.</param>
90+
private RedeemVoucherRequest(Guid estateId, Guid contractId, String voucherCode)
91+
{
92+
this.EstateId = estateId;
93+
this.ContractId = contractId;
94+
this.VoucherCode = voucherCode;
95+
}
96+
97+
#endregion
98+
99+
#region Properties
100+
101+
/// <summary>
102+
/// Gets the estate identifier.
103+
/// </summary>
104+
/// <value>
105+
/// The estate identifier.
106+
/// </value>
107+
public Guid EstateId { get; }
108+
109+
/// <summary>
110+
/// Gets the contract identifier.
111+
/// </summary>
112+
/// <value>
113+
/// The contract identifier.
114+
/// </value>
115+
public Guid ContractId { get; }
116+
/// <summary>
117+
/// Gets the voucher code.
118+
/// </summary>
119+
/// <value>
120+
/// The voucher code.
121+
/// </value>
122+
public String VoucherCode { get; }
123+
124+
#endregion
125+
126+
#region Methods
127+
128+
/// <summary>
129+
/// Creates the specified version number.
130+
/// </summary>
131+
/// <param name="estateId">The estate identifier.</param>
132+
/// <param name="contractId">The contract identifier.</param>
133+
/// <param name="voucherCode">The voucher code.</param>
134+
/// <returns></returns>
135+
public static RedeemVoucherRequest Create(Guid estateId, Guid contractId, String voucherCode)
136+
{
137+
return new RedeemVoucherRequest(estateId, contractId, voucherCode);
138+
}
139+
140+
#endregion
141+
}
142+
}

TransactionProcessorACL.BusinessLogic/Services/ITransactionProcessorACLApplicationService.cs

Lines changed: 15 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -7,42 +7,20 @@ namespace TransactionProcessorACL.BusinessLogic.Services
77
using System.Threading;
88
using System.Threading.Tasks;
99
using Shared.General;
10+
using TransactionProcessor.DataTransferObjects;
1011
using TransactionProcessorACL.Models;
12+
using GetVoucherResponse = Models.GetVoucherResponse;
13+
using RedeemVoucherResponse = Models.RedeemVoucherResponse;
1114

1215
public interface ITransactionProcessorACLApplicationService
1316
{
14-
/// <summary>
15-
/// Processes the logon transaction.
16-
/// </summary>
17-
/// <param name="estateId">The estate identifier.</param>
18-
/// <param name="merchantId">The merchant identifier.</param>
19-
/// <param name="transactionDateTime">The transaction date time.</param>
20-
/// <param name="transactionNumber">The transaction number.</param>
21-
/// <param name="deviceIdentifier">The device identifier.</param>
22-
/// <param name="cancellationToken">The cancellation token.</param>
23-
/// <returns></returns>
2417
Task<ProcessLogonTransactionResponse> ProcessLogonTransaction(Guid estateId,
2518
Guid merchantId,
2619
DateTime transactionDateTime,
2720
String transactionNumber,
2821
String deviceIdentifier,
2922
CancellationToken cancellationToken);
30-
31-
/// <summary>
32-
/// Processes the sale transaction.
33-
/// </summary>
34-
/// <param name="estateId">The estate identifier.</param>
35-
/// <param name="merchantId">The merchant identifier.</param>
36-
/// <param name="transactionDateTime">The transaction date time.</param>
37-
/// <param name="transactionNumber">The transaction number.</param>
38-
/// <param name="deviceIdentifier">The device identifier.</param>
39-
/// <param name="operatorIdentifier">The operator identifier.</param>
40-
/// <param name="customerEmailAddress">The customer email address.</param>
41-
/// <param name="contractId">The contract identifier.</param>
42-
/// <param name="productId">The product identifier.</param>
43-
/// <param name="additionalRequestMetadata">The additional request metadata.</param>
44-
/// <param name="cancellationToken">The cancellation token.</param>
45-
/// <returns></returns>
23+
4624
Task<ProcessSaleTransactionResponse> ProcessSaleTransaction(Guid estateId,
4725
Guid merchantId,
4826
DateTime transactionDateTime,
@@ -55,23 +33,22 @@ Task<ProcessSaleTransactionResponse> ProcessSaleTransaction(Guid estateId,
5533
Dictionary<String,String> additionalRequestMetadata,
5634
CancellationToken cancellationToken);
5735

58-
/// <summary>
59-
/// Processes the reconciliation.
60-
/// </summary>
61-
/// <param name="estateId">The estate identifier.</param>
62-
/// <param name="merchantId">The merchant identifier.</param>
63-
/// <param name="transactionDateTime">The transaction date time.</param>
64-
/// <param name="deviceIdentifier">The device identifier.</param>
65-
/// <param name="transactionCount">The transaction count.</param>
66-
/// <param name="transactionValue">The transaction value.</param>
67-
/// <param name="cancellationToken">The cancellation token.</param>
68-
/// <returns></returns>
69-
Task<ProcessReconciliationResponse> ProcessReconciliation(Guid estateId,
36+
Task<ProcessReconciliationResponse> ProcessReconciliation(Guid estateId,
7037
Guid merchantId,
7138
DateTime transactionDateTime,
7239
String deviceIdentifier,
7340
Int32 transactionCount,
7441
Decimal transactionValue,
7542
CancellationToken cancellationToken);
43+
44+
Task<GetVoucherResponse> GetVoucher(Guid estateId,
45+
Guid contractId,
46+
String voucherCode,
47+
CancellationToken cancellationToken);
48+
49+
Task<RedeemVoucherResponse> RedeemVoucher(Guid estateId,
50+
Guid contractId,
51+
String voucherCode,
52+
CancellationToken cancellationToken);
7653
}
7754
}

0 commit comments

Comments
 (0)