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
@@ -1,6 +1,9 @@
using Shouldly;
using SimpleResults;
using TransactionProcessor.DataTransferObjects.Requests.Merchant;
using TransactionProcessor.Models.Merchant;
using TransactionProcessor.Testing;
using MerchantDepositSource = TransactionProcessor.Models.Merchant.MerchantDepositSource;

namespace TransactionProcessor.Aggregates.Tests;

Expand All @@ -19,11 +22,12 @@ public void MerchantStatementForDateAggregate_CanBeCreated_IsCreated()
public void MerchantStatementForDateAggregate_AddTransactionToStatement_TransactionAddedToStatement()
{
MerchantStatementForDateAggregate merchantStatementForDateAggregate = MerchantStatementForDateAggregate.Create(TestData.MerchantStatementForDateId1);
merchantStatementForDateAggregate.AddTransactionToStatement(TestData.MerchantStatementId,
Result result = merchantStatementForDateAggregate.AddTransactionToStatement(TestData.MerchantStatementId,
TestData.StatementDate,
TestData.EventId1,
TestData.EstateId,
TestData.MerchantId, TestData.Transaction1);
result.IsSuccess.ShouldBeTrue();

MerchantStatementForDate merchantStatementForDate = merchantStatementForDateAggregate.GetStatement(true);
List<MerchantStatementLine>? statementLines = merchantStatementForDate.GetStatementLines();
Expand All @@ -42,11 +46,12 @@ public void MerchantStatementForDateAggregate_AddTransactionToStatement_Duplicat
TestData.EstateId,
TestData.MerchantId, TestData.Transaction1);

merchantStatementForDateAggregate.AddTransactionToStatement(TestData.MerchantStatementId,
Result result = merchantStatementForDateAggregate.AddTransactionToStatement(TestData.MerchantStatementId,
TestData.StatementDate,
TestData.EventId1,
TestData.EstateId,
TestData.MerchantId, TestData.Transaction1);
result.IsSuccess.ShouldBeTrue();

MerchantStatementForDate merchantStatementForDate = merchantStatementForDateAggregate.GetStatement(true);
List<MerchantStatementLine>? statementLines = merchantStatementForDate.GetStatementLines();
Expand All @@ -55,11 +60,40 @@ public void MerchantStatementForDateAggregate_AddTransactionToStatement_Duplicat
statementLines.Count.ShouldBe(1);
}

[Theory]
[InlineData("", null, null)]
[InlineData(null, "", null)]
[InlineData(null, null, "")]
public void MerchantStatementForDateAggregate_AddTransactionToStatement_InvalidData_TransactionAddedToStatement(String statementId, String estateId, String merchantId) {
Guid statementIdGuid = TestData.MerchantStatementId;
Guid estateIdGuid = TestData.EstateId;
Guid merchantIdGuid = TestData.MerchantId;

if (statementId == String.Empty) {
statementIdGuid = Guid.Empty;
}
if (estateId == String.Empty) {
estateIdGuid = Guid.Empty;
}
if (merchantId == String.Empty) {
merchantIdGuid = Guid.Empty;
}
MerchantStatementForDateAggregate merchantStatementForDateAggregate = MerchantStatementForDateAggregate.Create(TestData.MerchantStatementForDateId1);
Result result = merchantStatementForDateAggregate.AddTransactionToStatement(statementIdGuid,
TestData.StatementDate,
TestData.EventId1,
estateIdGuid,
merchantIdGuid, TestData.Transaction1);
result.IsFailed.ShouldBeTrue();
result.Status.ShouldBe(ResultStatus.Invalid);
}

[Fact]
public void MerchantStatementForDateAggregate_AddSettledFeeToStatement_FeeAddedToStatement()
{
MerchantStatementForDateAggregate merchantStatementForDateAggregate = MerchantStatementForDateAggregate.Create(TestData.MerchantStatementForDateId1);
merchantStatementForDateAggregate.AddSettledFeeToStatement(TestData.MerchantStatementId, TestData.StatementDate, TestData.EventId1, TestData.EstateId, TestData.MerchantId, TestData.SettledFee1);
Result result = merchantStatementForDateAggregate.AddSettledFeeToStatement(TestData.MerchantStatementId, TestData.StatementDate, TestData.EventId1, TestData.EstateId, TestData.MerchantId, TestData.SettledFee1);
result.IsSuccess.ShouldBeTrue();

MerchantStatementForDate merchantStatementForDate = merchantStatementForDateAggregate.GetStatement(true);
List<MerchantStatementLine>? statementLines = merchantStatementForDate.GetStatementLines();
Expand All @@ -73,7 +107,8 @@ public void MerchantStatementForDateAggregate_AddSettledFeeToStatement_Duplicate
{
MerchantStatementForDateAggregate merchantStatementForDateAggregate = MerchantStatementForDateAggregate.Create(TestData.MerchantStatementForDateId1);
merchantStatementForDateAggregate.AddSettledFeeToStatement(TestData.MerchantStatementId, TestData.StatementDate, TestData.EventId1, TestData.EstateId, TestData.MerchantId, TestData.SettledFee1);
merchantStatementForDateAggregate.AddSettledFeeToStatement(TestData.MerchantStatementId, TestData.StatementDate, TestData.EventId1, TestData.EstateId, TestData.MerchantId, TestData.SettledFee1);
Result result = merchantStatementForDateAggregate.AddSettledFeeToStatement(TestData.MerchantStatementId, TestData.StatementDate, TestData.EventId1, TestData.EstateId, TestData.MerchantId, TestData.SettledFee1);
result.IsSuccess.ShouldBeTrue();

MerchantStatementForDate merchantStatementForDate = merchantStatementForDateAggregate.GetStatement(true);
List<MerchantStatementLine>? statementLines = merchantStatementForDate.GetStatementLines();
Expand All @@ -82,13 +117,43 @@ public void MerchantStatementForDateAggregate_AddSettledFeeToStatement_Duplicate
statementLines.Count.ShouldBe(1);
}

[Theory]
[InlineData("", null, null)]
[InlineData(null, "", null)]
[InlineData(null, null, "")]
public void MerchantStatementForDateAggregate_AddSettledFeeToStatement_InvalidData_TransactionAddedToStatement(String statementId, String estateId, String merchantId)
{
Guid statementIdGuid = TestData.MerchantStatementId;
Guid estateIdGuid = TestData.EstateId;
Guid merchantIdGuid = TestData.MerchantId;

if (statementId == String.Empty)
{
statementIdGuid = Guid.Empty;
}
if (estateId == String.Empty)
{
estateIdGuid = Guid.Empty;
}
if (merchantId == String.Empty)
{
merchantIdGuid = Guid.Empty;
}

MerchantStatementForDateAggregate merchantStatementForDateAggregate = MerchantStatementForDateAggregate.Create(TestData.MerchantStatementForDateId1);
Result result = merchantStatementForDateAggregate.AddSettledFeeToStatement(statementIdGuid, TestData.StatementDate, TestData.EventId1, estateIdGuid, merchantIdGuid, TestData.SettledFee1);

result.IsFailed.ShouldBeTrue();
result.Status.ShouldBe(ResultStatus.Invalid);
}

[Theory]
[InlineData(MerchantDepositSource.Manual)]
[InlineData(MerchantDepositSource.Automatic)]
public void MerchantStatementForDateAggregate_AddDepositToStatement_DepositAddedToStatement(MerchantDepositSource source)
{
MerchantStatementForDateAggregate merchantStatementForDateAggregate = MerchantStatementForDateAggregate.Create(TestData.MerchantStatementForDateId1);
merchantStatementForDateAggregate.AddDepositToStatement(TestData.MerchantStatementId,
Result result = merchantStatementForDateAggregate.AddDepositToStatement(TestData.MerchantStatementId,
TestData.StatementDate,
TestData.EventId1,
TestData.EstateId,
Expand All @@ -99,6 +164,7 @@ public void MerchantStatementForDateAggregate_AddDepositToStatement_DepositAdded
Reference = TestData.DepositReference,
Source = source
});
result.IsSuccess.ShouldBeTrue();

MerchantStatementForDate merchantStatementForDate = merchantStatementForDateAggregate.GetStatement(true);
List<MerchantStatementLine>? statementLines = merchantStatementForDate.GetStatementLines();
Expand All @@ -107,11 +173,52 @@ public void MerchantStatementForDateAggregate_AddDepositToStatement_DepositAdded
statementLines.Count.ShouldBe(1);
}

[Theory]
[InlineData(null, "", null)]
[InlineData(null, null, "")]
[InlineData("", null, null)]
public void MerchantStatementForDateAggregate_AddDepositToStatement_InvalidData_TransactionAddedToStatement(String statementId, String estateId, String merchantId)
{
Guid statementIdGuid = TestData.MerchantStatementId;
Guid estateIdGuid = TestData.EstateId;
Guid merchantIdGuid = TestData.MerchantId;

if (statementId == String.Empty)
{
statementIdGuid = Guid.Empty;
}
if (estateId == String.Empty)
{
estateIdGuid = Guid.Empty;
}
if (merchantId == String.Empty)
{
merchantIdGuid = Guid.Empty;
}

MerchantStatementForDateAggregate merchantStatementForDateAggregate = MerchantStatementForDateAggregate.Create(TestData.MerchantStatementForDateId1);
Result result = merchantStatementForDateAggregate.AddDepositToStatement(statementIdGuid,
TestData.StatementDate,
TestData.EventId1,
estateIdGuid,
merchantIdGuid, new Deposit
{
DepositDateTime = TestData.DepositDateTime,
Amount = TestData.DepositAmount.Value,
DepositId = TestData.DepositId,
Reference = TestData.DepositReference,
Source = MerchantDepositSource.Manual
});

result.IsFailed.ShouldBeTrue();
result.Status.ShouldBe(ResultStatus.Invalid);
}

[Fact]
public void MerchantStatementForDateAggregate_AddWithdrawalToStatement_WithdrawalAddedToStatement()
{
MerchantStatementForDateAggregate merchantStatementForDateAggregate = MerchantStatementForDateAggregate.Create(TestData.MerchantStatementForDateId1);
merchantStatementForDateAggregate.AddWithdrawalToStatement(TestData.MerchantStatementId,
Result result = merchantStatementForDateAggregate.AddWithdrawalToStatement(TestData.MerchantStatementId,
TestData.StatementDate,
TestData.EventId1,
TestData.EstateId,
Expand All @@ -121,11 +228,51 @@ public void MerchantStatementForDateAggregate_AddWithdrawalToStatement_Withdrawa
Amount = TestData.WithdrawalAmount.Value,
WithdrawalId = TestData.WithdrawalId
});
result.IsSuccess.ShouldBeTrue();

MerchantStatementForDate merchantStatementForDate = merchantStatementForDateAggregate.GetStatement(true);
List<MerchantStatementLine>? statementLines = merchantStatementForDate.GetStatementLines();
statementLines.ShouldNotBeNull();
statementLines.ShouldNotBeEmpty();
statementLines.Count.ShouldBe(1);
}
}

[Theory]
[InlineData("", null, null)]
[InlineData(null, "", null)]
[InlineData( null, null, "")]
public void MerchantStatementForDateAggregate_AddWithdrawalToStatement_InvalidData_TransactionAddedToStatement(String statementId, String estateId, String merchantId)
{
Guid statementIdGuid = TestData.MerchantStatementId;
Guid estateIdGuid = TestData.EstateId;
Guid merchantIdGuid = TestData.MerchantId;

if (statementId == String.Empty)
{
statementIdGuid = Guid.Empty;
}
if (estateId == String.Empty)
{
estateIdGuid = Guid.Empty;
}
if (merchantId == String.Empty)
{
merchantIdGuid = Guid.Empty;
}

MerchantStatementForDateAggregate merchantStatementForDateAggregate = MerchantStatementForDateAggregate.Create(TestData.MerchantStatementForDateId1);
Result result = merchantStatementForDateAggregate.AddWithdrawalToStatement(statementIdGuid,
TestData.StatementDate,
TestData.EventId1,
estateIdGuid,
merchantIdGuid, new Withdrawal
{
WithdrawalDateTime = TestData.WithdrawalDateTime,
Amount = TestData.WithdrawalAmount.Value,
WithdrawalId = TestData.WithdrawalId
});

result.IsFailed.ShouldBeTrue();
result.Status.ShouldBe(ResultStatus.Invalid);
}
}
Loading
Loading