diff --git a/TransactionProcessor.Aggregates.Tests/TransactionAggregateTests.cs b/TransactionProcessor.Aggregates.Tests/TransactionAggregateTests.cs index 49aad81d..8db7624a 100644 --- a/TransactionProcessor.Aggregates.Tests/TransactionAggregateTests.cs +++ b/TransactionProcessor.Aggregates.Tests/TransactionAggregateTests.cs @@ -1,5 +1,6 @@ using Shouldly; using SimpleResults; +using TransactionProcessor.Aggregates; using TransactionProcessor.Models; using TransactionProcessor.Models.Contract; using TransactionProcessor.Testing; @@ -18,14 +19,7 @@ public void TransactionAggregate_CanBeCreated_IsCreated(){ [InlineData(TransactionType.Sale)] public void TransactionAggregate_StartTransaction_TransactionIsStarted(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - Result result = transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + Result result = transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); result.IsSuccess.ShouldBeTrue(); transactionAggregate.IsStarted.ShouldBeTrue(); @@ -46,14 +40,7 @@ public void TransactionAggregate_StartTransaction_TransactionIsStarted(Transacti [InlineData(TransactionType.Logon)] public void TransactionAggregate_StartTransaction_NullAmount_TransactionIsStarted(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - Result result = transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - null); + Result result = transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, null); result.IsSuccess.ShouldBeTrue(); transactionAggregate.IsStarted.ShouldBeTrue(); @@ -75,23 +62,9 @@ public void TransactionAggregate_StartTransaction_NullAmount_TransactionIsStarte [InlineData(TransactionType.Sale)] public void TransactionAggregate_StartTransaction_TransactionAlreadyStarted_ErrorThrown(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); - - Result result = transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); + + Result result = transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); result.IsFailed.ShouldBeTrue(); result.Status.ShouldBe(ResultStatus.Invalid); } @@ -101,14 +74,7 @@ public void TransactionAggregate_StartTransaction_TransactionAlreadyStarted_Erro [InlineData(TransactionType.Sale)] public void TransactionAggregate_StartTransaction_TransactionAlreadyCompleted_ErrorThrown(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); if (transactionType == TransactionType.Logon){ transactionAggregate.AuthoriseTransactionLocally(TestData.AuthorisationCode, TestData.ResponseCode, TestData.ResponseMessage); @@ -125,14 +91,7 @@ public void TransactionAggregate_StartTransaction_TransactionAlreadyCompleted_Er transactionAggregate.CompleteTransaction(); - Result result = transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + Result result = transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); result.IsFailed.ShouldBeTrue(); result.Status.ShouldBe(ResultStatus.Invalid); } @@ -172,7 +131,16 @@ public void TransactionAggregate_StartTransaction_InvalidData_ErrorThrown(Boolea Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - Result result = transactionAggregate.StartTransaction(transactionDateTime, transactionNumber, transactionType, transactionReference, estateId, merchantId, deviceIdentifier, TestData.TransactionAmount); + Result result = transactionAggregate.StartTransaction(transactionDateTime, transactionNumber, transactionType, transactionReference, new TransactionStartContext { EstateId = estateId, MerchantId = merchantId, DeviceIdentifier = deviceIdentifier }, TestData.TransactionAmount); + result.IsFailed.ShouldBeTrue(); + result.Status.ShouldBe(ResultStatus.Invalid); + } + + [Fact] + public void TransactionAggregate_StartTransaction_NullContext_ErrorThrown() { + Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); + + Result result = transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, TransactionType.Sale, TestData.TransactionReference, null, TestData.TransactionAmount); result.IsFailed.ShouldBeTrue(); result.Status.ShouldBe(ResultStatus.Invalid); } @@ -181,14 +149,7 @@ public void TransactionAggregate_StartTransaction_InvalidData_ErrorThrown(Boolea [InlineData(TransactionType.Sale)] public void TransactionAggregate_AddProductDetails_ProductDetailsAdded(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); Result result = transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); result.IsSuccess.ShouldBeTrue(); @@ -203,14 +164,7 @@ public void TransactionAggregate_AddProductDetails_ProductDetailsAdded(Transacti [InlineData(TransactionSource.FileImport)] public void TransactionAggregate_AddTransactionSource_TransactionSourceAdded(TransactionSource transactionSource){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - TransactionType.Sale, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, TransactionType.Sale, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); Result result = transactionAggregate.AddTransactionSource(transactionSource); @@ -222,14 +176,7 @@ public void TransactionAggregate_AddTransactionSource_TransactionSourceAdded(Tra [Fact] public void TransactionAggregate_AddTransactionSource_InvalidSource_ErrorThrown(){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - TransactionType.Sale, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, TransactionType.Sale, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); Result result = transactionAggregate.AddTransactionSource((TransactionSource)99); @@ -242,14 +189,7 @@ public void TransactionAggregate_AddTransactionSource_InvalidSource_ErrorThrown( [InlineData(TransactionSource.FileImport)] public void TransactionAggregate_AddTransactionSource_SourceAlreadySet_NoErrorThrown(TransactionSource transactionSource){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - TransactionType.Sale, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, TransactionType.Sale, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); transactionAggregate.AddTransactionSource(transactionSource); @@ -261,14 +201,7 @@ public void TransactionAggregate_AddTransactionSource_SourceAlreadySet_NoErrorTh [InlineData(TransactionType.Sale)] public void TransactionAggregate_AddProductDetails_InvalidContractId_ErrorThrown(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); Result result = transactionAggregate.AddProductDetails(Guid.Empty, TestData.ProductId); result.IsFailed.ShouldBeTrue(); @@ -279,14 +212,7 @@ public void TransactionAggregate_AddProductDetails_InvalidContractId_ErrorThrown [InlineData(TransactionType.Sale)] public void TransactionAggregate_AddProductDetails_InvalidProductId_ErrorThrown(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); Result result = transactionAggregate.AddProductDetails(TestData.ContractId, Guid.Empty); result.IsFailed.ShouldBeTrue(); @@ -297,14 +223,7 @@ public void TransactionAggregate_AddProductDetails_InvalidProductId_ErrorThrown( [InlineData(TransactionType.Sale)] public void TransactionAggregate_AddProductDetails_ProductDetailsAlreadyAdded_ErrorThrown(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); @@ -327,14 +246,7 @@ public void TransactionAggregate_AddProductDetails_TransactionNotStarted_ErrorTh [InlineData(TransactionType.Sale)] public void TransactionAggregate_AddProductDetails_TransactionAlreadyCompleted_ErrorThrown(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); @@ -363,14 +275,7 @@ public void TransactionAggregate_AddProductDetails_TransactionAlreadyCompleted_E [InlineData(TransactionType.Logon)] public void TransactionAggregate_AuthoriseTransactionLocally_TransactionIsAuthorised(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); Result result = transactionAggregate.AuthoriseTransactionLocally(TestData.AuthorisationCode, TestData.ResponseCode, TestData.ResponseMessage); result.IsSuccess.ShouldBeTrue(); @@ -397,14 +302,7 @@ public void TransactionAggregate_AuthoriseTransactionLocally_TransactionNotStart [InlineData(TransactionType.Logon)] public void TransactionAggregate_AuthoriseTransactionLocally_TransactionAlreadyAuthorisedLocally_ErrorThrown(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AuthoriseTransactionLocally(TestData.AuthorisationCode, TestData.ResponseCode, TestData.ResponseMessage); Result result = transactionAggregate.AuthoriseTransactionLocally(TestData.AuthorisationCode, @@ -418,14 +316,7 @@ public void TransactionAggregate_AuthoriseTransactionLocally_TransactionAlreadyA [InlineData(TransactionType.Logon)] public void TransactionAggregate_AuthoriseTransactionLocally_TransactionAlreadyAuthorised_ErrorThrown(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AuthoriseTransaction(TestData.OperatorId, TestData.OperatorAuthorisationCode, TestData.OperatorResponseCode, TestData.OperatorResponseMessage, TestData.OperatorTransactionId, TestData.ResponseCode, TestData.ResponseMessage); Result result = transactionAggregate.AuthoriseTransactionLocally(TestData.AuthorisationCode, @@ -439,14 +330,7 @@ public void TransactionAggregate_AuthoriseTransactionLocally_TransactionAlreadyA [InlineData(TransactionType.Sale)] public void TransactionAggregate_AuthoriseTransactionLocally_TransactionCannotBeLocallyAuthorised_ErrorThrown(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); Result result = transactionAggregate.AuthoriseTransactionLocally(TestData.AuthorisationCode, @@ -462,14 +346,7 @@ public void TransactionAggregate_AuthoriseTransactionLocally_TransactionCannotBe [InlineData(TransactionType.Sale)] public void TransactionAggregate_AuthoriseTransaction_TransactionIsAuthorised(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); if (transactionType != TransactionType.Logon){ transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); } @@ -499,14 +376,7 @@ public void TransactionAggregate_AuthoriseTransaction_TransactionNotStarted_Erro [InlineData(TransactionType.Sale)] public void TransactionAggregate_AuthoriseTransaction_TransactionAlreadyAuthorised_ErrorThrown(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); if (transactionType != TransactionType.Logon){ transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); } @@ -523,14 +393,7 @@ public void TransactionAggregate_AuthoriseTransaction_TransactionAlreadyAuthoris [InlineData(TransactionType.Sale)] public void TransactionAggregate_DeclineTransactionLocally_TransactionIsDeclined(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); if (transactionType != TransactionType.Logon){ transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); } @@ -560,14 +423,7 @@ public void TransactionAggregate_DeclineTransactionLocally_TransactionNotStarted [InlineData(TransactionType.Logon)] public void TransactionAggregate_DeclineTransactionLocally_TransactionAlreadyAuthorisedLocally_ErrorThrown(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AuthoriseTransactionLocally(TestData.AuthorisationCode, TestData.ResponseCode, TestData.ResponseMessage); Result result = transactionAggregate.DeclineTransactionLocally(TestData.ResponseCode, TestData.ResponseMessage); @@ -580,14 +436,7 @@ public void TransactionAggregate_DeclineTransactionLocally_TransactionAlreadyAut [InlineData(TransactionType.Sale)] public void TransactionAggregate_DeclineTransactionLocally_TransactionAlreadyAuthorised_ErrorThrown(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); if (transactionType != TransactionType.Logon){ transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); } @@ -604,14 +453,7 @@ public void TransactionAggregate_DeclineTransactionLocally_TransactionAlreadyAut [InlineData(TransactionType.Sale)] public void TransactionAggregate_DeclineTransactionLocally_TransactionAlreadyDeclinedLocally_ErrorThrown(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); if (transactionType != TransactionType.Logon){ transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); } @@ -628,14 +470,7 @@ public void TransactionAggregate_DeclineTransactionLocally_TransactionAlreadyDec [InlineData(TransactionType.Sale)] public void TransactionAggregate_DeclineTransactionLocally_TransactionAlreadyDeclined_ErrorThrown(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); if (transactionType != TransactionType.Logon){ transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); } @@ -652,14 +487,7 @@ public void TransactionAggregate_DeclineTransactionLocally_TransactionAlreadyDec [InlineData(TransactionType.Sale)] public void TransactionAggregate_DeclineTransaction_TransactionIsDeclined(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); if (transactionType != TransactionType.Logon){ transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); } @@ -691,7 +519,7 @@ public void TransactionAggregate_DeclineTransaction_TransactionNotStarted_ErrorT //public void TransactionAggregate_DeclineTransaction_TransactionAlreadyAuthorisedLocally_ErrorThrown(TransactionType transactionType) //{ // TransactionAggregate transactionAggregate = TransactionAggregate.Create(TestData.TransactionId); - // transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.EstateId, TestData.MerchantId, TestData.DeviceIdentifier); + // transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); // transactionAggregate.AuthoriseTransactionLocally(TestData.AuthorisationCode, TestData.ResponseCode, TestData.ResponseMessage); // Should.Throw(() => @@ -705,14 +533,7 @@ public void TransactionAggregate_DeclineTransaction_TransactionNotStarted_ErrorT [InlineData(TransactionType.Sale)] public void TransactionAggregate_DeclineTransaction_TransactionAlreadyAuthorised_ErrorThrown(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); if (transactionType != TransactionType.Logon){ transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); } @@ -729,14 +550,7 @@ public void TransactionAggregate_DeclineTransaction_TransactionAlreadyAuthorised [InlineData(TransactionType.Sale)] public void TransactionAggregate_DeclineTransaction_TransactionAlreadyDeclinedLocally_ErrorThrown(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); if (transactionType != TransactionType.Logon){ transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); } @@ -753,14 +567,7 @@ public void TransactionAggregate_DeclineTransaction_TransactionAlreadyDeclinedLo [InlineData(TransactionType.Sale)] public void TransactionAggregate_DeclineTransaction_TransactionAlreadyDeclined_ErrorThrown(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); if (transactionType != TransactionType.Logon){ transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); } @@ -777,14 +584,7 @@ public void TransactionAggregate_DeclineTransaction_TransactionAlreadyDeclined_E [InlineData(TransactionType.Sale)] public void TransactionAggregate_CompleteTransaction_TransactionIsCompleted(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); if (transactionType == TransactionType.Logon){ transactionAggregate.AuthoriseTransactionLocally(TestData.AuthorisationCode, TestData.ResponseCode, TestData.ResponseMessage); @@ -812,14 +612,7 @@ public void TransactionAggregate_CompleteTransaction_TransactionNotStarted_Error [InlineData(TransactionType.Sale)] public void TransactionAggregate_CompleteTransaction_TransactionNotAuthorised_ErrorThrown(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); if (transactionType != TransactionType.Logon){ transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); } @@ -834,14 +627,7 @@ public void TransactionAggregate_CompleteTransaction_TransactionNotAuthorised_Er [InlineData(TransactionType.Sale)] public void TransactionAggregate_CompleteTransaction_TransactionAlreadyCompleted_ErrorThrown(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); if (transactionType == TransactionType.Logon){ transactionAggregate.AuthoriseTransactionLocally(TestData.AuthorisationCode, TestData.ResponseCode, TestData.ResponseMessage); @@ -863,14 +649,7 @@ public void TransactionAggregate_CompleteTransaction_TransactionAlreadyCompleted [InlineData(TransactionType.Sale)] public void TransactionAggregate_RecordAdditionalRequestData_RequestDataRecorded(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); if (transactionType != TransactionType.Logon){ transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); } @@ -895,14 +674,7 @@ public void TransactionAggregate_RecordAdditionalRequestData_TransactionNotStart [InlineData(TransactionType.Sale)] public void TransactionAggregate_RecordAdditionalRequestData_AdditionalRequestDataAlreadyRecorded_ErrorThrown(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); if (transactionType != TransactionType.Logon){ transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); } @@ -919,14 +691,7 @@ public void TransactionAggregate_RecordAdditionalRequestData_AdditionalRequestDa [InlineData(TransactionType.Sale)] public void TransactionAggregate_RecordAdditionalRequestData_AlreadyAuthorised_ErrorThrown(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); if (transactionType != TransactionType.Logon){ transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); } @@ -950,14 +715,7 @@ public void TransactionAggregate_RecordAdditionalRequestData_AlreadyAuthorised_E [InlineData(TransactionType.Sale)] public void TransactionAggregate_RecordAdditionalRequestData_AlreadyDeclined_ErrorThrown(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); if (transactionType != TransactionType.Logon){ transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); } @@ -981,14 +739,7 @@ public void TransactionAggregate_RecordAdditionalRequestData_AlreadyDeclined_Err [InlineData(TransactionType.Sale)] public void TransactionAggregate_RecordAdditionalRequestData_AlreadyCompleted_ErrorThrown(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); if (transactionType != TransactionType.Logon){ transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); } @@ -1016,14 +767,7 @@ public void TransactionAggregate_RecordAdditionalRequestData_AlreadyCompleted_Er [InlineData(TransactionType.Sale)] public void TransactionAggregate_RecordAdditionalResponseData_ResponseDataRecorded(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); if (transactionType != TransactionType.Logon){ transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); } @@ -1056,14 +800,7 @@ public void TransactionAggregate_RecordAdditionalResponseData_TransactionNotStar [InlineData(TransactionType.Sale)] public void TransactionAggregate_RecordAdditionalResponseData_AdditionalResponseDataAlreadyRecorded_ErrorThrown(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); if (transactionType != TransactionType.Logon){ transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); } @@ -1088,14 +825,7 @@ public void TransactionAggregate_RecordAdditionalResponseData_AdditionalResponse [InlineData(TransactionType.Sale)] public void TransactionAggregate_RecordAdditionalResponseData_AlreadyCompleted_ErrorThrown(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); if (transactionType != TransactionType.Logon){ transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); } @@ -1119,14 +849,7 @@ public void TransactionAggregate_RecordAdditionalResponseData_AlreadyCompleted_E [Fact] public void TransactionAggregate_RequestEmailReceipt_CustomerEmailReceiptHasBeenRequested(){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - TransactionType.Sale, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, TransactionType.Sale, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); transactionAggregate.RecordAdditionalRequestData(TestData.OperatorId, TestData.AdditionalTransactionMetaDataForMobileTopup()); transactionAggregate.AuthoriseTransaction(TestData.OperatorId, TestData.OperatorAuthorisationCode, TestData.OperatorResponseCode, TestData.OperatorResponseMessage, TestData.OperatorTransactionId, TestData.ResponseCode, TestData.ResponseMessage); @@ -1143,14 +866,7 @@ public void TransactionAggregate_RequestEmailReceipt_CustomerEmailReceiptHasBeen [Fact] public void TransactionAggregate_RequestEmailReceipt_TransactionNotCompleted_ErrorThrown(){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - TransactionType.Sale, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, TransactionType.Sale, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); transactionAggregate.RecordAdditionalRequestData(TestData.OperatorId, TestData.AdditionalTransactionMetaDataForMobileTopup()); transactionAggregate.AuthoriseTransaction(TestData.OperatorId, TestData.OperatorAuthorisationCode, TestData.OperatorResponseCode, TestData.OperatorResponseMessage, TestData.OperatorTransactionId, TestData.ResponseCode, TestData.ResponseMessage); @@ -1164,14 +880,7 @@ public void TransactionAggregate_RequestEmailReceipt_TransactionNotCompleted_Err [Fact] public void TransactionAggregate_RequestEmailReceipt_EmailReceiptAlreadyRequested_ErrorThrown(){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - TransactionType.Sale, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, TransactionType.Sale, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); transactionAggregate.RecordAdditionalRequestData(TestData.OperatorId, TestData.AdditionalTransactionMetaDataForMobileTopup()); transactionAggregate.AuthoriseTransaction(TestData.OperatorId, TestData.OperatorAuthorisationCode, TestData.OperatorResponseCode, TestData.OperatorResponseMessage, TestData.OperatorTransactionId, TestData.ResponseCode, TestData.ResponseMessage); @@ -1188,14 +897,7 @@ public void TransactionAggregate_RequestEmailReceipt_EmailReceiptAlreadyRequeste [Fact] public void TransactionAggregate_RequestEmailReceiptResend_CustomerEmailReceiptHasBeenRequested(){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - TransactionType.Sale, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, TransactionType.Sale, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); transactionAggregate.RecordAdditionalRequestData(TestData.OperatorId, TestData.AdditionalTransactionMetaDataForMobileTopup()); transactionAggregate.AuthoriseTransaction(TestData.OperatorId, TestData.OperatorAuthorisationCode, TestData.OperatorResponseCode, TestData.OperatorResponseMessage, TestData.OperatorTransactionId, TestData.ResponseCode, TestData.ResponseMessage); @@ -1212,14 +914,7 @@ public void TransactionAggregate_RequestEmailReceiptResend_CustomerEmailReceiptH [Fact] public void TransactionAggregate_RequestEmailReceiptResend_ReceiptNotSent_ErrorThrown(){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - TransactionType.Sale, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, TransactionType.Sale, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); transactionAggregate.RecordAdditionalRequestData(TestData.OperatorId, TestData.AdditionalTransactionMetaDataForMobileTopup()); transactionAggregate.AuthoriseTransaction(TestData.OperatorId, TestData.OperatorAuthorisationCode, TestData.OperatorResponseCode, TestData.OperatorResponseMessage, TestData.OperatorTransactionId, TestData.ResponseCode, TestData.ResponseMessage); @@ -1234,14 +929,7 @@ public void TransactionAggregate_RequestEmailReceiptResend_ReceiptNotSent_ErrorT [InlineData(TransactionType.Sale, FeeType.ServiceProvider)] public void TransactionAggregate_AddFee_FeeDetailsAdded(TransactionType transactionType, FeeType feeType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); transactionAggregate.AuthoriseTransaction(TestData.OperatorId, TestData.OperatorAuthorisationCode, TestData.OperatorResponseCode, TestData.OperatorResponseMessage, TestData.OperatorTransactionId, TestData.ResponseCode, TestData.ResponseMessage); @@ -1268,14 +956,7 @@ public void TransactionAggregate_AddFee_FeeDetailsAdded(TransactionType transact [InlineData(TransactionType.Sale)] public void TransactionAggregate_AddFee_NullFee_ErrorThrown(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); transactionAggregate.AuthoriseTransaction(TestData.OperatorId, TestData.OperatorAuthorisationCode, TestData.OperatorResponseCode, TestData.OperatorResponseMessage, TestData.OperatorTransactionId, TestData.ResponseCode, TestData.ResponseMessage); @@ -1291,14 +972,7 @@ public void TransactionAggregate_AddFee_NullFee_ErrorThrown(TransactionType tran [InlineData(TransactionType.Sale, FeeType.Merchant)] public void TransactionAggregate_AddFee_TransactionNotAuthorised_ErrorThrown(TransactionType transactionType, FeeType feeType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); transactionAggregate.DeclineTransaction(TestData.OperatorId, TestData.OperatorResponseCode, TestData.OperatorResponseMessage, TestData.ResponseCode, TestData.ResponseMessage); @@ -1325,14 +999,7 @@ private CalculatedFee GetCalculatedFeeToAdd(FeeType feeType){ [InlineData(TransactionType.Sale, FeeType.ServiceProvider)] public void TransactionAggregate_AddFee_TransactionNotCompleted_ErrorThrown(TransactionType transactionType, FeeType feeType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); transactionAggregate.AuthoriseTransaction(TestData.OperatorId, TestData.OperatorAuthorisationCode, TestData.OperatorResponseCode, TestData.OperatorResponseMessage, TestData.OperatorTransactionId, TestData.ResponseCode, TestData.ResponseMessage); @@ -1346,14 +1013,7 @@ public void TransactionAggregate_AddFee_TransactionNotCompleted_ErrorThrown(Tran [InlineData(TransactionType.Sale, FeeType.ServiceProvider)] public void TransactionAggregate_AddFee_FeeAlreadyAdded_NoErrorThrown(TransactionType transactionType, FeeType feeType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); transactionAggregate.AuthoriseTransaction(TestData.OperatorId, TestData.OperatorAuthorisationCode, TestData.OperatorResponseCode, TestData.OperatorResponseMessage, TestData.OperatorTransactionId, TestData.ResponseCode, TestData.ResponseMessage); @@ -1370,14 +1030,7 @@ public void TransactionAggregate_AddFee_FeeAlreadyAdded_NoErrorThrown(Transactio [InlineData(TransactionType.Sale)] public void TransactionAggregate_AddFee_UnsupportedFeeType_ErrorThrown(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); transactionAggregate.AuthoriseTransaction(TestData.OperatorId, TestData.OperatorAuthorisationCode, TestData.OperatorResponseCode, TestData.OperatorResponseMessage, TestData.OperatorTransactionId, TestData.ResponseCode, TestData.ResponseMessage); @@ -1393,14 +1046,7 @@ public void TransactionAggregate_AddFee_UnsupportedFeeType_ErrorThrown(Transacti [InlineData(FeeType.Merchant)] public void TransactionAggregate_AddFee_LogonTransaction_ErrorThrown(FeeType feeType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - TransactionType.Logon, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, TransactionType.Logon, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AuthoriseTransactionLocally(TestData.AuthorisationCode, TestData.ResponseCode, TestData.ResponseMessage); transactionAggregate.CompleteTransaction(); @@ -1414,14 +1060,7 @@ public void TransactionAggregate_AddFee_LogonTransaction_ErrorThrown(FeeType fee [InlineData(TransactionType.Sale, FeeType.Merchant)] public void TransactionAggregate_AddSettledFee_FeeDetailsAdded(TransactionType transactionType, FeeType feeType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); transactionAggregate.AuthoriseTransaction(TestData.OperatorId, TestData.OperatorAuthorisationCode, TestData.OperatorResponseCode, TestData.OperatorResponseMessage, TestData.OperatorTransactionId, TestData.ResponseCode, TestData.ResponseMessage); @@ -1448,14 +1087,7 @@ public void TransactionAggregate_AddSettledFee_FeeDetailsAdded(TransactionType t [InlineData(TransactionType.Sale)] public void TransactionAggregate_AddSettledFee_NullFee_ErrorThrown(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); transactionAggregate.AuthoriseTransaction(TestData.OperatorId, TestData.OperatorAuthorisationCode, TestData.OperatorResponseCode, TestData.OperatorResponseMessage, TestData.OperatorTransactionId, TestData.ResponseCode, TestData.ResponseMessage); @@ -1470,14 +1102,7 @@ public void TransactionAggregate_AddSettledFee_NullFee_ErrorThrown(TransactionTy [InlineData(TransactionType.Sale, FeeType.Merchant)] public void TransactionAggregate_AddSettledFee_TransactionNotAuthorised_ErrorThrown(TransactionType transactionType, FeeType feeType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); transactionAggregate.DeclineTransaction(TestData.OperatorId, TestData.OperatorResponseCode, TestData.OperatorResponseMessage, TestData.ResponseCode, TestData.ResponseMessage); @@ -1492,14 +1117,7 @@ public void TransactionAggregate_AddSettledFee_TransactionNotAuthorised_ErrorThr [InlineData(TransactionType.Sale, FeeType.Merchant)] public void TransactionAggregate_AddSettledFee_TransactionNotCompleted_ErrorThrown(TransactionType transactionType, FeeType feeType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); transactionAggregate.AuthoriseTransaction(TestData.OperatorId, TestData.OperatorAuthorisationCode, TestData.OperatorResponseCode, TestData.OperatorResponseMessage, TestData.OperatorTransactionId, TestData.ResponseCode, TestData.ResponseMessage); @@ -1513,14 +1131,7 @@ public void TransactionAggregate_AddSettledFee_TransactionNotCompleted_ErrorThro [InlineData(TransactionType.Sale, FeeType.Merchant)] public void TransactionAggregate_AddSettledFee_FeeNotAlreadyAdded_NoErrorThrown(TransactionType transactionType, FeeType feeType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); transactionAggregate.AuthoriseTransaction(TestData.OperatorId, TestData.OperatorAuthorisationCode, TestData.OperatorResponseCode, TestData.OperatorResponseMessage, TestData.OperatorTransactionId, TestData.ResponseCode, TestData.ResponseMessage); @@ -1539,14 +1150,7 @@ public void TransactionAggregate_AddSettledFee_FeeNotAlreadyAdded_NoErrorThrown( [InlineData(TransactionType.Sale)] public void TransactionAggregate_AddSettledFee_UnsupportedFeeType_ErrorThrown(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); transactionAggregate.AuthoriseTransaction(TestData.OperatorId, TestData.OperatorAuthorisationCode, TestData.OperatorResponseCode, TestData.OperatorResponseMessage, TestData.OperatorTransactionId, TestData.ResponseCode, TestData.ResponseMessage); @@ -1563,14 +1167,7 @@ public void TransactionAggregate_AddSettledFee_UnsupportedFeeType_ErrorThrown(Tr [InlineData(FeeType.Merchant)] public void TransactionAggregate_AddSettledFee_LogonTransaction_ErrorThrown(FeeType feeType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - TransactionType.Logon, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, TransactionType.Logon, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AuthoriseTransactionLocally(TestData.AuthorisationCode, TestData.ResponseCode, TestData.ResponseMessage); transactionAggregate.CompleteTransaction(); @@ -1584,14 +1181,7 @@ public void TransactionAggregate_AddSettledFee_LogonTransaction_ErrorThrown(FeeT [InlineData(TransactionType.Sale, FeeType.Merchant)] public void TransactionAggregate_AddFeePendingSettlement_FeeDetailsAdded(TransactionType transactionType, FeeType feeType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); transactionAggregate.AuthoriseTransaction(TestData.OperatorId, TestData.OperatorAuthorisationCode, TestData.OperatorResponseCode, TestData.OperatorResponseMessage, TestData.OperatorTransactionId, TestData.ResponseCode, TestData.ResponseMessage); @@ -1618,14 +1208,7 @@ public void TransactionAggregate_AddFeePendingSettlement_FeeDetailsAdded(Transac [InlineData(TransactionType.Sale)] public void TransactionAggregate_AddFeePendingSettlement_NullFee_ErrorThrown(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); transactionAggregate.AuthoriseTransaction(TestData.OperatorId, TestData.OperatorAuthorisationCode, TestData.OperatorResponseCode, TestData.OperatorResponseMessage, TestData.OperatorTransactionId, TestData.ResponseCode, TestData.ResponseMessage); @@ -1641,14 +1224,7 @@ public void TransactionAggregate_AddFeePendingSettlement_NullFee_ErrorThrown(Tra [InlineData(TransactionType.Sale, FeeType.Merchant)] public void TransactionAggregate_AddFeePendingSettlement_TransactionNotAuthorised_ErrorThrown(TransactionType transactionType, FeeType feeType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); transactionAggregate.DeclineTransaction(TestData.OperatorId, TestData.OperatorResponseCode, TestData.OperatorResponseMessage, TestData.ResponseCode, TestData.ResponseMessage); @@ -1664,14 +1240,7 @@ public void TransactionAggregate_AddFeePendingSettlement_TransactionNotAuthorise [InlineData(TransactionType.Sale, FeeType.ServiceProvider)] public void TransactionAggregate_AddFeePendingSettlement_TransactionNotCompleted_ErrorThrown(TransactionType transactionType, FeeType feeType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); transactionAggregate.AuthoriseTransaction(TestData.OperatorId, TestData.OperatorAuthorisationCode, TestData.OperatorResponseCode, TestData.OperatorResponseMessage, TestData.OperatorTransactionId, TestData.ResponseCode, TestData.ResponseMessage); @@ -1685,14 +1254,7 @@ public void TransactionAggregate_AddFeePendingSettlement_TransactionNotCompleted [InlineData(TransactionType.Sale, FeeType.Merchant)] public void TransactionAggregate_AddFeePendingSettlement_FeeAlreadyAdded_NoErrorThrown(TransactionType transactionType, FeeType feeType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); transactionAggregate.AuthoriseTransaction(TestData.OperatorId, TestData.OperatorAuthorisationCode, TestData.OperatorResponseCode, TestData.OperatorResponseMessage, TestData.OperatorTransactionId, TestData.ResponseCode, TestData.ResponseMessage); @@ -1708,14 +1270,7 @@ public void TransactionAggregate_AddFeePendingSettlement_FeeAlreadyAdded_NoError [InlineData(TransactionType.Sale)] public void TransactionAggregate_AddFeePendingSettlement_UnsupportedFeeType_ErrorThrown(TransactionType transactionType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - transactionType, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, transactionType, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); transactionAggregate.AuthoriseTransaction(TestData.OperatorId, TestData.OperatorAuthorisationCode, TestData.OperatorResponseCode, TestData.OperatorResponseMessage, TestData.OperatorTransactionId, TestData.ResponseCode, TestData.ResponseMessage); @@ -1731,14 +1286,7 @@ public void TransactionAggregate_AddFeePendingSettlement_UnsupportedFeeType_Erro [InlineData(FeeType.Merchant)] public void TransactionAggregate_AddFeePendingSettlement_LogonTransaction_ErrorThrown(FeeType feeType){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - TransactionType.Logon, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, TransactionType.Logon, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AuthoriseTransactionLocally(TestData.AuthorisationCode, TestData.ResponseCode, TestData.ResponseMessage); transactionAggregate.CompleteTransaction(); @@ -1762,14 +1310,7 @@ public void TransactionAggregate_AddFeePendingSettlement_LogonTransaction_ErrorT public void TransactionAggregate_RecordCostPrice_SaleTransaction_CostPriceRecorded(Decimal unitCost, Decimal totalCost, Decimal? expectedUnitCost, Decimal? expectedTotalCost, Boolean expectedCostsCalculated) { Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - TransactionType.Logon, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, TransactionType.Logon, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); Result result = transactionAggregate.RecordCostPrice(unitCost, totalCost); result.IsSuccess.ShouldBeTrue(); @@ -1782,14 +1323,7 @@ public void TransactionAggregate_RecordCostPrice_SaleTransaction_CostPriceRecord [Fact] public void TransactionAggregate_RecordCostPrice_SaleTransaction_CostAlreadyRecorded(){ Aggregates.TransactionAggregate transactionAggregate = Aggregates.TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - TransactionType.Logon, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, TransactionType.Logon, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.RecordCostPrice(TestData.UnitCostPrice, TestData.TotalCostPrice); diff --git a/TransactionProcessor.Aggregates/TransactionAggregate.cs b/TransactionProcessor.Aggregates/TransactionAggregate.cs index 9e35a3c6..dd35f9db 100644 --- a/TransactionProcessor.Aggregates/TransactionAggregate.cs +++ b/TransactionProcessor.Aggregates/TransactionAggregate.cs @@ -50,6 +50,13 @@ public static string ToCodeString(this TransactionResponseCode code) } } + public class TransactionStartContext + { + public Guid EstateId { get; init; } + public Guid MerchantId { get; init; } + public String DeviceIdentifier { get; init; } + } + public static class TransactionAggregateExtensions{ public static Result DeclineTransaction(this TransactionAggregate aggregate, @@ -497,18 +504,14 @@ public static Result StartTransaction(this TransactionAggregate aggregate, String transactionNumber, TransactionType transactionType, String transactionReference, - Guid estateId, - Guid merchantId, - String deviceIdentifier, + TransactionStartContext transactionStartContext, Decimal? transactionAmount) { Result result = ValidateStartTransactionArguments(transactionDateTime, transactionNumber, transactionType, transactionReference, - estateId, - merchantId, - deviceIdentifier); + transactionStartContext); if (result.IsFailed) return result; @@ -517,14 +520,14 @@ public static Result StartTransaction(this TransactionAggregate aggregate, return result; TransactionDomainEvents.TransactionHasStartedEvent transactionHasStartedEvent = new(aggregate.AggregateId, - estateId, - merchantId, - transactionDateTime, - transactionNumber, - transactionType.ToString(), - transactionReference, - deviceIdentifier, - transactionAmount); + transactionStartContext.EstateId, + transactionStartContext.MerchantId, + transactionDateTime, + transactionNumber, + transactionType.ToString(), + transactionReference, + transactionStartContext.DeviceIdentifier, + transactionAmount); aggregate.ApplyAndAppend(transactionHasStartedEvent); @@ -535,10 +538,11 @@ private static Result ValidateStartTransactionArguments(DateTime transactionDate String transactionNumber, TransactionType transactionType, String transactionReference, - Guid estateId, - Guid merchantId, - String deviceIdentifier) + TransactionStartContext transactionStartContext) { + if (transactionStartContext == null) + return Result.Invalid("Transaction Start Context must not be null"); + if (transactionDateTime == DateTime.MinValue) return Result.Invalid($"Transaction Date Time must not be [{DateTime.MinValue}]"); if (String.IsNullOrEmpty(transactionNumber)) @@ -553,11 +557,11 @@ private static Result ValidateStartTransactionArguments(DateTime transactionDate if (Enum.IsDefined(typeof(TransactionType), transactionType) == false) return Result.Invalid("Transaction Type not valid"); - if (estateId == Guid.Empty) + if (transactionStartContext.EstateId == Guid.Empty) return Result.Invalid($"Estate Id must not be [{Guid.Empty}]"); - if (merchantId == Guid.Empty) + if (transactionStartContext.MerchantId == Guid.Empty) return Result.Invalid($"Merchant Id must not be [{Guid.Empty}]"); - if (String.IsNullOrEmpty(deviceIdentifier)) + if (String.IsNullOrEmpty(transactionStartContext.DeviceIdentifier)) return Result.Invalid("Device Identifier must not be null or empty"); return Result.Success(); diff --git a/TransactionProcessor.BusinessLogic.Tests/Services/TransactionDomainServiceTests.cs b/TransactionProcessor.BusinessLogic.Tests/Services/TransactionDomainServiceTests.cs index 8890e353..f0d35e96 100644 --- a/TransactionProcessor.BusinessLogic.Tests/Services/TransactionDomainServiceTests.cs +++ b/TransactionProcessor.BusinessLogic.Tests/Services/TransactionDomainServiceTests.cs @@ -502,10 +502,7 @@ public async Task TransactionDomainService_ResendTransactionReceipt_TransactionR public async Task TransactionDomainService_RequireFeeCalculation_IsNotAuthorised_ReturnsFalse(){ TransactionAggregate transactionAggregate = TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, - TransactionType.Sale, TestData.TransactionReference, - TestData.EstateId, TestData.MerchantId, TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, TransactionType.Sale, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.DeclineTransaction(TestData.OperatorId, "111", "SUCCESS", TransactionResponseCode.Success, "SUCCESS"); // TODO: maybe move this to an extension on aggregate @@ -517,10 +514,7 @@ public async Task TransactionDomainService_RequireFeeCalculation_IsNotAuthorised public async Task TransactionDomainService_RequireFeeCalculation_IsNotCompelted_ReturnsFalse() { TransactionAggregate transactionAggregate = TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, - TransactionType.Sale, TestData.TransactionReference, - TestData.EstateId, TestData.MerchantId, TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, TransactionType.Sale, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AuthoriseTransaction(TestData.OperatorId, "111", "111", "SUCCESS", "1234", TransactionResponseCode.Success, "SUCCESS"); var result = TransactionHelpers.RequireFeeCalculation(transactionAggregate); @@ -531,10 +525,7 @@ public async Task TransactionDomainService_RequireFeeCalculation_IsNotCompelted_ public async Task TransactionDomainService_RequireFeeCalculation_IsALogon_ReturnsFalse() { TransactionAggregate transactionAggregate = TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, - TransactionType.Logon, TestData.TransactionReference, - TestData.EstateId, TestData.MerchantId, TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, TransactionType.Logon, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AuthoriseTransactionLocally("111", TransactionResponseCode.InvalidDeviceIdentifier, "SUCCESS"); transactionAggregate.CompleteTransaction(); @@ -547,10 +538,7 @@ public async Task TransactionDomainService_RequireFeeCalculation_IsALogon_Return public async Task TransactionDomainService_RequireFeeCalculation_NoContractId_ReturnsFalse() { TransactionAggregate transactionAggregate = TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, - TransactionType.Sale, TestData.TransactionReference, - TestData.EstateId, TestData.MerchantId, TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, TransactionType.Sale, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AuthoriseTransaction(TestData.OperatorId, "111", "111", "SUCCESS", "1234", TransactionResponseCode.Success, "SUCCESS"); transactionAggregate.CompleteTransaction(); @@ -563,10 +551,7 @@ public async Task TransactionDomainService_RequireFeeCalculation_NoContractId_Re public async Task TransactionDomainService_RequireFeeCalculation_NullAmount_ReturnsFalse() { TransactionAggregate transactionAggregate = TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, - TransactionType.Sale, TestData.TransactionReference, - TestData.EstateId, TestData.MerchantId, TestData.DeviceIdentifier, - null); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, TransactionType.Sale, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, null); transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); transactionAggregate.AuthoriseTransaction(TestData.OperatorId, "111", "111", "SUCCESS", "1234", TransactionResponseCode.Success, "SUCCESS"); transactionAggregate.CompleteTransaction(); @@ -580,10 +565,7 @@ public async Task TransactionDomainService_RequireFeeCalculation_NullAmount_Retu public async Task TransactionDomainService_RequireFeeCalculation_ReturnsTrue() { TransactionAggregate transactionAggregate = TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, - TransactionType.Sale, TestData.TransactionReference, - TestData.EstateId, TestData.MerchantId, TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, TransactionType.Sale, TestData.TransactionReference, new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }, TestData.TransactionAmount); transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); transactionAggregate.AuthoriseTransaction(TestData.OperatorId, "111", "111", "SUCCESS", "1234", TransactionResponseCode.Success, "SUCCESS"); transactionAggregate.CompleteTransaction(); diff --git a/TransactionProcessor.BusinessLogic/Services/TransactionDomainService.cs b/TransactionProcessor.BusinessLogic/Services/TransactionDomainService.cs index caf6cd3a..93a4ea75 100644 --- a/TransactionProcessor.BusinessLogic/Services/TransactionDomainService.cs +++ b/TransactionProcessor.BusinessLogic/Services/TransactionDomainService.cs @@ -102,7 +102,7 @@ public async Task> ProcessLogonTransacti // Generate a transaction reference String transactionReference = TransactionHelpers.GenerateTransactionReference(); - Result stateResult = transactionAggregate.StartTransaction(command.TransactionDateTime, command.TransactionNumber, transactionType, transactionReference, command.EstateId, command.MerchantId, command.DeviceIdentifier, null); // Logon transaction has no amount + Result stateResult = transactionAggregate.StartTransaction(command.TransactionDateTime, command.TransactionNumber, transactionType, transactionReference, new TransactionStartContext { EstateId = command.EstateId, MerchantId = command.MerchantId, DeviceIdentifier = command.DeviceIdentifier }, null); // Logon transaction has no amount if (stateResult.IsFailed) return ResultHelpers.CreateFailure(stateResult); @@ -654,7 +654,7 @@ private Result StartTransaction(TransactionAggregate transactionAggregate, String transactionReference = TransactionHelpers.GenerateTransactionReference(); Decimal? amount = command.AdditionalTransactionMetadata.ExtractFieldFromMetadata("Amount"); - Result result = transactionAggregate.StartTransaction(command.TransactionDateTime, command.TransactionNumber, transactionType, transactionReference, command.EstateId, command.MerchantId, command.DeviceIdentifier, amount); + Result result = transactionAggregate.StartTransaction(command.TransactionDateTime, command.TransactionNumber, transactionType, transactionReference, new TransactionStartContext { EstateId = command.EstateId, MerchantId = command.MerchantId, DeviceIdentifier = command.DeviceIdentifier }, amount); if (result.IsFailed) return result; diff --git a/TransactionProcessor.Testing/TestData.cs b/TransactionProcessor.Testing/TestData.cs index 3bd126c7..9db65983 100644 --- a/TransactionProcessor.Testing/TestData.cs +++ b/TransactionProcessor.Testing/TestData.cs @@ -1109,18 +1109,13 @@ public static Dictionary AdditionalTransactionMetaDataForPataPaw #region Methods + private static TransactionStartContext CreateTransactionStartContext() => new TransactionStartContext { EstateId = TestData.EstateId, MerchantId = TestData.MerchantId, DeviceIdentifier = TestData.DeviceIdentifier }; + public static TransactionAggregate GetCompletedLogonTransactionAggregate() { TransactionAggregate transactionAggregate = TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - TestData.TransactionTypeLogon, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, TestData.TransactionTypeLogon, TestData.TransactionReference, CreateTransactionStartContext(), TestData.TransactionAmount); transactionAggregate.AuthoriseTransactionLocally(TestData.AuthorisationCode, TestData.ResponseCode, TestData.ResponseMessage); @@ -1133,14 +1128,7 @@ public static TransactionAggregate GetCompletedAuthorisedSaleTransactionAggregat { TransactionAggregate transactionAggregate = TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - TestData.TransactionTypeSale, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, TestData.TransactionTypeSale, TestData.TransactionReference, CreateTransactionStartContext(), TestData.TransactionAmount); transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); @@ -1161,14 +1149,7 @@ public static TransactionAggregate GetCompletedAuthorisedSaleTransactionAggregat { TransactionAggregate transactionAggregate = TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - TestData.TransactionTypeSale, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, TestData.TransactionTypeSale, TestData.TransactionReference, CreateTransactionStartContext(), TestData.TransactionAmount); transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); @@ -1190,14 +1171,7 @@ public static TransactionAggregate GetCompletedAuthorisedSaleTransactionWithRece { TransactionAggregate transactionAggregate = TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - TestData.TransactionTypeSale, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, TestData.TransactionTypeSale, TestData.TransactionReference, CreateTransactionStartContext(), TestData.TransactionAmount); transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); @@ -1220,14 +1194,7 @@ public static TransactionAggregate GetCompletedDeclinedSaleTransactionAggregate( { TransactionAggregate transactionAggregate = TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - TestData.TransactionTypeSale, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, TestData.TransactionTypeSale, TestData.TransactionReference, CreateTransactionStartContext(), TestData.TransactionAmount); transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); @@ -1246,14 +1213,7 @@ public static TransactionAggregate GetIncompleteAuthorisedSaleTransactionAggrega { TransactionAggregate transactionAggregate = TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - TestData.TransactionTypeSale, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, TestData.TransactionTypeSale, TestData.TransactionReference, CreateTransactionStartContext(), TestData.TransactionAmount); transactionAggregate.AddProductDetails(TestData.ContractId, TestData.ProductId); @@ -1270,14 +1230,7 @@ public static TransactionAggregate GetCompletedAuthorisedLogonTransactionAggrega { TransactionAggregate transactionAggregate = TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - TestData.TransactionTypeLogon, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, TestData.TransactionTypeLogon, TestData.TransactionReference, CreateTransactionStartContext(), TestData.TransactionAmount); transactionAggregate.AuthoriseTransactionLocally(TestData.AuthorisationCode, TestData.ResponseCode, @@ -1292,14 +1245,7 @@ public static TransactionAggregate GetCompletedAuthorisedSaleWithNoProductDetail { TransactionAggregate transactionAggregate = TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - TestData.TransactionTypeSale, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, TestData.TransactionTypeSale, TestData.TransactionReference, CreateTransactionStartContext(), TestData.TransactionAmount); transactionAggregate.AuthoriseTransaction(TestData.OperatorId, TestData.AuthorisationCode, @@ -1341,14 +1287,7 @@ public static TransactionAggregate GetLocallyAuthorisedTransactionAggregate() { TransactionAggregate transactionAggregate = TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - TestData.TransactionTypeLogon, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, TestData.TransactionTypeLogon, TestData.TransactionReference, CreateTransactionStartContext(), TestData.TransactionAmount); transactionAggregate.AuthoriseTransactionLocally(TestData.AuthorisationCode, TestData.ResponseCode, TestData.ResponseMessage); @@ -1359,14 +1298,7 @@ public static TransactionAggregate GetLocallyDeclinedTransactionAggregate(Transa { TransactionAggregate transactionAggregate = TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - TestData.TransactionTypeLogon, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, TestData.TransactionTypeLogon, TestData.TransactionReference, CreateTransactionStartContext(), TestData.TransactionAmount); transactionAggregate.DeclineTransactionLocally(transactionResponseCode, TestData.GetResponseCodeMessage(transactionResponseCode)); @@ -1378,14 +1310,7 @@ public static TransactionAggregate GetDeclinedTransactionAggregate(TransactionRe { TransactionAggregate transactionAggregate = TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - TestData.TransactionTypeLogon, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, TestData.TransactionTypeLogon, TestData.TransactionReference, CreateTransactionStartContext(), TestData.TransactionAmount); transactionAggregate.DeclineTransaction(TestData.OperatorId, TestData.DeclinedOperatorResponseCode, @@ -1410,14 +1335,7 @@ public static TransactionAggregate GetStartedTransactionAggregate() { TransactionAggregate transactionAggregate = TransactionAggregate.Create(TestData.TransactionId); - transactionAggregate.StartTransaction(TestData.TransactionDateTime, - TestData.TransactionNumber, - TestData.TransactionTypeLogon, - TestData.TransactionReference, - TestData.EstateId, - TestData.MerchantId, - TestData.DeviceIdentifier, - TestData.TransactionAmount); + transactionAggregate.StartTransaction(TestData.TransactionDateTime, TestData.TransactionNumber, TestData.TransactionTypeLogon, TestData.TransactionReference, CreateTransactionStartContext(), TestData.TransactionAmount); return transactionAggregate; }