diff --git a/TransactionProcessor.BusinessLogic.Tests/DomainEventHandlers/TransactionDomainEventHandlerTests.cs b/TransactionProcessor.BusinessLogic.Tests/DomainEventHandlers/TransactionDomainEventHandlerTests.cs index bc4912fd..dbd10a9f 100644 --- a/TransactionProcessor.BusinessLogic.Tests/DomainEventHandlers/TransactionDomainEventHandlerTests.cs +++ b/TransactionProcessor.BusinessLogic.Tests/DomainEventHandlers/TransactionDomainEventHandlerTests.cs @@ -108,7 +108,7 @@ public async Task TransactionDomainEventHandler_Handle_TransactionHasBeenComplet this.TransactionAggregateManager.Setup(t => t.GetAggregate(It.IsAny(), It.IsAny(), It.IsAny())) .ReturnsAsync(TestData.GetCompletedAuthorisedSaleTransactionAggregate); - this.FeeCalculationManager.Setup(f => f.CalculateFees(It.IsAny>(), It.IsAny())).Returns(new List + this.FeeCalculationManager.Setup(f => f.CalculateFees(It.IsAny>(), It.IsAny(), It.IsAny())).Returns(new List { TestData.CalculatedFeeMerchantFee(), TestData.CalculatedFeeServiceProviderFee @@ -154,7 +154,7 @@ public async Task TransactionDomainEventHandler_Handle_TransactionHasBeenComplet this.SettlementAggregateRepository.Setup(p => p.GetLatestVersion(It.IsAny(), It.IsAny())) .ReturnsAsync(pendingSettlementAggregate); - this.FeeCalculationManager.Setup(f => f.CalculateFees(It.IsAny>(), It.IsAny())).Returns(new List + this.FeeCalculationManager.Setup(f => f.CalculateFees(It.IsAny>(), It.IsAny(), It.IsAny())).Returns(new List { TestData.CalculatedFeeMerchantFee(), TestData.CalculatedFeeServiceProviderFee @@ -204,7 +204,7 @@ public async Task TransactionDomainEventHandler_Handle_TransactionHasBeenComplet this.SettlementAggregateRepository.Setup(p => p.GetLatestVersion(It.IsAny(), It.IsAny())) .ReturnsAsync(pendingSettlementAggregate); - this.FeeCalculationManager.Setup(f => f.CalculateFees(It.IsAny>(), It.IsAny())).Returns(new List + this.FeeCalculationManager.Setup(f => f.CalculateFees(It.IsAny>(), It.IsAny(), It.IsAny())).Returns(new List { TestData.CalculatedFeeMerchantFee(), TestData.CalculatedFeeServiceProviderFee @@ -251,7 +251,7 @@ public async Task TransactionDomainEventHandler_Handle_TransactionHasBeenComplet this.TransactionAggregateManager.Setup(t => t.GetAggregate(It.IsAny(), It.IsAny(), It.IsAny())) .ReturnsAsync(TestData.GetCompletedAuthorisedSaleTransactionAggregate); - this.FeeCalculationManager.Setup(f => f.CalculateFees(It.IsAny>(), It.IsAny())).Returns(new List + this.FeeCalculationManager.Setup(f => f.CalculateFees(It.IsAny>(), It.IsAny(), It.IsAny())).Returns(new List { TestData.CalculatedFeeMerchantFee(), TestData.CalculatedFeeServiceProviderFee diff --git a/TransactionProcessor.BusinessLogic/EventHandling/TransactionDomainEventHandler.cs b/TransactionProcessor.BusinessLogic/EventHandling/TransactionDomainEventHandler.cs index 8083e6cb..9f57353c 100644 --- a/TransactionProcessor.BusinessLogic/EventHandling/TransactionDomainEventHandler.cs +++ b/TransactionProcessor.BusinessLogic/EventHandling/TransactionDomainEventHandler.cs @@ -202,7 +202,7 @@ private async Task HandleSpecificDomainEvent(TransactionHasBeenCompletedEvent do } // Do the fee calculation - List resultFees = this.FeeCalculationManager.CalculateFees(feesForCalculation, transactionAggregate.TransactionAmount.Value); + List resultFees = this.FeeCalculationManager.CalculateFees(feesForCalculation, transactionAggregate.TransactionAmount.Value, domainEvent.CompletedDateTime); // Process the non merchant fees IEnumerable nonMerchantFees = resultFees.Where(f => f.FeeType == FeeType.ServiceProvider); diff --git a/TransactionProcessor.BusinessLogic/Manager/FeeCalculationManager.cs b/TransactionProcessor.BusinessLogic/Manager/FeeCalculationManager.cs index 2ad8e3e3..808cfce7 100644 --- a/TransactionProcessor.BusinessLogic/Manager/FeeCalculationManager.cs +++ b/TransactionProcessor.BusinessLogic/Manager/FeeCalculationManager.cs @@ -20,7 +20,8 @@ public class FeeCalculationManager : IFeeCalculationManager /// The transaction amount. /// public List CalculateFees(List feeList, - Decimal transactionAmount) + Decimal transactionAmount, + DateTime calculationDateTime = new DateTime()) { List calculatedFees = new List(); @@ -37,7 +38,7 @@ public List CalculateFees(List feeList FeeCalculationType = transactionFeeToCalculate.CalculationType, FeeId = transactionFeeToCalculate.FeeId, FeeValue = transactionFeeToCalculate.Value, - FeeCalculatedDateTime = DateTime.Now + FeeCalculatedDateTime = calculationDateTime == DateTime.MinValue ? DateTime.Now : calculationDateTime }); } @@ -51,7 +52,7 @@ public List CalculateFees(List feeList FeeCalculationType = transactionFeeToCalculate.CalculationType, FeeId = transactionFeeToCalculate.FeeId, FeeValue = transactionFeeToCalculate.Value, - FeeCalculatedDateTime = DateTime.Now + FeeCalculatedDateTime = calculationDateTime == DateTime.MinValue ? DateTime.Now : calculationDateTime }); } } diff --git a/TransactionProcessor.BusinessLogic/Manager/IFeeCalculationManager.cs b/TransactionProcessor.BusinessLogic/Manager/IFeeCalculationManager.cs index d97ffbe9..a08b82d3 100644 --- a/TransactionProcessor.BusinessLogic/Manager/IFeeCalculationManager.cs +++ b/TransactionProcessor.BusinessLogic/Manager/IFeeCalculationManager.cs @@ -17,9 +17,11 @@ public interface IFeeCalculationManager /// /// The fee list. /// The transaction amount. + /// The calculation date time. /// List CalculateFees(List feeList, - Decimal transactionAmount); + Decimal transactionAmount, + DateTime calculationDateTime = new DateTime()); #endregion } diff --git a/TransactionProcessor.IntegrationTests/LogonTransaction/LogonTransaction.feature b/TransactionProcessor.IntegrationTests/LogonTransaction/LogonTransaction.feature index ef9340c1..6c4acbee 100644 --- a/TransactionProcessor.IntegrationTests/LogonTransaction/LogonTransaction.feature +++ b/TransactionProcessor.IntegrationTests/LogonTransaction/LogonTransaction.feature @@ -75,7 +75,6 @@ Scenario: Logon Transaction with Existing Device | EstateName | MerchantName | TransactionNumber | ResponseCode | ResponseMessage | | Test Estate 1 | Test Merchant 1 | 1 | 0000 | SUCCESS | -@PRTest Scenario: Logon Transaction with Invalid Device Given I have assigned the following devices to the merchants diff --git a/TransactionProcessor.IntegrationTests/LogonTransaction/LogonTransaction.feature.cs b/TransactionProcessor.IntegrationTests/LogonTransaction/LogonTransaction.feature.cs index 95df16ff..e46d6d53 100644 --- a/TransactionProcessor.IntegrationTests/LogonTransaction/LogonTransaction.feature.cs +++ b/TransactionProcessor.IntegrationTests/LogonTransaction/LogonTransaction.feature.cs @@ -432,14 +432,12 @@ public virtual void LogonTransactionWithExistingDevice() [Xunit.SkippableFactAttribute(DisplayName="Logon Transaction with Invalid Device")] [Xunit.TraitAttribute("FeatureTitle", "LogonTransaction")] [Xunit.TraitAttribute("Description", "Logon Transaction with Invalid Device")] - [Xunit.TraitAttribute("Category", "PRTest")] public virtual void LogonTransactionWithInvalidDevice() { - string[] tagsOfScenario = new string[] { - "PRTest"}; + string[] tagsOfScenario = ((string[])(null)); System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Logon Transaction with Invalid Device", null, tagsOfScenario, argumentsOfScenario); -#line 79 +#line 78 this.ScenarioInitialize(scenarioInfo); #line hidden bool isScenarioIgnored = default(bool); @@ -472,7 +470,7 @@ public virtual void LogonTransactionWithInvalidDevice() "Test Merchant 1", "00000001", "Test Estate 1"}); -#line 81 +#line 80 testRunner.Given("I have assigned the following devices to the merchants", ((string)(null)), table15, "Given "); #line hidden TechTalk.SpecFlow.Table table16 = new TechTalk.SpecFlow.Table(new string[] { @@ -489,7 +487,7 @@ public virtual void LogonTransactionWithInvalidDevice() "Test Merchant 1", "123456781", "Test Estate 1"}); -#line 85 +#line 84 testRunner.When("I perform the following transactions", ((string)(null)), table16, "When "); #line hidden TechTalk.SpecFlow.Table table17 = new TechTalk.SpecFlow.Table(new string[] { @@ -504,7 +502,7 @@ public virtual void LogonTransactionWithInvalidDevice() "1", "1000", "Device Identifier 123456781 not valid for Merchant Test Merchant 1"}); -#line 89 +#line 88 testRunner.Then("transaction response should contain the following information", ((string)(null)), table17, "Then "); #line hidden } @@ -519,7 +517,7 @@ public virtual void LogonTransactionWithInvalidEstate() string[] tagsOfScenario = ((string[])(null)); System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Logon Transaction with Invalid Estate", null, tagsOfScenario, argumentsOfScenario); -#line 93 +#line 92 this.ScenarioInitialize(scenarioInfo); #line hidden bool isScenarioIgnored = default(bool); @@ -552,7 +550,7 @@ public virtual void LogonTransactionWithInvalidEstate() "Test Merchant 1", "00000001", "Test Estate 1"}); -#line 95 +#line 94 testRunner.Given("I have assigned the following devices to the merchants", ((string)(null)), table18, "Given "); #line hidden TechTalk.SpecFlow.Table table19 = new TechTalk.SpecFlow.Table(new string[] { @@ -569,7 +567,7 @@ public virtual void LogonTransactionWithInvalidEstate() "Test Merchant 1", "123456781", "InvalidEstate"}); -#line 99 +#line 98 testRunner.When("I perform the following transactions", ((string)(null)), table19, "When "); #line hidden TechTalk.SpecFlow.Table table20 = new TechTalk.SpecFlow.Table(new string[] { @@ -584,7 +582,7 @@ public virtual void LogonTransactionWithInvalidEstate() "1", "1001", "Estate Id [79902550-64df-4491-b0c1-4e78943928a3] is not a valid estate"}); -#line 103 +#line 102 testRunner.Then("transaction response should contain the following information", ((string)(null)), table20, "Then "); #line hidden } @@ -599,7 +597,7 @@ public virtual void LogonTransactionWithInvalidMerchant() string[] tagsOfScenario = ((string[])(null)); System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Logon Transaction with Invalid Merchant", null, tagsOfScenario, argumentsOfScenario); -#line 107 +#line 106 this.ScenarioInitialize(scenarioInfo); #line hidden bool isScenarioIgnored = default(bool); @@ -632,7 +630,7 @@ public virtual void LogonTransactionWithInvalidMerchant() "Test Merchant 1", "00000001", "Test Estate 1"}); -#line 109 +#line 108 testRunner.Given("I have assigned the following devices to the merchants", ((string)(null)), table21, "Given "); #line hidden TechTalk.SpecFlow.Table table22 = new TechTalk.SpecFlow.Table(new string[] { @@ -649,7 +647,7 @@ public virtual void LogonTransactionWithInvalidMerchant() "InvalidMerchant", "123456781", "Test Estate 1"}); -#line 113 +#line 112 testRunner.When("I perform the following transactions", ((string)(null)), table22, "When "); #line hidden TechTalk.SpecFlow.Table table23 = new TechTalk.SpecFlow.Table(new string[] { @@ -665,7 +663,7 @@ public virtual void LogonTransactionWithInvalidMerchant() "1002", "Merchant Id [d59320fa-4c3e-4900-a999-483f6a10c69a] is not a valid merchant for es" + "tate [Test Estate 1]"}); -#line 117 +#line 116 testRunner.Then("transaction response should contain the following information", ((string)(null)), table23, "Then "); #line hidden } diff --git a/TransactionProcessor.IntegrationTests/SaleTransaction/SaleTransactionFeature.feature b/TransactionProcessor.IntegrationTests/SaleTransaction/SaleTransactionFeature.feature index 47c847d9..b38e927d 100644 --- a/TransactionProcessor.IntegrationTests/SaleTransaction/SaleTransactionFeature.feature +++ b/TransactionProcessor.IntegrationTests/SaleTransaction/SaleTransactionFeature.feature @@ -104,7 +104,6 @@ Scenario: Sale Transactions | Test Estate 1 | Test Merchant 2 | 6 | 0000 | SUCCESS | | Test Estate 2 | Test Merchant 3 | 7 | 0000 | SUCCESS | -@PRTest Scenario: Sale Transaction with Invalid Device When I perform the following transactions @@ -135,7 +134,6 @@ Scenario: Sale Transaction with Invalid Merchant | EstateName | MerchantName | TransactionNumber | ResponseCode | ResponseMessage | | Test Estate 1 | InvalidMerchant | 1 | 1002 | Merchant Id [d59320fa-4c3e-4900-a999-483f6a10c69a] is not a valid merchant for estate [Test Estate 1] | -@PRTest Scenario: Sale Transaction with Not Enough Credit Available When I perform the following transactions diff --git a/TransactionProcessor.IntegrationTests/SaleTransaction/SaleTransactionFeature.feature.cs b/TransactionProcessor.IntegrationTests/SaleTransaction/SaleTransactionFeature.feature.cs index f2ccecc7..7d4918de 100644 --- a/TransactionProcessor.IntegrationTests/SaleTransaction/SaleTransactionFeature.feature.cs +++ b/TransactionProcessor.IntegrationTests/SaleTransaction/SaleTransactionFeature.feature.cs @@ -630,14 +630,12 @@ public virtual void SaleTransactions() [Xunit.SkippableFactAttribute(DisplayName="Sale Transaction with Invalid Device")] [Xunit.TraitAttribute("FeatureTitle", "SaleTransaction")] [Xunit.TraitAttribute("Description", "Sale Transaction with Invalid Device")] - [Xunit.TraitAttribute("Category", "PRTest")] public virtual void SaleTransactionWithInvalidDevice() { - string[] tagsOfScenario = new string[] { - "PRTest"}; + string[] tagsOfScenario = ((string[])(null)); System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Sale Transaction with Invalid Device", null, tagsOfScenario, argumentsOfScenario); -#line 108 +#line 107 this.ScenarioInitialize(scenarioInfo); #line hidden bool isScenarioIgnored = default(bool); @@ -686,7 +684,7 @@ public virtual void SaleTransactionWithInvalidDevice() "testcustomer@customer.co.uk", "Safaricom Contract", "Variable Topup"}); -#line 110 +#line 109 testRunner.When("I perform the following transactions", ((string)(null)), table54, "When "); #line hidden TechTalk.SpecFlow.Table table55 = new TechTalk.SpecFlow.Table(new string[] { @@ -701,7 +699,7 @@ public virtual void SaleTransactionWithInvalidDevice() "1", "1000", "Device Identifier 123456781 not valid for Merchant Test Merchant 1"}); -#line 114 +#line 113 testRunner.Then("transaction response should contain the following information", ((string)(null)), table55, "Then "); #line hidden } @@ -716,7 +714,7 @@ public virtual void SaleTransactionWithInvalidEstate() string[] tagsOfScenario = ((string[])(null)); System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Sale Transaction with Invalid Estate", null, tagsOfScenario, argumentsOfScenario); -#line 118 +#line 117 this.ScenarioInitialize(scenarioInfo); #line hidden bool isScenarioIgnored = default(bool); @@ -765,7 +763,7 @@ public virtual void SaleTransactionWithInvalidEstate() "testcustomer@customer.co.uk", "Safaricom Contract", "Variable Topup"}); -#line 120 +#line 119 testRunner.When("I perform the following transactions", ((string)(null)), table56, "When "); #line hidden TechTalk.SpecFlow.Table table57 = new TechTalk.SpecFlow.Table(new string[] { @@ -780,7 +778,7 @@ public virtual void SaleTransactionWithInvalidEstate() "1", "1001", "Estate Id [79902550-64df-4491-b0c1-4e78943928a3] is not a valid estate"}); -#line 124 +#line 123 testRunner.Then("transaction response should contain the following information", ((string)(null)), table57, "Then "); #line hidden } @@ -795,7 +793,7 @@ public virtual void SaleTransactionWithInvalidMerchant() string[] tagsOfScenario = ((string[])(null)); System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Sale Transaction with Invalid Merchant", null, tagsOfScenario, argumentsOfScenario); -#line 128 +#line 127 this.ScenarioInitialize(scenarioInfo); #line hidden bool isScenarioIgnored = default(bool); @@ -844,7 +842,7 @@ public virtual void SaleTransactionWithInvalidMerchant() "testcustomer@customer.co.uk", "Safaricom Contract", "Variable Topup"}); -#line 130 +#line 129 testRunner.When("I perform the following transactions", ((string)(null)), table58, "When "); #line hidden TechTalk.SpecFlow.Table table59 = new TechTalk.SpecFlow.Table(new string[] { @@ -860,7 +858,7 @@ public virtual void SaleTransactionWithInvalidMerchant() "1002", "Merchant Id [d59320fa-4c3e-4900-a999-483f6a10c69a] is not a valid merchant for es" + "tate [Test Estate 1]"}); -#line 134 +#line 133 testRunner.Then("transaction response should contain the following information", ((string)(null)), table59, "Then "); #line hidden } @@ -870,14 +868,12 @@ public virtual void SaleTransactionWithInvalidMerchant() [Xunit.SkippableFactAttribute(DisplayName="Sale Transaction with Not Enough Credit Available")] [Xunit.TraitAttribute("FeatureTitle", "SaleTransaction")] [Xunit.TraitAttribute("Description", "Sale Transaction with Not Enough Credit Available")] - [Xunit.TraitAttribute("Category", "PRTest")] public virtual void SaleTransactionWithNotEnoughCreditAvailable() { - string[] tagsOfScenario = new string[] { - "PRTest"}; + string[] tagsOfScenario = ((string[])(null)); System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Sale Transaction with Not Enough Credit Available", null, tagsOfScenario, argumentsOfScenario); -#line 139 +#line 137 this.ScenarioInitialize(scenarioInfo); #line hidden bool isScenarioIgnored = default(bool); @@ -926,7 +922,7 @@ public virtual void SaleTransactionWithNotEnoughCreditAvailable() "testcustomer@customer.co.uk", "Safaricom Contract", "Variable Topup"}); -#line 141 +#line 139 testRunner.When("I perform the following transactions", ((string)(null)), table60, "When "); #line hidden TechTalk.SpecFlow.Table table61 = new TechTalk.SpecFlow.Table(new string[] { @@ -942,7 +938,7 @@ public virtual void SaleTransactionWithNotEnoughCreditAvailable() "1009", "Merchant [Test Merchant 1] does not have enough credit available [210.0] to perfo" + "rm transaction amount [300.00]"}); -#line 146 +#line 144 testRunner.Then("transaction response should contain the following information", ((string)(null)), table61, "Then "); #line hidden } diff --git a/TransactionProcessor.IntegrationTests/Settlement/Settlement.feature b/TransactionProcessor.IntegrationTests/Settlement/Settlement.feature index 3a8fa1fb..1c5186c4 100644 --- a/TransactionProcessor.IntegrationTests/Settlement/Settlement.feature +++ b/TransactionProcessor.IntegrationTests/Settlement/Settlement.feature @@ -46,7 +46,6 @@ Background: | EstateName | OperatorName | ContractDescription | ProductName | CalculationType | FeeDescription | Value | | Test Estate 1 | Safaricom | Safaricom Contract | Variable Topup | Fixed | Merchant Commission | 2.50 | -@PRTest Scenario: Get Pending Settlement Given I create the following merchants | MerchantName | AddressLine1 | Town | Region | Country | ContactName | EmailAddress | EstateName | SettlementSchedule | @@ -144,8 +143,8 @@ Scenario: Process Settlement When I get the pending settlements the following information should be returned | SettlementDate | EstateName | NumberOfFees | - | Yesterday | Test Estate 1 | 1 | + | Today | Test Estate 1 | 1 | - When I process the settlement for 'Yesterday' on Estate 'Test Estate 1' then 1 fees are marked as settled and the settlement is completed + When I process the settlement for 'Today' on Estate 'Test Estate 1' then 1 fees are marked as settled and the settlement is completed diff --git a/TransactionProcessor.IntegrationTests/Settlement/Settlement.feature.cs b/TransactionProcessor.IntegrationTests/Settlement/Settlement.feature.cs index 2ba0cfa8..c852de07 100644 --- a/TransactionProcessor.IntegrationTests/Settlement/Settlement.feature.cs +++ b/TransactionProcessor.IntegrationTests/Settlement/Settlement.feature.cs @@ -247,14 +247,12 @@ void System.IDisposable.Dispose() [Xunit.SkippableFactAttribute(DisplayName="Get Pending Settlement")] [Xunit.TraitAttribute("FeatureTitle", "Settlement")] [Xunit.TraitAttribute("Description", "Get Pending Settlement")] - [Xunit.TraitAttribute("Category", "PRTest")] public virtual void GetPendingSettlement() { - string[] tagsOfScenario = new string[] { - "PRTest"}; + string[] tagsOfScenario = ((string[])(null)); System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Get Pending Settlement", null, tagsOfScenario, argumentsOfScenario); -#line 50 +#line 49 this.ScenarioInitialize(scenarioInfo); #line hidden bool isScenarioIgnored = default(bool); @@ -317,7 +315,7 @@ public virtual void GetPendingSettlement() "testcontact3@merchant2.co.uk", "Test Estate 1", "Monthly"}); -#line 51 +#line 50 testRunner.Given("I create the following merchants", ((string)(null)), table71, "Given "); #line hidden TechTalk.SpecFlow.Table table72 = new TechTalk.SpecFlow.Table(new string[] { @@ -362,7 +360,7 @@ public virtual void GetPendingSettlement() "00000003", "10000003", "Test Estate 1"}); -#line 57 +#line 56 testRunner.Given("I have assigned the following operator to the merchants", ((string)(null)), table72, "Given "); #line hidden TechTalk.SpecFlow.Table table73 = new TechTalk.SpecFlow.Table(new string[] { @@ -381,7 +379,7 @@ public virtual void GetPendingSettlement() "123456782", "Test Merchant 3", "Test Estate 1"}); -#line 66 +#line 65 testRunner.Given("I have assigned the following devices to the merchants", ((string)(null)), table73, "Given "); #line hidden TechTalk.SpecFlow.Table table74 = new TechTalk.SpecFlow.Table(new string[] { @@ -408,7 +406,7 @@ public virtual void GetPendingSettlement() "Today", "Test Merchant 3", "Test Estate 1"}); -#line 72 +#line 71 testRunner.Given("I make the following manual merchant deposits", ((string)(null)), table74, "Given "); #line hidden TechTalk.SpecFlow.Table table75 = new TechTalk.SpecFlow.Table(new string[] { @@ -546,7 +544,7 @@ public virtual void GetPendingSettlement() "10 KES", "test@recipient.co.uk", ""}); -#line 78 +#line 77 testRunner.When("I perform the following transactions", ((string)(null)), table75, "When "); #line hidden TechTalk.SpecFlow.Table table76 = new TechTalk.SpecFlow.Table(new string[] { @@ -603,7 +601,7 @@ public virtual void GetPendingSettlement() "8", "0000", "SUCCESS"}); -#line 89 +#line 88 testRunner.Then("transaction response should contain the following information", ((string)(null)), table76, "Then "); #line hidden TechTalk.SpecFlow.Table table77 = new TechTalk.SpecFlow.Table(new string[] { @@ -618,7 +616,7 @@ public virtual void GetPendingSettlement() "NextMonth", "Test Estate 1", "1"}); -#line 100 +#line 99 testRunner.When("I get the pending settlements the following information should be returned", ((string)(null)), table77, "When "); #line hidden } @@ -635,7 +633,7 @@ public virtual void ProcessSettlement() "PRTest"}; System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Process Settlement", null, tagsOfScenario, argumentsOfScenario); -#line 106 +#line 105 this.ScenarioInitialize(scenarioInfo); #line hidden bool isScenarioIgnored = default(bool); @@ -688,7 +686,7 @@ public virtual void ProcessSettlement() "testcontact2@merchant2.co.uk", "Test Estate 1", "Weekly"}); -#line 107 +#line 106 testRunner.Given("I create the following merchants", ((string)(null)), table78, "Given "); #line hidden TechTalk.SpecFlow.Table table79 = new TechTalk.SpecFlow.Table(new string[] { @@ -721,7 +719,7 @@ public virtual void ProcessSettlement() "00000002", "10000002", "Test Estate 1"}); -#line 112 +#line 111 testRunner.Given("I have assigned the following operator to the merchants", ((string)(null)), table79, "Given "); #line hidden TechTalk.SpecFlow.Table table80 = new TechTalk.SpecFlow.Table(new string[] { @@ -736,7 +734,7 @@ public virtual void ProcessSettlement() "123456781", "Test Merchant 2", "Test Estate 1"}); -#line 119 +#line 118 testRunner.Given("I have assigned the following devices to the merchants", ((string)(null)), table80, "Given "); #line hidden TechTalk.SpecFlow.Table table81 = new TechTalk.SpecFlow.Table(new string[] { @@ -757,7 +755,7 @@ public virtual void ProcessSettlement() "Today", "Test Merchant 2", "Test Estate 1"}); -#line 124 +#line 123 testRunner.Given("I make the following manual merchant deposits", ((string)(null)), table81, "Given "); #line hidden TechTalk.SpecFlow.Table table82 = new TechTalk.SpecFlow.Table(new string[] { @@ -850,7 +848,7 @@ public virtual void ProcessSettlement() "10 KES", "", "123456789"}); -#line 129 +#line 128 testRunner.When("I perform the following transactions", ((string)(null)), table82, "When "); #line hidden TechTalk.SpecFlow.Table table83 = new TechTalk.SpecFlow.Table(new string[] { @@ -889,7 +887,7 @@ public virtual void ProcessSettlement() "6", "0000", "SUCCESS"}); -#line 137 +#line 136 testRunner.Then("transaction response should contain the following information", ((string)(null)), table83, "Then "); #line hidden TechTalk.SpecFlow.Table table84 = new TechTalk.SpecFlow.Table(new string[] { @@ -897,15 +895,15 @@ public virtual void ProcessSettlement() "EstateName", "NumberOfFees"}); table84.AddRow(new string[] { - "Yesterday", + "Today", "Test Estate 1", "1"}); -#line 145 +#line 144 testRunner.When("I get the pending settlements the following information should be returned", ((string)(null)), table84, "When "); #line hidden -#line 149 - testRunner.When("I process the settlement for \'Yesterday\' on Estate \'Test Estate 1\' then 1 fees ar" + - "e marked as settled and the settlement is completed", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line 148 + testRunner.When("I process the settlement for \'Today\' on Estate \'Test Estate 1\' then 1 fees are ma" + + "rked as settled and the settlement is completed", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); #line hidden } this.ScenarioCleanup(); diff --git a/TransactionProcessor.IntegrationTests/Shared/SharedSteps.cs b/TransactionProcessor.IntegrationTests/Shared/SharedSteps.cs index 4c93e0ae..2264a782 100644 --- a/TransactionProcessor.IntegrationTests/Shared/SharedSteps.cs +++ b/TransactionProcessor.IntegrationTests/Shared/SharedSteps.cs @@ -278,7 +278,7 @@ public async Task WhenIPerformTheFollowingTransactions(Table table) { String merchantName = SpecflowTableHelper.GetStringRowValue(tableRow, "MerchantName"); String dateString = SpecflowTableHelper.GetStringRowValue(tableRow, "DateTime"); - DateTime transactionDateTime = SpecflowTableHelper.GetDateForDateString(dateString, DateTime.Today); + DateTime transactionDateTime = SpecflowTableHelper.GetDateForDateString(dateString, DateTime.UtcNow); String transactionNumber = SpecflowTableHelper.GetStringRowValue(tableRow, "TransactionNumber"); String transactionType = SpecflowTableHelper.GetStringRowValue(tableRow, "TransactionType"); String deviceIdentifier = SpecflowTableHelper.GetStringRowValue(tableRow, "DeviceIdentifier"); @@ -801,7 +801,7 @@ public async Task GivenIMakeTheFollowingManualMerchantDeposits(Table table) MakeMerchantDepositRequest makeMerchantDepositRequest = new MakeMerchantDepositRequest { - DepositDateTime = SpecflowTableHelper.GetDateForDateString(SpecflowTableHelper.GetStringRowValue(tableRow, "DateTime"), DateTime.Now), + DepositDateTime = SpecflowTableHelper.GetDateForDateString(SpecflowTableHelper.GetStringRowValue(tableRow, "DateTime"), DateTime.UtcNow), Reference = SpecflowTableHelper.GetStringRowValue(tableRow, "Reference"), Amount = SpecflowTableHelper.GetDecimalValue(tableRow, "Amount") }; @@ -888,11 +888,7 @@ public async Task WhenIGetThePendingSettlementsTheFollowingInformationShouldBeRe EstateDetails estateDetails = this.TestingContext.GetEstateDetails(tableRow); String settlementDateString = SpecflowTableHelper.GetStringRowValue(tableRow, "SettlementDate"); Int32 numberOfFees = SpecflowTableHelper.GetIntValue(tableRow, "NumberOfFees"); - DateTime settlementDate = this.GetSettlementDate(DateTime.Today, settlementDateString); - if (Environment.GetEnvironmentVariable("CI") == Boolean.TrueString.ToLower()) - { - settlementDate = settlementDate.AddDays(1); - } + DateTime settlementDate = this.GetSettlementDate(DateTime.UtcNow.Date, settlementDateString); var aggregateid = settlementDate.ToGuid(); await Retry.For(async () => @@ -911,12 +907,8 @@ await this.TestingContext.DockerHelper.TransactionProcessorClient.GetSettlementB [When(@"I process the settlement for '([^']*)' on Estate '([^']*)' then (.*) fees are marked as settled and the settlement is completed")] public async Task WhenIProcessTheSettlementForOnEstateThenFeesAreMarkedAsSettledAndTheSettlementIsCompleted(String dateString, String estateName, Int32 numberOfFeesSettled) { - DateTime settlementDate = this.GetSettlementDate(DateTime.Today, dateString); - if (Environment.GetEnvironmentVariable("CI") == Boolean.TrueString.ToLower()) - { - settlementDate = settlementDate.AddDays(1); - } - + DateTime settlementDate = this.GetSettlementDate(DateTime.UtcNow.Date, dateString); + EstateDetails estateDetails = this.TestingContext.GetEstateDetails(estateName); await this.TestingContext.DockerHelper.TransactionProcessorClient.ProcessSettlement(this.TestingContext.AccessToken, settlementDate,