diff --git a/EventStoreProjections/EventStoreProjections.Tests.njsproj b/EventStoreProjections/EventStoreProjections.Tests.njsproj
index e20710b..3c8804e 100644
--- a/EventStoreProjections/EventStoreProjections.Tests.njsproj
+++ b/EventStoreProjections/EventStoreProjections.Tests.njsproj
@@ -44,9 +44,7 @@
-
-
diff --git a/EventStoreProjections/tests/MerchantBalanceCalculatorTests.js b/EventStoreProjections/tests/MerchantBalanceCalculatorTests.js
deleted file mode 100644
index 9233fe8..0000000
--- a/EventStoreProjections/tests/MerchantBalanceCalculatorTests.js
+++ /dev/null
@@ -1,1071 +0,0 @@
-require('../../NugetPackage/projections/continuous/MerchantBalanceCalculator.js');
-var projection = require('@transactionprocessing/esprojection-testing-framework');
-var testData = require('./TestData.js');
-var describe = require('tape-describe');
-var test = describe('Merchant Balance Calculator Tests');
-
- test('Projection handles merchant created events', t =>
- {
- projection.initialize();
-
- projection.setState({
- initialised: true,
- availableBalance: 0,
- balance: 0,
- lastDepositDateTime: null,
- lastSaleDateTime: null,
- lastFeeProcessedDateTime: null,
- debug: [],
- totalDeposits: 0,
- totalAuthorisedSales: 0,
- totalDeclinedSales: 0,
- totalFees: 0,
- emittedEvents: 1
- });
-
- var estateId = '2af2dab2-86d6-44e3-bcf8-51bec65cf8bc';
- var merchantId = '6be48c04-a00e-4985-a50c-e27461ca47e1';
- var merchantName = 'Test Merchant 1';
- var streamName = "$ce-MerchantArchive";
- var merchantCreatedEvent = testData.getMerchantCreatedEvent(estateId, merchantId, merchantName);
-
- projection.processEvent(
- streamName,
- merchantCreatedEvent.eventType,
- merchantCreatedEvent.data,
- null,
- merchantCreatedEvent.eventId);
-
- var projectionState = projection.getState();
-
- t.notEqual(projectionState,null);
-
- t.equal(projectionState.estateId,merchantCreatedEvent.data.estateId);
- t.equal(projectionState.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(projectionState.merchantName, merchantCreatedEvent.data.merchantName);
- t.end();
- });
-
- test('Projection handles merchant manual deposit event', t => {
-
- projection.initialize();
-
- projection.setState({
- initialised: true,
- availableBalance: 0,
- balance: 0,
- lastDepositDateTime: null,
- lastSaleDateTime: null,
- lastFeeProcessedDateTime: null,
- debug: [],
- totalDeposits: 0,
- totalAuthorisedSales: 0,
- totalDeclinedSales: 0,
- totalFees: 0,
- emittedEvents: 1
- });
-
- var estateId = '2af2dab2-86d6-44e3-bcf8-51bec65cf8bc';
- var merchantId = '6be48c04-a00e-4985-a50c-e27461ca47e1';
- var merchantName = 'Test Merchant 1';
- var depositDateTime = '2020-05-30T06:21:31.356Z';
- var depositAmount = 1000.00;
- var streamName = "$ce-MerchantArchive";
-
- var projectionState = projection.getState();
- t.true(projectionState.initialised);
-
- var merchantCreatedEvent = testData.getMerchantCreatedEvent(estateId, merchantId, merchantName);
-
- projection.processEvent(
- streamName,
- merchantCreatedEvent.eventType,
- merchantCreatedEvent.data,
- null,
- merchantCreatedEvent.eventId);
-
- var manualDepositMadeEvent = testData.getManualDepositMadeEvent(estateId, merchantId, depositDateTime,depositAmount);
-
- projection.processEvent(
- streamName,
- manualDepositMadeEvent.eventType,
- manualDepositMadeEvent.data,
- null,
- manualDepositMadeEvent.eventId);
-
- var projectionState = projection.getState();
-
- t.notEqual(projectionState,null);
-
- t.equal(projectionState.estateId,merchantCreatedEvent.data.estateId);
- t.equal(projectionState.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(projectionState.availableBalance,depositAmount);
- t.equal(projectionState.balance,depositAmount);
- t.equal(projectionState.lastDepositDateTime,depositDateTime);
-
- var events = projection.emittedEvents;
- t.equal(events.length,2);
-
- var eventBody = JSON.parse(events[0].body);
- t.equal(eventBody.estateId,merchantCreatedEvent.data.estateId);
- t.equal(eventBody.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(eventBody.balance,0);
- t.equal(eventBody.changeAmount,0);
- t.equal(eventBody.reference,"Opening Balance");
- t.equal(eventBody.eventId,merchantId);
- t.equal(eventBody.aggregateId,merchantCreatedEvent.data.merchantId);
-
- var eventBody = JSON.parse(events[1].body);
- console.log(eventBody);
- t.equal(eventBody.estateId,merchantCreatedEvent.data.estateId);
- t.equal(eventBody.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(eventBody.balance,depositAmount);
- t.equal(eventBody.changeAmount,depositAmount);
- t.equal(eventBody.reference,"Merchant Deposit");
- t.equal(eventBody.eventId,manualDepositMadeEvent.eventId);
- t.equal(eventBody.aggregateId, manualDepositMadeEvent.data.merchantId);
- t.end();
- });
-
- test('Projection handles merchant automatic deposit event', t => {
-
- projection.initialize();
-
- projection.setState({
- initialised: true,
- availableBalance: 0,
- balance: 0,
- lastDepositDateTime: null,
- lastSaleDateTime: null,
- lastFeeProcessedDateTime: null,
- debug: [],
- totalDeposits: 0,
- totalAuthorisedSales: 0,
- totalDeclinedSales: 0,
- totalFees: 0,
- emittedEvents: 1
- });
-
- var estateId = '2af2dab2-86d6-44e3-bcf8-51bec65cf8bc';
- var merchantId = '6be48c04-a00e-4985-a50c-e27461ca47e1';
- var merchantName = 'Test Merchant 1';
- var depositDateTime = '2020-05-30T06:21:31.356Z';
- var depositAmount = 1000.00;
- var streamName = "$ce-MerchantArchive";
-
- var projectionState = projection.getState();
- t.true(projectionState.initialised);
-
- var merchantCreatedEvent = testData.getMerchantCreatedEvent(estateId, merchantId, merchantName);
-
- projection.processEvent(
- streamName,
- merchantCreatedEvent.eventType,
- merchantCreatedEvent.data,
- null,
- merchantCreatedEvent.eventId);
-
- var manualDepositMadeEvent = testData.getAutomaticDepositMadeEvent(estateId, merchantId, depositDateTime, depositAmount);
-
- projection.processEvent(
- streamName,
- manualDepositMadeEvent.eventType,
- manualDepositMadeEvent.data,
- null,
- manualDepositMadeEvent.eventId);
-
- var projectionState = projection.getState();
-
- t.notEqual(projectionState, null);
-
- t.equal(projectionState.estateId,merchantCreatedEvent.data.estateId);
- t.equal(projectionState.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(projectionState.availableBalance,depositAmount);
- t.equal(projectionState.balance,depositAmount);
- t.equal(projectionState.lastDepositDateTime,depositDateTime);
-
- var events = projection.emittedEvents;
- t.equal(events.length,2);
-
- var eventBody = JSON.parse(events[0].body);
- t.equal(eventBody.estateId,merchantCreatedEvent.data.estateId);
- t.equal(eventBody.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(eventBody.balance,0);
- t.equal(eventBody.changeAmount,0);
- t.equal(eventBody.reference,"Opening Balance");
- t.equal(eventBody.eventId,merchantId);
- t.equal(eventBody.aggregateId,merchantCreatedEvent.data.merchantId);
-
- var eventBody = JSON.parse(events[1].body);
- console.log(eventBody);
- t.equal(eventBody.estateId,merchantCreatedEvent.data.estateId);
- t.equal(eventBody.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(eventBody.balance,depositAmount);
- t.equal(eventBody.changeAmount,depositAmount);
- t.equal(eventBody.reference,"Merchant Deposit");
- t.equal(eventBody.eventId,manualDepositMadeEvent.eventId);
- t.equal(eventBody.aggregateId, manualDepositMadeEvent.data.merchantId);
- t.end();
- });
-
-test('Projection handles multiple merchant manual deposit event', t => {
-
- projection.initialize();
- var estateId = '2af2dab2-86d6-44e3-bcf8-51bec65cf8bc';
- var merchantId = '6be48c04-a00e-4985-a50c-e27461ca47e1';
- var merchantName = 'Test Merchant 1';
- var depositDateTime1 = '2020-05-30T06:21:31.356Z';
- var depositAmount1 = 1000.00;
- var depositDateTime2 = '2020-06-01T06:21:31.356Z';
- var depositAmount2 = 500.00;
- var streamName = "$ce-MerchantArchive";
-
- var projectionState = projection.getState();
- t.true(projectionState.initialised);
-
- var merchantCreatedEvent = testData.getMerchantCreatedEvent(estateId, merchantId, merchantName);
-
- projection.processEvent(
- streamName,
- merchantCreatedEvent.eventType,
- merchantCreatedEvent.data,
- null,
- merchantCreatedEvent.eventId);
-
- var manualDepositMadeEvent1 = testData.getManualDepositMadeEvent(estateId, merchantId, depositDateTime1, depositAmount1);
-
- projection.processEvent(
- streamName,
- manualDepositMadeEvent1.eventType,
- manualDepositMadeEvent1.data,
- null,
- manualDepositMadeEvent1.eventId);
-
- var manualDepositMadeEvent2 = testData.getManualDepositMadeEvent(estateId, merchantId, depositDateTime2, depositAmount2);
- projection.processEvent(
- streamName,
- manualDepositMadeEvent2.eventType,
- manualDepositMadeEvent2.data,
- null,
- manualDepositMadeEvent2.eventId);
-
- var projectionState = projection.getState();
-
- t.notEqual(projectionState, null);
-
- t.equal(projectionState.estateId,merchantCreatedEvent.data.estateId);
- t.equal(projectionState.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(projectionState.availableBalance,depositAmount1 + depositAmount2);
- t.equal(projectionState.balance,depositAmount1 + depositAmount2);
- t.equal(projectionState.lastDepositDateTime,depositDateTime2);
-
- var events = projection.emittedEvents;
- t.equal(events.length,3);
-
- var eventBody = JSON.parse(events[0].body);
- t.equal(eventBody.estateId,merchantCreatedEvent.data.estateId);
- t.equal(eventBody.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(eventBody.balance,0);
- t.equal(eventBody.changeAmount,0);
- t.equal(eventBody.reference,"Opening Balance");
- t.equal(eventBody.eventId,merchantCreatedEvent.data.merchantId);
- t.equal(eventBody.aggregateId,merchantCreatedEvent.data.merchantId);
-
- var eventBody = JSON.parse(events[1].body);
- t.equal(eventBody.estateId,merchantCreatedEvent.data.estateId);
- t.equal(eventBody.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(eventBody.balance,depositAmount1);
- t.equal(eventBody.changeAmount,depositAmount1);
- t.equal(eventBody.reference,"Merchant Deposit");
- t.equal(eventBody.eventId,manualDepositMadeEvent1.eventId);
- t.equal(eventBody.aggregateId,manualDepositMadeEvent1.data.merchantId);
-
- var eventBody = JSON.parse(events[2].body);
- t.equal(eventBody.estateId,merchantCreatedEvent.data.estateId);
- t.equal(eventBody.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(eventBody.balance,depositAmount1 + depositAmount2);
- t.equal(eventBody.changeAmount,depositAmount2);
- t.equal(eventBody.reference,"Merchant Deposit");
- t.equal(eventBody.eventId,manualDepositMadeEvent2.eventId);
- t.equal(eventBody.aggregateId, manualDepositMadeEvent2.data.merchantId);
- t.end();
- });
-
-test('Projection handles multiple merchant manual deposit event not in date order', t => {
-
- projection.initialize();
- var estateId = '2af2dab2-86d6-44e3-bcf8-51bec65cf8bc';
- var merchantId = '6be48c04-a00e-4985-a50c-e27461ca47e1';
- var merchantName = 'Test Merchant 1';
- var depositDateTime2 = '2020-05-30T06:21:31.356Z';
- var depositAmount2 = 1000.00;
- var depositDateTime1 = '2020-06-01T06:21:31.356Z';
- var depositAmount1 = 500.00;
- var expectedBalance = depositAmount1 + depositAmount2;
- var streamName = "$ce-MerchantArchive";
-
- var projectionState = projection.getState();
- t.true(projectionState.initialised);
-
- var merchantCreatedEvent = testData.getMerchantCreatedEvent(estateId, merchantId, merchantName);
-
- projection.processEvent(
- streamName,
- merchantCreatedEvent.eventType,
- merchantCreatedEvent.data,
- null,
- merchantCreatedEvent.eventId);
-
- var manualDepositMadeEvent1 = testData.getManualDepositMadeEvent(estateId, merchantId, depositDateTime1, depositAmount1);
-
- projection.processEvent(
- streamName,
- manualDepositMadeEvent1.eventType,
- manualDepositMadeEvent1.data,
- null,
- manualDepositMadeEvent1.eventId);
-
- var manualDepositMadeEvent2 = testData.getManualDepositMadeEvent(estateId, merchantId, depositDateTime2, depositAmount2);
-
- projection.processEvent(
- streamName,
- manualDepositMadeEvent2.eventType,
- manualDepositMadeEvent2.data,
- null,
- manualDepositMadeEvent2.eventId);
-
- var projectionState = projection.getState();
-
- t.notEqual(projectionState, null);
-
- t.equal(projectionState.estateId,merchantCreatedEvent.data.estateId);
- t.equal(projectionState.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(projectionState.availableBalance,depositAmount1 + depositAmount2);
- t.equal(projectionState.balance,depositAmount1 + depositAmount2);
- t.equal(projectionState.lastDepositDateTime,depositDateTime1);
-
- var events = projection.emittedEvents;
- t.equal(events.length,3);
-
- var eventBody = JSON.parse(events[0].body);
- t.equal(eventBody.estateId,merchantCreatedEvent.data.estateId);
- t.equal(eventBody.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(eventBody.balance,0);
- t.equal(eventBody.changeAmount,0);
- t.equal(eventBody.reference,"Opening Balance");
- t.equal(eventBody.eventId,merchantCreatedEvent.data.merchantId);
- t.equal(eventBody.aggregateId,merchantCreatedEvent.data.merchantId);
-
- var eventBody = JSON.parse(events[1].body);
- t.equal(eventBody.estateId,merchantCreatedEvent.data.estateId);
- t.equal(eventBody.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(eventBody.balance,depositAmount1);
- t.equal(eventBody.changeAmount,depositAmount1);
- t.equal(eventBody.reference,"Merchant Deposit");
- t.equal(eventBody.eventId,manualDepositMadeEvent1.eventId);
- t.equal(eventBody.aggregateId,manualDepositMadeEvent1.data.merchantId);
-
- var eventBody = JSON.parse(events[2].body);
- t.equal(eventBody.estateId,merchantCreatedEvent.data.estateId);
- t.equal(eventBody.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(eventBody.balance,depositAmount1 + depositAmount2);
- t.equal(eventBody.changeAmount,depositAmount2);
- t.equal(eventBody.reference,"Merchant Deposit");
- t.equal(eventBody.eventId,manualDepositMadeEvent2.eventId);
- t.equal(eventBody.aggregateId, manualDepositMadeEvent2.data.merchantId);
- t.end();
- });
-
- test('Projection reduces available balance after transaction started message processed', t =>
- {
- projection.initialize();
-
- var estateId = '2af2dab2-86d6-44e3-bcf8-51bec65cf8bc';
- var merchantId = '6be48c04-a00e-4985-a50c-e27461ca47e1';
- var merchantName = 'Test Merchant 1';
- var depositDateTime = '2020-06-01T06:21:31.356Z';
- var depositAmount = 5000.00;
- var transactionId = 'cf80660e-88c1-434c-a063-92e9076eda1b';
- var transactionAmount = 100.00;
- var transactionType = 'Sale';
- var streamName = "$ce-MerchantArchive";
-
- var projectionState = projection.getState();
- t.true(projectionState.initialised);
-
- var merchantCreatedEvent = testData.getMerchantCreatedEvent(estateId, merchantId, merchantName);
-
- projection.processEvent(
- streamName,
- merchantCreatedEvent.eventType,
- merchantCreatedEvent.data,
- null,
- merchantCreatedEvent.eventId);
-
- var manualDepositMadeEvent = testData.getManualDepositMadeEvent(estateId, merchantId, depositDateTime, depositAmount);
-
- projection.processEvent(
- streamName,
- manualDepositMadeEvent.eventType,
- manualDepositMadeEvent.data,
- null,
- manualDepositMadeEvent.eventId);
-
- var transactionHasStartedEvent = testData.getTransactionHasStartedEvent(estateId,merchantId, transactionId, transactionAmount, transactionType);
-
- projection.processEvent(
- streamName,
- transactionHasStartedEvent.eventType,
- transactionHasStartedEvent.data,
- null,
- transactionHasStartedEvent.eventId);
-
- var projectionState = projection.getState();
-
- t.notEqual(projectionState, null);
-
- t.equal(projectionState.estateId,merchantCreatedEvent.data.estateId);
- t.equal(projectionState.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(projectionState.availableBalance,depositAmount - transactionAmount);
- t.equal(projectionState.balance,depositAmount);
- t.equal(projectionState.lastDepositDateTime,depositDateTime);
- t.equal(projectionState.lastSaleDateTime,transactionHasStartedEvent.data.transactionDateTime);
-
- var events = projection.emittedEvents;
- t.equal(events.length,2);
-
- var eventBody = JSON.parse(events[0].body);
- t.equal(eventBody.estateId,merchantCreatedEvent.data.estateId);
- t.equal(eventBody.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(eventBody.balance,0);
- t.equal(eventBody.changeAmount,0);
- t.equal(eventBody.reference,"Opening Balance");
- t.equal(eventBody.eventId,merchantCreatedEvent.data.merchantId);
- t.equal(eventBody.aggregateId,merchantCreatedEvent.data.merchantId);
-
- var eventBody = JSON.parse(events[1].body);
- t.equal(eventBody.estateId,merchantCreatedEvent.data.estateId);
- t.equal(eventBody.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(eventBody.balance,depositAmount);
- t.equal(eventBody.changeAmount,depositAmount);
- t.equal(eventBody.reference,"Merchant Deposit");
- t.equal(eventBody.eventId,manualDepositMadeEvent.eventId);
- t.equal(eventBody.aggregateId, manualDepositMadeEvent.data.merchantId);
- t.end();
- });
-
-test('Projection reduces balance after transaction completed message processed if transaction is successful', t => {
-
- projection.initialize();
- var estateId = '2af2dab2-86d6-44e3-bcf8-51bec65cf8bc';
- var merchantId = '6be48c04-a00e-4985-a50c-e27461ca47e1';
- var merchantName = 'Test Merchant 1';
- var depositDateTime = '2020-06-01T06:21:31.356Z';
- var depositAmount = 5000.00;
- var transactionId = 'cf80660e-88c1-434c-a063-92e9076eda1b';
- var transactionAmount = 100.00;
- var transactionType = 'Sale';
- var streamName = "$ce-MerchantArchive";
-
- var projectionState = projection.getState();
- t.true(projectionState.initialised);
-
- var merchantCreatedEvent = testData.getMerchantCreatedEvent(estateId, merchantId, merchantName);
-
- projection.processEvent(
- streamName,
- merchantCreatedEvent.eventType,
- merchantCreatedEvent.data,
- null,
- merchantCreatedEvent.eventId);
-
- var manualDepositMadeEvent = testData.getManualDepositMadeEvent(estateId, merchantId, depositDateTime, depositAmount);
-
- projection.processEvent(
- streamName,
- manualDepositMadeEvent.eventType,
- manualDepositMadeEvent.data,
- null,
- manualDepositMadeEvent.eventId);
-
- var transactionHasStartedEvent = testData.getTransactionHasStartedEvent(estateId, merchantId, transactionId, transactionAmount, transactionType);
-
- projection.processEvent(
- streamName,
- transactionHasStartedEvent.eventType,
- transactionHasStartedEvent.data,
- null,
- transactionHasStartedEvent.eventId);
-
- var transactionHasBeenCompletedEvent =
- testData.getTransactionHasBeenCompletedEvent(estateId, merchantId, transactionId, true, transactionAmount);
-
- projection.processEvent(
- streamName,
- transactionHasBeenCompletedEvent.eventType,
- transactionHasBeenCompletedEvent.data,
- null,
- transactionHasBeenCompletedEvent.eventId);
-
- var projectionState = projection.getState();
-
- t.notEqual(projectionState, null);
-
- t.equal(projectionState.estateId,merchantCreatedEvent.data.estateId);
- t.equal(projectionState.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(projectionState.availableBalance,depositAmount - transactionAmount);
- t.equal(projectionState.balance,depositAmount - transactionAmount);
- t.equal(projectionState.lastDepositDateTime,depositDateTime);
- t.equal(projectionState.lastSaleDateTime,transactionHasStartedEvent.data.transactionDateTime);
-
- var events = projection.emittedEvents;
- t.equal(events.length,3);
-
- var eventBody = JSON.parse(events[0].body);
- t.equal(eventBody.estateId,merchantCreatedEvent.data.estateId);
- t.equal(eventBody.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(eventBody.balance,0);
- t.equal(eventBody.changeAmount,0);
- t.equal(eventBody.reference,"Opening Balance");
- t.equal(eventBody.eventId,merchantCreatedEvent.data.merchantId);
- t.equal(eventBody.aggregateId,merchantCreatedEvent.data.merchantId);
-
- var eventBody = JSON.parse(events[1].body);
- t.equal(eventBody.estateId,merchantCreatedEvent.data.estateId);
- t.equal(eventBody.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(eventBody.balance,depositAmount);
- t.equal(eventBody.changeAmount,depositAmount);
- t.equal(eventBody.reference,"Merchant Deposit");
- t.equal(eventBody.eventId,manualDepositMadeEvent.eventId);
- t.equal(eventBody.aggregateId,manualDepositMadeEvent.data.merchantId);
-
- var eventBody = JSON.parse(events[2].body);
- t.equal(eventBody.estateId,merchantCreatedEvent.data.estateId);
- t.equal(eventBody.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(eventBody.balance,depositAmount - transactionAmount);
- t.equal(eventBody.changeAmount,transactionAmount * -1);
- t.equal(eventBody.reference,"Transaction Completed");
- t.equal(eventBody.eventId,transactionHasBeenCompletedEvent.eventId);
- t.equal(eventBody.aggregateId, transactionHasBeenCompletedEvent.data.transactionId);
- t.end();
- });
-
-test('Projection resets available balance after transaction completed message processed if transaction is not successful', t => {
- projection.initialize();
-
- var estateId = '2af2dab2-86d6-44e3-bcf8-51bec65cf8bc';
- var merchantId = '6be48c04-a00e-4985-a50c-e27461ca47e1';
- var merchantName = 'Test Merchant 1';
- var depositDateTime = '2020-06-01T06:21:31.356Z';
- var depositAmount = 5000.00;
- var transactionId = 'cf80660e-88c1-434c-a063-92e9076eda1b';
- var transactionAmount = 100.00;
- var transactionType = 'Sale';
- var streamName = "$ce-MerchantArchive";
-
- var projectionState = projection.getState();
- t.true(projectionState.initialised);
-
- var merchantCreatedEvent = testData.getMerchantCreatedEvent(estateId, merchantId, merchantName);
-
- projection.processEvent(
- streamName,
- merchantCreatedEvent.eventType,
- merchantCreatedEvent.data,
- null,
- merchantCreatedEvent.eventId);
-
- var manualDepositMadeEvent = testData.getManualDepositMadeEvent(estateId, merchantId, depositDateTime, depositAmount);
-
- projection.processEvent(
- streamName,
- manualDepositMadeEvent.eventType,
- manualDepositMadeEvent.data,
- null,
- manualDepositMadeEvent.eventId);
-
- var transactionHasStartedEvent = testData.getTransactionHasStartedEvent(estateId, merchantId, transactionId, transactionAmount, transactionType);
-
- projection.processEvent(
- streamName,
- transactionHasStartedEvent.eventType,
- transactionHasStartedEvent.data,
- null,
- transactionHasStartedEvent.eventId);
-
- var transactionHasBeenCompletedEvent =
- testData.getTransactionHasBeenCompletedEvent(estateId, merchantId, transactionId, false,transactionAmount);
-
- projection.processEvent(
- streamName,
- transactionHasBeenCompletedEvent.eventType,
- transactionHasBeenCompletedEvent.data,
- null,
- transactionHasBeenCompletedEvent.eventId);
-
- var projectionState = projection.getState();
-
- t.notEqual(projectionState, null);
-
- t.equal(projectionState.estateId,merchantCreatedEvent.data.estateId);
- t.equal(projectionState.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(projectionState.availableBalance,depositAmount);
- t.equal(projectionState.balance,depositAmount);
- t.equal(projectionState.lastDepositDateTime,depositDateTime);
- t.equal(projectionState.lastSaleDateTime,transactionHasStartedEvent.data.transactionDateTime);
-
- var events = projection.emittedEvents;
- t.equal(events.length,2);
-
- var eventBody = JSON.parse(events[0].body);
- t.equal(eventBody.estateId,merchantCreatedEvent.data.estateId);
- t.equal(eventBody.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(eventBody.balance,0);
- t.equal(eventBody.changeAmount,0);
- t.equal(eventBody.reference,"Opening Balance");
- t.equal(eventBody.eventId,merchantCreatedEvent.data.merchantId);
- t.equal(eventBody.aggregateId,merchantCreatedEvent.data.merchantId);
-
- var eventBody = JSON.parse(events[1].body);
- t.equal(eventBody.estateId,merchantCreatedEvent.data.estateId);
- t.equal(eventBody.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(eventBody.balance,depositAmount);
- t.equal(eventBody.changeAmount,depositAmount);
- t.equal(eventBody.reference,"Merchant Deposit");
- t.equal(eventBody.eventId,manualDepositMadeEvent.eventId);
- t.equal(eventBody.aggregateId, manualDepositMadeEvent.data.merchantId);
- t.end();
- });
-
-test('Projection handles merchant fee event', t => {
- projection.initialize();
- var estateId = '2af2dab2-86d6-44e3-bcf8-51bec65cf8bc';
- var merchantId = '6be48c04-a00e-4985-a50c-e27461ca47e1';
- var merchantName = 'Test Merchant 1';
- var depositDateTime = '2020-06-01T06:21:31.356Z';
- var depositAmount = 5000.00;
- var transactionId = 'cf80660e-88c1-434c-a063-92e9076eda1b';
- var transactionAmount = 100.00;
- var transactionType = 'Sale';
- var feeEventCreatedDateTime = '2020-05-30T06:21:31.356Z';
- var calculatedValue = 0.50;
-
- var streamName = "$ce-MerchantArchive";
-
- var projectionState = projection.getState();
- t.true(projectionState.initialised);
-
- var merchantCreatedEvent = testData.getMerchantCreatedEvent(estateId, merchantId, merchantName);
-
- projection.processEvent(
- streamName,
- merchantCreatedEvent.eventType,
- merchantCreatedEvent.data,
- null,
- merchantCreatedEvent.eventId);
-
- var manualDepositMadeEvent = testData.getManualDepositMadeEvent(estateId, merchantId, depositDateTime, depositAmount);
-
- projection.processEvent(
- streamName,
- manualDepositMadeEvent.eventType,
- manualDepositMadeEvent.data,
- null,
- manualDepositMadeEvent.eventId);
-
- var transactionHasStartedEvent = testData.getTransactionHasStartedEvent(estateId, merchantId, transactionId, transactionAmount, transactionType);
-
- projection.processEvent(
- streamName,
- transactionHasStartedEvent.eventType,
- transactionHasStartedEvent.data,
- null,
- transactionHasStartedEvent.eventId);
-
- var transactionHasBeenCompletedEvent =
- testData.getTransactionHasBeenCompletedEvent(estateId, merchantId, transactionId, true, transactionAmount);
-
- projection.processEvent(
- streamName,
- transactionHasBeenCompletedEvent.eventType,
- transactionHasBeenCompletedEvent.data,
- null,
- transactionHasBeenCompletedEvent.eventId);
-
- var merchantFeeAddedToTransactionEvent = testData.getMerchantFeeAddedToTransactionEvent(estateId, merchantId, transactionId, calculatedValue, feeEventCreatedDateTime);
-
- projection.processEvent(
- streamName,
- merchantFeeAddedToTransactionEvent.eventType,
- merchantFeeAddedToTransactionEvent.data,
- null,
- merchantFeeAddedToTransactionEvent.eventId);
-
- var projectionState = projection.getState();
-
- t.notEqual(projectionState, null);
-
- t.equal(projectionState.estateId,merchantCreatedEvent.data.estateId);
- t.equal(projectionState.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(projectionState.availableBalance,depositAmount - transactionAmount + calculatedValue);
- t.equal(projectionState.balance,depositAmount - transactionAmount + calculatedValue);
- t.equal(projectionState.lastDepositDateTime,depositDateTime);
- t.equal(projectionState.lastSaleDateTime,transactionHasStartedEvent.data.transactionDateTime);
- t.equal(projectionState.lastFeeProcessedDateTime,feeEventCreatedDateTime);
-
- var events = projection.emittedEvents;
- t.equal(events.length,4);
-
- var eventBody = JSON.parse(events[0].body);
- t.equal(eventBody.estateId,merchantCreatedEvent.data.estateId);
- t.equal(eventBody.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(eventBody.balance,0);
- t.equal(eventBody.changeAmount,0);
- t.equal(eventBody.reference,"Opening Balance");
- t.equal(eventBody.eventId,merchantCreatedEvent.data.merchantId);
- t.equal(eventBody.aggregateId,merchantCreatedEvent.data.merchantId);
-
- var eventBody = JSON.parse(events[1].body);
- t.equal(eventBody.estateId,merchantCreatedEvent.data.estateId);
- t.equal(eventBody.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(eventBody.balance,depositAmount);
- t.equal(eventBody.changeAmount,depositAmount);
- t.equal(eventBody.reference,"Merchant Deposit");
- t.equal(eventBody.eventId,manualDepositMadeEvent.eventId);
- t.equal(eventBody.aggregateId,manualDepositMadeEvent.data.merchantId);
-
- var eventBody = JSON.parse(events[2].body);
- t.equal(eventBody.estateId,merchantCreatedEvent.data.estateId);
- t.equal(eventBody.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(eventBody.balance,depositAmount - transactionAmount);
- t.equal(eventBody.changeAmount,transactionAmount * -1);
- t.equal(eventBody.reference,"Transaction Completed");
- t.equal(eventBody.eventId,transactionHasBeenCompletedEvent.eventId);
- t.equal(eventBody.aggregateId,transactionHasBeenCompletedEvent.data.transactionId);
-
- var eventBody = JSON.parse(events[3].body);
- t.equal(eventBody.estateId,merchantCreatedEvent.data.estateId);
- t.equal(eventBody.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(eventBody.balance,depositAmount - transactionAmount + calculatedValue);
- t.equal(eventBody.changeAmount,calculatedValue);
- t.equal(eventBody.reference,"Transaction Fee Processed");
- t.equal(eventBody.eventId,merchantFeeAddedToTransactionEvent.eventId);
- t.equal(eventBody.aggregateId, merchantFeeAddedToTransactionEvent.data.transactionId);
- t.end();
- });
-
-test('Projection handles multiple merchant fee event not in date order', t =>
-{
- projection.initialize();
- var estateId = '2af2dab2-86d6-44e3-bcf8-51bec65cf8bc';
- var merchantId = '6be48c04-a00e-4985-a50c-e27461ca47e1';
- var merchantName = 'Test Merchant 1';
- var depositDateTime = '2020-06-01T06:21:31.356Z';
- var depositAmount = 5000.00;
- var transactionId = 'cf80660e-88c1-434c-a063-92e9076eda1b';
- var transactionAmount = 100.00;
- var transactionType = 'Sale';
- var feeEventCreatedDateTime1 = '2020-05-30T06:21:31.356Z';
- var calculatedValue1 = 1.0;
- var feeEventCreatedDateTime2 = '2020-05-30T04:21:31.356Z';
- var calculatedValue2 = 1.5;
-
- var streamName = "$ce-MerchantArchive";
-
- var projectionState = projection.getState();
- t.true(projectionState.initialised);
-
- var merchantCreatedEvent = testData.getMerchantCreatedEvent(estateId, merchantId, merchantName);
-
- projection.processEvent(
- streamName,
- merchantCreatedEvent.eventType,
- merchantCreatedEvent.data,
- null,
- merchantCreatedEvent.eventId);
-
- var manualDepositMadeEvent = testData.getManualDepositMadeEvent(estateId, merchantId, depositDateTime, depositAmount);
-
- projection.processEvent(
- streamName,
- manualDepositMadeEvent.eventType,
- manualDepositMadeEvent.data,
- null,
- manualDepositMadeEvent.eventId);
-
- var transactionHasStartedEvent = testData.getTransactionHasStartedEvent(estateId, merchantId, transactionId, transactionAmount, transactionType);
-
- projection.processEvent(
- streamName,
- transactionHasStartedEvent.eventType,
- transactionHasStartedEvent.data,
- null,
- transactionHasStartedEvent.eventId);
-
- var transactionHasBeenCompletedEvent =
- testData.getTransactionHasBeenCompletedEvent(estateId, merchantId, transactionId, true, transactionAmount);
-
- projection.processEvent(
- streamName,
- transactionHasBeenCompletedEvent.eventType,
- transactionHasBeenCompletedEvent.data,
- null,
- transactionHasBeenCompletedEvent.eventId);
-
- var merchantFeeAddedToTransactionEvent1 = testData.getMerchantFeeAddedToTransactionEvent(estateId, merchantId, transactionId, calculatedValue1, feeEventCreatedDateTime1);
-
- projection.processEvent(
- streamName,
- merchantFeeAddedToTransactionEvent1.eventType,
- merchantFeeAddedToTransactionEvent1.data,
- null,
- merchantFeeAddedToTransactionEvent1.eventId);
-
- var merchantFeeAddedToTransactionEvent2 = testData.getMerchantFeeAddedToTransactionEvent(estateId, merchantId, transactionId, calculatedValue2, feeEventCreatedDateTime2);
-
- projection.processEvent(
- streamName,
- merchantFeeAddedToTransactionEvent2.eventType,
- merchantFeeAddedToTransactionEvent2.data,
- null,
- merchantFeeAddedToTransactionEvent2.eventId);
-
- var projectionState = projection.getState();
-
- t.notEqual(projectionState, null);
-
- t.equal(projectionState.estateId,merchantCreatedEvent.data.estateId);
- t.equal(projectionState.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(projectionState.availableBalance,depositAmount - transactionAmount + calculatedValue1 + calculatedValue2);
- t.equal(projectionState.balance,depositAmount - transactionAmount + calculatedValue1 + calculatedValue2);
- t.equal(projectionState.lastDepositDateTime,depositDateTime);
- t.equal(projectionState.lastSaleDateTime,transactionHasStartedEvent.data.transactionDateTime);
- t.equal(projectionState.lastFeeProcessedDateTime,merchantFeeAddedToTransactionEvent1.data.feeCalculatedDateTime);
-
- var events = projection.emittedEvents;
- t.equal(events.length,5);
-
- var eventBody = JSON.parse(events[0].body);
- t.equal(eventBody.estateId,merchantCreatedEvent.data.estateId);
- t.equal(eventBody.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(eventBody.balance,0);
- t.equal(eventBody.changeAmount,0);
- t.equal(eventBody.reference,"Opening Balance");
- t.equal(eventBody.eventId,merchantCreatedEvent.data.merchantId);
- t.equal(eventBody.aggregateId,merchantCreatedEvent.data.merchantId);
-
- var eventBody = JSON.parse(events[1].body);
- t.equal(eventBody.estateId,merchantCreatedEvent.data.estateId);
- t.equal(eventBody.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(eventBody.balance,depositAmount);
- t.equal(eventBody.changeAmount,depositAmount);
- t.equal(eventBody.reference,"Merchant Deposit");
- t.equal(eventBody.eventId,manualDepositMadeEvent.eventId);
- t.equal(eventBody.aggregateId,manualDepositMadeEvent.data.merchantId);
-
- var eventBody = JSON.parse(events[2].body);
- t.equal(eventBody.estateId,merchantCreatedEvent.data.estateId);
- t.equal(eventBody.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(eventBody.balance,depositAmount - transactionAmount);
- t.equal(eventBody.changeAmount,transactionAmount * -1);
- t.equal(eventBody.reference,"Transaction Completed");
- t.equal(eventBody.eventId,transactionHasBeenCompletedEvent.eventId);
- t.equal(eventBody.aggregateId,transactionHasBeenCompletedEvent.data.transactionId);
-
- var eventBody = JSON.parse(events[3].body);
- t.equal(eventBody.estateId,merchantCreatedEvent.data.estateId);
- t.equal(eventBody.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(eventBody.balance,depositAmount - transactionAmount + calculatedValue1);
- t.equal(eventBody.changeAmount,calculatedValue1);
- t.equal(eventBody.reference,"Transaction Fee Processed");
- t.equal(eventBody.eventId,merchantFeeAddedToTransactionEvent1.eventId);
- t.equal(eventBody.aggregateId,merchantFeeAddedToTransactionEvent1.data.transactionId);
-
- var eventBody = JSON.parse(events[4].body);
- t.equal(eventBody.estateId,merchantCreatedEvent.data.estateId);
- t.equal(eventBody.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(eventBody.balance,depositAmount - transactionAmount + calculatedValue1 + calculatedValue2);
- t.equal(eventBody.changeAmount,calculatedValue2);
- t.equal(eventBody.reference,"Transaction Fee Processed");
- t.equal(eventBody.eventId,merchantFeeAddedToTransactionEvent2.eventId);
- t.equal(eventBody.aggregateId, merchantFeeAddedToTransactionEvent2.data.transactionId);
- t.end();
- });
-
- test('Projection does not emit a balance event on a successful logon transaction ', t =>
- {
- projection.initialize();
- var estateId = '2af2dab2-86d6-44e3-bcf8-51bec65cf8bc';
- var merchantId = '6be48c04-a00e-4985-a50c-e27461ca47e1';
- var merchantName = 'Test Merchant 1';
- var depositDateTime = '2020-06-01T06:21:31.356Z';
- var depositAmount = 5000.00;
- var transactionId = 'cf80660e-88c1-434c-a063-92e9076eda1b';
- var transactionAmount = 0;
- var transactionType = 'Logon';
-
- var streamName = "$ce-MerchantArchive";
-
- var projectionState = projection.getState();
- t.true(projectionState.initialised);
-
- var merchantCreatedEvent = testData.getMerchantCreatedEvent(estateId, merchantId, merchantName);
-
- projection.processEvent(
- streamName,
- merchantCreatedEvent.eventType,
- merchantCreatedEvent.data,
- null,
- merchantCreatedEvent.eventId);
-
- var manualDepositMadeEvent = testData.getManualDepositMadeEvent(estateId, merchantId, depositDateTime, depositAmount);
-
- projection.processEvent(
- streamName,
- manualDepositMadeEvent.eventType,
- manualDepositMadeEvent.data,
- null,
- manualDepositMadeEvent.eventId);
-
- var transactionHasStartedEvent = testData.getTransactionHasStartedEvent(estateId, merchantId, transactionId, transactionAmount, transactionType);
-
- projection.processEvent(
- streamName,
- transactionHasStartedEvent.eventType,
- transactionHasStartedEvent.data,
- null,
- transactionHasStartedEvent.eventId);
-
- var transactionHasBeenCompletedEvent =
- testData.getTransactionHasBeenCompletedEvent(estateId, merchantId, transactionId, true, transactionAmount);
-
- projection.processEvent(
- streamName,
- transactionHasBeenCompletedEvent.eventType,
- transactionHasBeenCompletedEvent.data,
- null,
- transactionHasBeenCompletedEvent.eventId);
-
- var projectionState = projection.getState();
-
- t.notEqual(projectionState,null);
-
- t.equal(projectionState.estateId,merchantCreatedEvent.data.estateId);
- t.equal(projectionState.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(projectionState.availableBalance,depositAmount);
- t.equal(projectionState.balance,depositAmount);
- t.equal(projectionState.lastDepositDateTime,depositDateTime);
-
- var events = projection.emittedEvents;
- t.equal(events.length,2);
-
- var eventBody = JSON.parse(events[0].body);
- t.equal(eventBody.estateId,merchantCreatedEvent.data.estateId);
- t.equal(eventBody.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(eventBody.balance,0);
- t.equal(eventBody.changeAmount,0);
- t.equal(eventBody.reference,"Opening Balance");
- t.equal(eventBody.eventId,merchantCreatedEvent.data.merchantId);
- t.equal(eventBody.aggregateId,merchantCreatedEvent.data.merchantId);
-
- var eventBody = JSON.parse(events[1].body);
- t.equal(eventBody.eventId,manualDepositMadeEvent.eventId);
- t.equal(eventBody.aggregateId, manualDepositMadeEvent.data.merchantId);
- t.end();
- });
-
-test('Projection handles events with no Merchant Created', t => {
- projection.initialize();
- var estateId = '2af2dab2-86d6-44e3-bcf8-51bec65cf8bc';
- var merchantId = '6be48c04-a00e-4985-a50c-e27461ca47e1';
- var merchantName = 'Test Merchant 1';
- var depositDateTime = '2020-06-01T06:21:31.356Z';
- var depositAmount = 5000.00;
- var transactionId = 'cf80660e-88c1-434c-a063-92e9076eda1b';
- var transactionAmount = 100.00;
- var transactionType = 'Sale';
- var streamName = "$ce-MerchantArchive";
-
- var projectionState = projection.getState();
- t.true(projectionState.initialised);
-
- var manualDepositMadeEvent = testData.getManualDepositMadeEvent(estateId, merchantId, depositDateTime, depositAmount);
-
- projection.processEvent(
- streamName,
- manualDepositMadeEvent.eventType,
- manualDepositMadeEvent.data,
- null,
- manualDepositMadeEvent.eventId);
-
- var transactionHasStartedEvent = testData.getTransactionHasStartedEvent(estateId, merchantId, transactionId, transactionAmount, transactionType);
-
- projection.processEvent(
- streamName,
- transactionHasStartedEvent.eventType,
- transactionHasStartedEvent.data,
- null,
- transactionHasStartedEvent.eventId);
-
- var transactionHasBeenCompletedEvent =
- testData.getTransactionHasBeenCompletedEvent(estateId, merchantId, transactionId, true, transactionAmount);
-
- projection.processEvent(
- streamName,
- transactionHasBeenCompletedEvent.eventType,
- transactionHasBeenCompletedEvent.data,
- null,
- transactionHasBeenCompletedEvent.eventId);
-
- var merchantCreatedEvent = testData.getMerchantCreatedEvent(estateId, merchantId, merchantName);
-
- projection.processEvent(
- streamName,
- merchantCreatedEvent.eventType,
- merchantCreatedEvent.data,
- null,
- merchantCreatedEvent.eventId);
-
- var projectionState = projection.getState();
-
- t.notEqual(projectionState,null);
-
- t.equal(projectionState.estateId,merchantCreatedEvent.data.estateId);
- t.equal(projectionState.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(projectionState.merchantName,merchantCreatedEvent.data.merchantName);
- t.equal(projectionState.availableBalance,depositAmount - transactionAmount);
- t.equal(projectionState.balance,depositAmount - transactionAmount);
- t.equal(projectionState.lastDepositDateTime,depositDateTime);
- t.equal(projectionState.lastSaleDateTime,transactionHasStartedEvent.data.transactionDateTime);
-
- var events = projection.emittedEvents;
- t.equal(events.length,3);
-
- var eventBody = JSON.parse(events[0].body);
- t.equal(eventBody.estateId,merchantCreatedEvent.data.estateId);
- t.equal(eventBody.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(eventBody.balance,0);
- t.equal(eventBody.changeAmount,0);
- t.equal(eventBody.reference,"Opening Balance");
- t.equal(eventBody.eventId,merchantCreatedEvent.data.merchantId);
- t.equal(eventBody.aggregateId,merchantCreatedEvent.data.merchantId);
-
- var eventBody = JSON.parse(events[1].body);
- t.equal(eventBody.estateId,merchantCreatedEvent.data.estateId);
- t.equal(eventBody.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(eventBody.balance,depositAmount);
- t.equal(eventBody.changeAmount,depositAmount);
- t.equal(eventBody.reference,"Merchant Deposit");
- t.equal(eventBody.eventId,manualDepositMadeEvent.eventId);
- t.equal(eventBody.aggregateId,manualDepositMadeEvent.data.merchantId);
-
- var eventBody = JSON.parse(events[2].body);
- t.equal(eventBody.estateId,merchantCreatedEvent.data.estateId);
- t.equal(eventBody.merchantId,merchantCreatedEvent.data.merchantId);
- t.equal(eventBody.balance,depositAmount - transactionAmount);
- t.equal(eventBody.changeAmount,transactionAmount * -1);
- t.equal(eventBody.reference,"Transaction Completed");
- t.equal(eventBody.eventId,transactionHasBeenCompletedEvent.eventId);
- t.equal(eventBody.aggregateId, transactionHasBeenCompletedEvent.data.transactionId);
- t.end();
- });
diff --git a/EventStoreProjections/tests/TransactionEnricherTests.js b/EventStoreProjections/tests/TransactionEnricherTests.js
deleted file mode 100644
index fce9b51..0000000
--- a/EventStoreProjections/tests/TransactionEnricherTests.js
+++ /dev/null
@@ -1,130 +0,0 @@
-require('../../NugetPackage/projections/continuous/TransactionEnricher.js');
-var projection = require('@transactionprocessing/esprojection-testing-framework');
-var testData = require('./TestData.js');
-var describe = require('tape-describe');
-var test = describe('Transaction Enricher Tests');
-
-test('Projection Can Handle Transaction Events',
- t =>
- {
- projection.initialize();
-
- var estateId = '3bf2dab2-86d6-44e3-bcf8-51bec65cf8bc';
- var merchantId = 'c4c33d75-f011-40e4-9d97-1f428ab563d8';
- var transactionId = 'c4c33d75-f011-40e4-9d97-1f428ab563d8';
- var transactionAmount = 100.00;
- var transactionType = 'Sale';
-
- var transactionHasStartedEvent = testData.getTransactionHasStartedEvent(estateId,
- merchantId,
- transactionId,
- transactionAmount,
- transactionType);
-
- var contractId = '327678c4-d349-4e1c-b466-f2ea4b0e869b';
- var productId = '001b29c9-91f5-42f9-95d0-6fd9d69a2e18';
-
- var productDetailsAddedToTransactionEvent =
- testData.getProductDetailsAddedToTransactionEvent(estateId,
- merchantId,
- transactionId,
- contractId,
- productId);
-
- var customerAccountNumber = "1234567890";
- var additionalRequestDataRecordedEvent = testData.getAdditionalRequestDataRecordedEvent(estateId,
- merchantId,
- transactionId,
- transactionAmount,
- customerAccountNumber);
-
- var transactionHasBeenLocallyAuthorisedEvent =
- testData.getTransactionHasBeenLocallyAuthorisedEvent(estateId, merchantId, transactionId);
-
- var transactionHasBeenLocallyDeclinedEvent =
- testData.getTransactionHasBeenLocallyDeclinedEvent(estateId, merchantId, transactionId);
-
- var transactionAuthorisedByOperatorEvent =
- testData.getTransactionAuthorisedByOperatorEvent(estateId, merchantId, transactionId);
-
- var transactionDeclinedByOperatorEvent =
- testData.getTransactionDeclinedByOperatorEvent(estateId, merchantId, transactionId);
-
- var transactionHasBeenCompletedEvent =
- testData.getTransactionHasBeenCompletedEvent(estateId, merchantId, transactionId, true);
-
- var calculatedValue = 5.00;
- var eventCreatedDateTime = "2020-05-16T07:47:51.6617562+00:00";
- var merchantFeeAddedToTransactionEvent = testData.getMerchantFeeAddedToTransactionEvent(estateId,
- merchantId,
- transactionId,
- calculatedValue,
- eventCreatedDateTime);
-
- projection.processEvent(
- 'TransactionAggregate-' + transactionId.replace(/-/gi, ""),
- transactionHasStartedEvent.eventType,
- transactionHasStartedEvent.data,
- null,
- transactionHasStartedEvent.eventId);
-
- projection.processEvent(
- 'TransactionAggregate-' + transactionId.replace(/-/gi, ""),
- productDetailsAddedToTransactionEvent.eventType,
- productDetailsAddedToTransactionEvent.data,
- null,
- productDetailsAddedToTransactionEvent.eventId);
-
- projection.processEvent(
- 'TransactionAggregate-' + transactionId.replace(/-/gi, ""),
- additionalRequestDataRecordedEvent.eventType,
- additionalRequestDataRecordedEvent.data,
- null,
- additionalRequestDataRecordedEvent.eventId);
-
- projection.processEvent(
- 'TransactionAggregate-' + transactionId.replace(/-/gi, ""),
- transactionHasBeenLocallyAuthorisedEvent.eventType,
- transactionHasBeenLocallyAuthorisedEvent.data,
- null,
- transactionHasBeenLocallyAuthorisedEvent.eventId);
-
- projection.processEvent(
- 'TransactionAggregate-' + transactionId.replace(/-/gi, ""),
- transactionHasBeenLocallyDeclinedEvent.eventType,
- transactionHasBeenLocallyDeclinedEvent.data);
-
- projection.processEvent(
- 'TransactionAggregate-' + transactionId.replace(/-/gi, ""),
- transactionAuthorisedByOperatorEvent.eventType,
- transactionAuthorisedByOperatorEvent.data,
- null,
- transactionAuthorisedByOperatorEvent.eventId);
-
- projection.processEvent(
- 'TransactionAggregate-' + transactionId.replace(/-/gi, ""),
- transactionDeclinedByOperatorEvent.eventType,
- transactionDeclinedByOperatorEvent.data,
- null,
- transactionDeclinedByOperatorEvent.eventId);
-
- projection.processEvent(
- 'TransactionAggregate-' + transactionId.replace(/-/gi, ""),
- transactionHasBeenCompletedEvent.eventType,
- transactionHasBeenCompletedEvent.data,
- null,
- transactionHasBeenCompletedEvent.eventId);
-
- projection.processEvent(
- 'TransactionAggregate-' + transactionId.replace(/-/gi, ""),
- merchantFeeAddedToTransactionEvent.eventType,
- merchantFeeAddedToTransactionEvent.data,
- null,
- merchantFeeAddedToTransactionEvent.eventId);
-
- var events = projection.emittedEvents;
- t.equal(events.length, 9);
- var eventBody = JSON.parse(events[8].body);
- t.equal(eventBody.eventId, merchantFeeAddedToTransactionEvent.eventId);
- t.end();
- });
\ No newline at end of file
diff --git a/NugetPackage/NugetPackage.csproj b/NugetPackage/NugetPackage.csproj
index 5f0440b..59e89b1 100644
--- a/NugetPackage/NugetPackage.csproj
+++ b/NugetPackage/NugetPackage.csproj
@@ -21,12 +21,6 @@
Always
-
- Always
-
-
- Always
-
Always
diff --git a/NugetPackage/obj/Debug/net5.0/NugetPackage.assets.cache b/NugetPackage/obj/Debug/net5.0/NugetPackage.assets.cache
index a3eb5dd..8ad92e2 100644
Binary files a/NugetPackage/obj/Debug/net5.0/NugetPackage.assets.cache and b/NugetPackage/obj/Debug/net5.0/NugetPackage.assets.cache differ
diff --git a/NugetPackage/obj/NugetPackage.csproj.nuget.dgspec.json b/NugetPackage/obj/NugetPackage.csproj.nuget.dgspec.json
index 8f2f197..df617bd 100644
--- a/NugetPackage/obj/NugetPackage.csproj.nuget.dgspec.json
+++ b/NugetPackage/obj/NugetPackage.csproj.nuget.dgspec.json
@@ -14,7 +14,8 @@
"outputPath": "C:\\Projects\\TransactionProcessing\\EventStoreProjections\\NugetPackage\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
- "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
+ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages",
+ "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder"
],
"configFilePaths": [
"C:\\Users\\stuar\\AppData\\Roaming\\NuGet\\NuGet.Config",
@@ -25,11 +26,11 @@
"net5.0"
],
"sources": {
- "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"C:\\Program Files\\dotnet\\library-packs": {},
"https://api.nuget.org/v3/index.json": {},
- "https://www.myget.org/F/tahoe-eposity/auth/024ff48c-540a-4059-8712-d54f7b0d6a31/api/v3/index.json": {},
+ "https://nuget.devexpress.com/tP9yfuwysSqblTj4iZAmef8L1WgJPsXlZjZLvEacI8BaCoK3A1/api": {},
"https://www.myget.org/F/transactionprocessing/api/v3/index.json": {},
+ "https://www.myget.org/F/vme-intellistore/auth/024ff48c-540a-4059-8712-d54f7b0d6a31/api/v3/index.json": {},
"https://www.myget.org/F/vme-shared/auth/024ff48c-540a-4059-8712-d54f7b0d6a31/api/v3/index.json": {}
},
"frameworks": {
@@ -53,7 +54,8 @@
"net47",
"net471",
"net472",
- "net48"
+ "net48",
+ "net481"
],
"assetTargetFallback": true,
"warn": true,
@@ -62,7 +64,7 @@
"privateAssets": "all"
}
},
- "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\6.0.300\\RuntimeIdentifierGraph.json"
+ "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\7.0.100-rc.1.22431.12\\RuntimeIdentifierGraph.json"
}
}
}
diff --git a/NugetPackage/obj/NugetPackage.csproj.nuget.g.props b/NugetPackage/obj/NugetPackage.csproj.nuget.g.props
index 3d45364..35c5861 100644
--- a/NugetPackage/obj/NugetPackage.csproj.nuget.g.props
+++ b/NugetPackage/obj/NugetPackage.csproj.nuget.g.props
@@ -5,12 +5,13 @@
NuGet
$(MSBuildThisFileDirectory)project.assets.json
$(UserProfile)\.nuget\packages\
- C:\Users\stuar\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages
+ C:\Users\stuar\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages;C:\Program Files\dotnet\sdk\NuGetFallbackFolder
PackageReference
- 6.2.0
+ 6.4.0
+
\ No newline at end of file
diff --git a/NugetPackage/obj/project.assets.json b/NugetPackage/obj/project.assets.json
index fed7aab..7d13052 100644
--- a/NugetPackage/obj/project.assets.json
+++ b/NugetPackage/obj/project.assets.json
@@ -9,7 +9,8 @@
},
"packageFolders": {
"C:\\Users\\stuar\\.nuget\\packages\\": {},
- "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {}
+ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {},
+ "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder": {}
},
"project": {
"version": "1.0.0",
@@ -21,7 +22,8 @@
"outputPath": "C:\\Projects\\TransactionProcessing\\EventStoreProjections\\NugetPackage\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
- "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
+ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages",
+ "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder"
],
"configFilePaths": [
"C:\\Users\\stuar\\AppData\\Roaming\\NuGet\\NuGet.Config",
@@ -32,11 +34,11 @@
"net5.0"
],
"sources": {
- "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"C:\\Program Files\\dotnet\\library-packs": {},
"https://api.nuget.org/v3/index.json": {},
- "https://www.myget.org/F/tahoe-eposity/auth/024ff48c-540a-4059-8712-d54f7b0d6a31/api/v3/index.json": {},
+ "https://nuget.devexpress.com/tP9yfuwysSqblTj4iZAmef8L1WgJPsXlZjZLvEacI8BaCoK3A1/api": {},
"https://www.myget.org/F/transactionprocessing/api/v3/index.json": {},
+ "https://www.myget.org/F/vme-intellistore/auth/024ff48c-540a-4059-8712-d54f7b0d6a31/api/v3/index.json": {},
"https://www.myget.org/F/vme-shared/auth/024ff48c-540a-4059-8712-d54f7b0d6a31/api/v3/index.json": {}
},
"frameworks": {
@@ -60,7 +62,8 @@
"net47",
"net471",
"net472",
- "net48"
+ "net48",
+ "net481"
],
"assetTargetFallback": true,
"warn": true,
@@ -69,7 +72,7 @@
"privateAssets": "all"
}
},
- "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\6.0.300\\RuntimeIdentifierGraph.json"
+ "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\7.0.100-rc.1.22431.12\\RuntimeIdentifierGraph.json"
}
}
}
diff --git a/NugetPackage/obj/project.nuget.cache b/NugetPackage/obj/project.nuget.cache
index 7dfa85b..0c1f2d6 100644
--- a/NugetPackage/obj/project.nuget.cache
+++ b/NugetPackage/obj/project.nuget.cache
@@ -1,6 +1,6 @@
{
"version": 2,
- "dgSpecHash": "mzaJVUxba/LdoG9pTrtfcujaIcV5lQS0DESETBP10FnQv99UjWRXVgF4KyXkj5OZl/oopus6hcUeW+KoR6JJLQ==",
+ "dgSpecHash": "2qZlbuCWTL0+jLW3p3S/Xvq3zNi10UuJnAbS0hAw5g+/KjUBWgNNTUbLiYH2r2l6Vo0j8rq4I+9AhYnPRbOcug==",
"success": true,
"projectFilePath": "C:\\Projects\\TransactionProcessing\\EventStoreProjections\\NugetPackage\\NugetPackage.csproj",
"expectedPackageFiles": [],
diff --git a/NugetPackage/projections/continuous/MerchantBalanceCalculator.js b/NugetPackage/projections/continuous/MerchantBalanceCalculator.js
deleted file mode 100644
index e2d1654..0000000
--- a/NugetPackage/projections/continuous/MerchantBalanceCalculator.js
+++ /dev/null
@@ -1,255 +0,0 @@
-//starttestsetup
-var fromCategory = fromCategory || require('../../../EventStoreProjections/node_modules/@transactionprocessing/esprojection-testing-framework').scope.fromCategory;
-var partitionBy = partitionBy !== null ? partitionBy : require('../../../EventStoreProjections/node_modules/@transactionprocessing/esprojection-testing-framework').scope.partitionBy;
-var emit = emit || require('../../../EventStoreProjections/node_modules/@transactionprocessing/esprojection-testing-framework').scope.emit;
-//endtestsetup
-
-fromCategory('MerchantArchive')
- .foreachStream()
- .when({
- $init: function () {
- return {
- initialised: true,
- availableBalance: 0,
- balance: 0,
- lastDepositDateTime: null,
- lastSaleDateTime: null,
- lastFeeProcessedDateTime: null,
- debug: [],
- totalDeposits: 0,
- totalAuthorisedSales: 0,
- totalDeclinedSales: 0,
- totalFees: 0,
- emittedEvents:1
- }
- },
- $any: function (s, e)
- {
- if (e === null || e.data === null || e.data.IsJson === false)
- return;
-
- eventbus.dispatch(s, e);
- }
- });
-
-var eventbus = {
- dispatch: function (s, e) {
-
- if (e.eventType === 'MerchantCreatedEvent') {
- merchantCreatedEventHandler(s, e);
- return;
- }
-
- if (e.eventType === 'ManualDepositMadeEvent') {
- depositMadeEventHandler(s, e);
- return;
- }
-
- if (e.eventType === 'AutomaticDepositMadeEvent') {
- depositMadeEventHandler(s, e);
- return;
- }
-
- if (e.eventType === 'TransactionHasStartedEvent') {
- transactionHasStartedEventHandler(s, e);
- return;
- }
-
- if (e.eventType === 'TransactionHasBeenCompletedEvent') {
- transactionHasCompletedEventHandler(s, e);
- return;
- }
-
- if (e.eventType === 'MerchantFeeAddedToTransactionEvent') {
- merchantFeeAddedToTransactionEventHandler(s, e);
- return;
- }
- }
-}
-
-function getStreamName(s) {
- return "MerchantBalanceHistory-" + s.merchantId.replace(/-/gi, "");
-}
-
-function getEventTypeName() {
- return 'EstateReporting.BusinessLogic.Events.' + getEventType() + ', EstateReporting.BusinessLogic.Events';
-}
-
-function getEventType() { return "MerchantBalanceChangedEvent"; }
-
-function addTwoNumbers(number1, number2) {
- return parseFloat((number1 + number2).toFixed(4));
-}
-
-function subtractTwoNumbers(number1, number2) {
- return parseFloat((number1 - number2).toFixed(4));
-}
-
-var incrementBalanceFromDeposit = function (s, amount, dateTime) {
- s.balance = addTwoNumbers(s.balance, amount);
- s.availableBalance = addTwoNumbers(s.availableBalance, amount);
- s.totalDeposits = addTwoNumbers(s.totalDeposits, amount);
-
- // protect against events coming in out of order
- if (s.lastDepositDateTime === null || dateTime > s.lastDepositDateTime) {
- s.lastDepositDateTime = dateTime;
- }
-};
-
-var incrementBalanceFromMerchantFee = function (s, amount, dateTime) {
- s.balance = addTwoNumbers(s.balance, amount);
- s.availableBalance = addTwoNumbers(s.availableBalance, amount);
- s.totalFees = addTwoNumbers(s.totalFees, amount);
-
- // protect against events coming in out of order
- if (s.lastFeeProcessedDateTime === null || dateTime > s.lastFeeProcessedDateTime) {
- s.lastFeeProcessedDateTime = dateTime;
- }
-};
-
-var decrementAvailableBalanceFromTransactionStarted = function (s, amount, dateTime) {
- s.availableBalance = subtractTwoNumbers(s.availableBalance, amount);
-
- // protect against events coming in out of order
- if (s.lastSaleDateTime === null || dateTime > s.lastSaleDateTime) {
- s.lastSaleDateTime = dateTime;
- }
-};
-
-var decrementBalanceFromAuthorisedTransaction = function (s, amount) {
- s.balance = subtractTwoNumbers(s.balance, amount);
- s.totalAuthorisedSales = addTwoNumbers(s.totalAuthorisedSales, amount);
-};
-
-var incrementAvailableBalanceFromDeclinedTransaction = function (s, amount) {
- s.availableBalance = addTwoNumbers(s.availableBalance, amount);
- s.totalDeclinedSales = addTwoNumbers(s.totalDeclinedSales, amount);
-};
-
-var merchantCreatedEventHandler = function (s, e) {
-
- // Setup the state here
- s.estateId = e.data.estateId;
- s.merchantId = e.data.merchantId;
- s.merchantName = e.data.merchantName;
-};
-
-var emitBalanceChangedEvent = function (aggregateId, eventId, s, changeAmount, dateTime, reference) {
-
- if (s.initialised === true) {
-
- // Emit an opening balance event
- var openingBalanceEvent = {
- $type: getEventTypeName(),
- "merchantId": s.merchantId,
- "estateId": s.estateId,
- "balance": 0,
- "changeAmount": 0,
- "eventId": s.merchantId,
- "eventCreatedDateTime": dateTime,
- "reference": "Opening Balance",
- "aggregateId": s.merchantId
- }
- emit(getStreamName(s), getEventType(), openingBalanceEvent);
- s.emittedEvents++;
- s.initialised = false;
- }
-
- var balanceChangedEvent = {
- $type: getEventTypeName(),
- "merchantId": s.merchantId,
- "estateId": s.estateId,
- "balance": s.balance,
- "changeAmount": changeAmount,
- "eventId": eventId,
- "eventCreatedDateTime": dateTime,
- "reference": reference,
- "aggregateId": aggregateId
- }
-
- // emit an balance changed event here
- emit(getStreamName(s), getEventType(), balanceChangedEvent);
- s.emittedEvents++;
- return s;
-};
-
-var depositMadeEventHandler = function (s, e) {
-
- // Check if we have got a merchant id already set
- if (s.merchantId === undefined) {
- // We have obviously not got a created event yet but we must process this event,
- // so fill in what we can here
- s.estateId = e.data.estateId;
- s.merchantId = e.data.merchantId;
- }
-
- incrementBalanceFromDeposit(s, e.data.amount, e.data.depositDateTime);
-
- // emit an balance changed event here
- emitBalanceChangedEvent(e.data.merchantId, e.eventId, s, e.data.amount, e.data.depositDateTime, "Merchant Deposit");
-};
-
-var transactionHasStartedEventHandler = function (s, e) {
-
- // Check if we have got a merchant id already set
- if (s.merchantId === undefined) {
- // We have obviously not got a created event yet but we must process this event,
- // so fill in what we can here
- e.estateId = e.data.estateId;
- s.merchantId = e.data.merchantId;
- }
-
- var amount = e.data.transactionAmount;
- if (amount === undefined) {
- amount = 0;
- }
- decrementAvailableBalanceFromTransactionStarted(s, amount, e.data.transactionDateTime);
-};
-
-var transactionHasCompletedEventHandler = function (s, e) {
-
- // Check if we have got a merchant id already set
- if (s.merchantId === undefined) {
- // We have obviously not got a created event yet but we must process this event,
- // so fill in what we can here
- e.estateId = e.data.estateId;
- s.merchantId = e.data.merchantId;
- }
-
- var amount = e.data.transactionAmount;
- if (amount === undefined) {
- amount = 0;
- }
-
- var transactionDateTime = new Date(Date.parse(e.data.completedDateTime));
- var completedTime = new Date(transactionDateTime.getFullYear(), transactionDateTime.getMonth(), transactionDateTime.getDate(), transactionDateTime.getHours(), transactionDateTime.getMinutes(), transactionDateTime.getSeconds() + 2);
-
- if (e.data.isAuthorised) {
- decrementBalanceFromAuthorisedTransaction(s, amount, completedTime);
-
- // emit an balance changed event here
- if (amount > 0) {
- s = emitBalanceChangedEvent(e.data.transactionId, e.eventId, s, amount * -1, completedTime, "Transaction Completed");
- }
- }
- else {
- incrementAvailableBalanceFromDeclinedTransaction(s, amount, completedTime);
- }
-};
-
-var merchantFeeAddedToTransactionEventHandler = function (s, e) {
-
- // Check if we have got a merchant id already set
- if (s.merchantId === undefined) {
- // We have obviously not got a created event yet but we must process this event,
- // so fill in what we can here
- e.estateId = e.data.estateId;
- s.merchantId = e.data.merchantId;
- }
-
- // increment the balance now
- incrementBalanceFromMerchantFee(s, e.data.calculatedValue, e.data.feeCalculatedDateTime);
-
- // emit an balance changed event here
- s = emitBalanceChangedEvent(e.data.transactionId, e.eventId, s, e.data.calculatedValue, e.data.feeCalculatedDateTime, "Transaction Fee Processed");
-}
\ No newline at end of file
diff --git a/NugetPackage/projections/continuous/TransactionEnricher.js b/NugetPackage/projections/continuous/TransactionEnricher.js
deleted file mode 100644
index 5faabd9..0000000
--- a/NugetPackage/projections/continuous/TransactionEnricher.js
+++ /dev/null
@@ -1,70 +0,0 @@
-//starttestsetup
-var fromCategory = fromCategory || require('../../../EventStoreProjections/node_modules/@transactionprocessing/esprojection-testing-framework').scope.fromCategory;
-var emit = emit || require('../../../EventStoreProjections/node_modules/@transactionprocessing/esprojection-testing-framework').scope.emit;
-var linkTo = linkTo || require("../../../EventStoreProjections/node_modules//@transactionprocessing/esprojection-testing-framework").scope.linkTo;
-//endtestsetup
-
-fromCategory('TransactionAggregate')
- .foreachStream()
- .when({
- $any: function (s, e) {
-
- if (e === null || e.data === null || e.data.IsJson === false)
- return;
-
- eventbus.dispatch(s, e);
- }
- });
-
-var eventbus = {
- dispatch: function (s, e) {
-
- if (e.eventType === 'MerchantFeeAddedToTransactionEvent') {
- merchantFeeAddedToTransactionEventHandler(s, e);
- return;
- }
- if (e.eventType === 'ServiceProviderFeeAddedToTransactionEvent') {
- serviceProviderFeeAddedToTransactionEventHandler(s, e);
- return;
- }
- else {
- //Just add the existing event to to our stream
- linkTo(getStreamName(s), e);
- }
-
- }
-}
-
-function merchantFeeAddedToTransactionEventHandler(s, e) {
- var newEvent = {
- calculatedValue: e.data.calculatedValue,
- feeCalculatedDateTime: e.data.feeCalculatedDateTime,
- estateId: e.data.estateId,
- feeId: e.data.feeId,
- feeValue: e.data.feeValue,
- merchantId: e.data.merchantId,
- transactionId: e.data.transactionId,
- feeCalculationType: e.data.feeCalculationType,
- eventId: e.eventId
- }
- emit(getStreamName(s), "MerchantFeeAddedToTransactionEnrichedEvent", newEvent, null);
-}
-
-function serviceProviderFeeAddedToTransactionEventHandler(s, e) {
- var newEvent = {
- calculatedValue: e.data.calculatedValue,
- feeCalculatedDateTime: e.data.feeCalculatedDateTime,
- estateId: e.data.estateId,
- feeId: e.data.feeId,
- feeValue: e.data.feeValue,
- merchantId: e.data.merchantId,
- transactionId: e.data.transactionId,
- feeCalculationType: e.data.feeCalculationType,
- eventId: e.eventId
- }
- emit(getStreamName(s), "ServiceProviderFeeAddedToTransactionEnrichedEvent", newEvent, null);
-}
-
-function getStreamName(s) {
- return "TransactionEnricherResult";
-}
\ No newline at end of file