Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using System;
using System.Threading;
using System.Threading.Tasks;
using Common;
using Models;
using Moq;
using RequestHandlers;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Common;
using Models;
using Moq;
using RequestHandlers;
Expand Down Expand Up @@ -54,6 +55,69 @@ public async Task MerchantRequestHandler_GetContractProductsRequest_Handle_IsHan
result.Data.Count.ShouldBe(TestData.ContractProductList.Count);
}

[Fact]
public async Task MerchantRequestHandler_GetContractProductsRequest_Handle_CacheIsNull_IsHandled(){
List<ContractProductModel> products = null;
this.ApplicationCache.Setup(a => a.GetContractProducts()).Returns(products);

this.MerchantService.Setup(m => m.GetContractProducts(It.IsAny<CancellationToken>()))
.ReturnsAsync(new SuccessResult<List<ContractProductModel>>(TestData.ContractProductList));

GetContractProductsRequest request = GetContractProductsRequest.Create();

Result<List<ContractProductModel>> result = await this.MerchantRequestHandler.Handle(request, CancellationToken.None);

result.Success.ShouldBeTrue();
result.Data.Count.ShouldBe(TestData.ContractProductList.Count);
}

[Fact]
public async Task MerchantRequestHandler_GetContractProductsRequest_Handle_GetContractProductsFailed_IsHandled()
{
List<ContractProductModel> products = new List<ContractProductModel>();
this.ApplicationCache.Setup(a => a.GetContractProducts()).Returns(products);

this.MerchantService.Setup(m => m.GetContractProducts(It.IsAny<CancellationToken>()))
.ReturnsAsync(new ErrorResult<List<ContractProductModel>>("failed"));

GetContractProductsRequest request = GetContractProductsRequest.Create();

Result<List<ContractProductModel>> result = await this.MerchantRequestHandler.Handle(request, CancellationToken.None);

result.Success.ShouldBeFalse();
}

[Fact]
public async Task MerchantRequestHandler_GetContractProductsRequest_Handle_FilterByType_IsHandled()
{
this.MerchantService.Setup(m => m.GetContractProducts(It.IsAny<CancellationToken>()))
.ReturnsAsync(new SuccessResult<List<ContractProductModel>>(TestData.ContractProductList));

GetContractProductsRequest request = GetContractProductsRequest.Create(ProductType.Voucher);

Result<List<ContractProductModel>> result = await this.MerchantRequestHandler.Handle(request, CancellationToken.None);

result.Success.ShouldBeTrue();
result.Data.Count.ShouldBe(1);
}

[Fact]
public async Task MerchantRequestHandler_GetContractProductsRequest_Handle_CacheIsEmpty_IsHandled()
{
List<ContractProductModel> products = new List<ContractProductModel>();
this.ApplicationCache.Setup(a => a.GetContractProducts()).Returns(products);

this.MerchantService.Setup(m => m.GetContractProducts(It.IsAny<CancellationToken>()))
.ReturnsAsync(new SuccessResult<List<ContractProductModel>>(TestData.ContractProductList));

GetContractProductsRequest request = GetContractProductsRequest.Create();

Result<List<ContractProductModel>> result = await this.MerchantRequestHandler.Handle(request, CancellationToken.None);

result.Success.ShouldBeTrue();
result.Data.Count.ShouldBe(TestData.ContractProductList.Count);
}

[Fact]
public async Task MerchantRequestHandler_GetMerchantBalanceRequest_Handle_IsHandled() {
this.MerchantService.Setup(m => m.GetMerchantBalance(It.IsAny<CancellationToken>())).ReturnsAsync(new SuccessResult<Decimal>(TestData.MerchantBalance));
Expand All @@ -66,5 +130,17 @@ public async Task MerchantRequestHandler_GetMerchantBalanceRequest_Handle_IsHand
result.Data.ShouldBe(TestData.MerchantBalance);
}

[Fact]
public async Task MerchantRequestHandler_GetMerchantDetailsRequest_Handle_IsHandled()
{
this.MerchantService.Setup(m => m.GetMerchantDetails(It.IsAny<CancellationToken>())).ReturnsAsync(new SuccessResult<MerchantDetailsModel>(TestData.MerchantDetailsModel));

GetMerchantDetailsRequest request = GetMerchantDetailsRequest.Create();

Result<MerchantDetailsModel> result = await this.MerchantRequestHandler.Handle(request, CancellationToken.None);

result.Success.ShouldBeTrue();
}

#endregion
}
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,19 @@ public async Task TransactionRequestHandler_LogonTransactionRequest_Handle_IsHan
result.Data.IsSuccessful.ShouldBeTrue();
}

[Fact]
public async Task TransactionRequestHandler_LogonTransactionRequest_Handle_LogonFailed_IsHandled()
{
this.TransactionService.Setup(t => t.PerformLogon(It.IsAny<PerformLogonRequestModel>(), It.IsAny<CancellationToken>())).ReturnsAsync(
new SuccessResult<PerformLogonResponseModel>(TestData.PerformLogonResponseFailedModel));

LogonTransactionRequest request = LogonTransactionRequest.Create(TestData.TransactionDateTime);

Result<PerformLogonResponseModel> result = await this.TransactionRequestHandler.Handle(request, CancellationToken.None);

result.Success.ShouldBeFalse();
}

[Fact]
public async Task TransactionRequestHandler_PerformMobileTopupRequest_Handle_IsHandled()
{
Expand All @@ -88,6 +101,27 @@ public async Task TransactionRequestHandler_PerformMobileTopupRequest_Handle_IsH
result.Data.IsSuccessful.ShouldBeTrue();
}

[Fact]
public async Task TransactionRequestHandler_PerformMobileTopupRequest_Handle_TopupFailed_IsHandled()
{
this.TransactionService.Setup(t => t.PerformMobileTopup(It.IsAny<PerformMobileTopupRequestModel>(), It.IsAny<CancellationToken>())).ReturnsAsync(new SuccessResult<PerformMobileTopupResponseModel>(new PerformMobileTopupResponseModel
{
ResponseCode = "1000"
}));

PerformMobileTopupRequest request = PerformMobileTopupRequest.Create(TestData.TransactionDateTime,
TestData.OperatorId1ContractId,
TestData.Operator1Product_100KES.ProductId,
TestData.OperatorIdentifier1,
TestData.CustomerAccountNumber,
TestData.Operator1Product_100KES.Value,
TestData.CustomerEmailAddress);

Result<PerformMobileTopupResponseModel> result = await this.TransactionRequestHandler.Handle(request, CancellationToken.None);

result.Success.ShouldBeFalse();
}

[Fact]
public async Task TransactionRequestHandler_PerformVoucherIssueRequest_Handle_IsHandled()
{
Expand All @@ -111,6 +145,29 @@ public async Task TransactionRequestHandler_PerformVoucherIssueRequest_Handle_Is
result.Data.IsSuccessful.ShouldBeTrue();
}

[Fact]
public async Task TransactionRequestHandler_PerformVoucherIssueRequest_Handle_VoucherIssueFailed_IsHandled()
{
this.TransactionService.Setup(t => t.PerformVoucherIssue(It.IsAny<PerformVoucherIssueRequestModel>(), It.IsAny<CancellationToken>())).ReturnsAsync(new SuccessResult<PerformVoucherIssueResponseModel>(new PerformVoucherIssueResponseModel
{
ResponseCode = "1000"
}));

PerformVoucherIssueRequest request = PerformVoucherIssueRequest.Create(TestData.TransactionDateTime,
TestData.OperatorId3ContractId,
TestData.Operator3Product_200KES.ProductId,
TestData.OperatorIdentifier3,
TestData.RecipientMobileNumber,
TestData.RecipientEmailAddress,
TestData.Operator3Product_200KES.Value,
TestData.CustomerEmailAddress);

Result<PerformVoucherIssueResponseModel> result = await this.TransactionRequestHandler.Handle(request, CancellationToken.None);

result.Success.ShouldBeFalse();
result.Success.ShouldBeFalse();
}

[Fact]
public async Task TransactionRequestHandler_PerformBillPaymentGetAccountRequest_Handle_IsHandled()
{
Expand Down Expand Up @@ -150,6 +207,45 @@ public async Task TransactionRequestHandler_PerformBillPaymentGetAccountRequest_
result.Data.BillDetails.ShouldBeNull();
}

[Fact]
public async Task TransactionRequestHandler_PerformBillPaymentGetMeterRequest_Handle_IsHandled()
{
this.TransactionService.Setup(t => t.PerformBillPaymentGetMeter(It.IsAny<PerformBillPaymentGetMeterModel>(), It.IsAny<CancellationToken>()))
.ReturnsAsync(new SuccessResult<PerformBillPaymentGetMeterResponseModel>(TestData.PerformBillPaymentGetMeterResponseModel));

PerformBillPaymentGetMeterRequest request = PerformBillPaymentGetMeterRequest.Create(TestData.TransactionDateTime,
TestData.OperatorId1ContractId,
TestData.Operator1Product_100KES.ProductId,
TestData.OperatorIdentifier1,
TestData.CustomerAccountNumber);

Result<PerformBillPaymentGetMeterResponseModel> result = await this.TransactionRequestHandler.Handle(request, CancellationToken.None);

result.Success.ShouldBeTrue();
result.Data.IsSuccessful.ShouldBeTrue();
result.Data.MeterDetails.ShouldNotBeNull();

}

[Fact]
public async Task TransactionRequestHandler_PerformBillPaymentGetMeterRequest_GetMeterFailed_Handle_IsHandled()
{
this.TransactionService.Setup(t => t.PerformBillPaymentGetMeter(It.IsAny<PerformBillPaymentGetMeterModel>(), It.IsAny<CancellationToken>()))
.ReturnsAsync(new SuccessResult<PerformBillPaymentGetMeterResponseModel>(TestData.PerformBillPaymentGetMeterResponseModelFailed));

PerformBillPaymentGetMeterRequest request = PerformBillPaymentGetMeterRequest.Create(TestData.TransactionDateTime,
TestData.OperatorId1ContractId,
TestData.Operator1Product_100KES.ProductId,
TestData.OperatorIdentifier1,
TestData.CustomerAccountNumber);

Result<PerformBillPaymentGetMeterResponseModel> result = await this.TransactionRequestHandler.Handle(request, CancellationToken.None);

result.Success.ShouldBeTrue();
result.Data.IsSuccessful.ShouldBeFalse();
result.Data.MeterDetails.ShouldBeNull();
}

[Fact]
public async Task TransactionRequestHandler_PerformBillPaymentMakePaymentRequest_Handle_IsHandled()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -173,4 +173,21 @@ public void UploadLogsRequest_Create_IsCreated()
request.ShouldNotBeNull();
request.DeviceIdentifier.ShouldBe(TestData.DeviceIdentifier);
}

[Fact]
public void PerformBillPaymentGetMeterRequest_Create_IsCreated(){
PerformBillPaymentGetMeterRequest request = PerformBillPaymentGetMeterRequest.Create(TestData.TransactionDateTime,
TestData.OperatorId3ContractId,
TestData.Operator3Product_200KES.ProductId,
TestData.OperatorIdentifier3,
TestData.CustomerAccountNumber);

request.ShouldNotBeNull();
request.TransactionDateTime.ShouldBe(TestData.TransactionDateTime);
request.ContractId.ShouldBe(TestData.OperatorId3ContractId);
request.ProductId.ShouldBe(TestData.Operator3Product_200KES.ProductId);
request.OperatorIdentifier.ShouldBe(TestData.OperatorIdentifier3);
request.MeterNumber.ShouldBe(TestData.CustomerAccountNumber);

}
}
Loading