public void MarketPayTransferFundsNotificationTest() { string json = GetFileContents("Mocks/marketpay/notification/transfer-funds-test.json"); NotificationHandler notificationHandler = new NotificationHandler(); IGenericNotification notificationMessage = notificationHandler.HandleMarketpayNotificationJson(json); TransferFundsNotification notification = (TransferFundsNotification)notificationMessage; Assert.AreEqual("TRANSFER_FUNDS", notification.EventType); Assert.IsNotNull(notification.Content); Assert.AreEqual(1000L, notification.Content.Amount.Value); Assert.AreEqual("testTransferCode", notification.Content.TransferCode); Assert.IsNotNull(notification.Error); Assert.AreEqual("000", notification.Error.ErrorCode); Assert.AreEqual("test error message", notification.Error.Message); Assert.IsNotNull(notification.Content.InvalidFields); Assert.AreEqual(1, notification.Content.InvalidFields.Count); }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { var jsonObject = JObject.Load(reader); var notification = default(IGenericNotification); switch (jsonObject["eventType"].ToString()) { case "ACCOUNT_CREATED": notification = new AccountCreateNotification(); break; case "ACCOUNT_CLOSED": notification = new AccountCloseNotification(); break; case "ACCOUNT_UPDATED": notification = new AccountUpdateNotification(); break; case "ACCOUNT_FUNDS_BELOW_THRESHOLD": notification = new AccountFundsBelowThresholdNotification(); break; case "ACCOUNT_HOLDER_CREATED": notification = new AccountHolderCreateNotification(); break; case "ACCOUNT_HOLDER_VERIFICATION": notification = new AccountHolderVerificationNotification(); break; case "ACCOUNT_HOLDER_STATUS_CHANGE": notification = new AccountHolderStatusChangeNotification(); break; case "ACCOUNT_HOLDER_PAYOUT": notification = new AccountHolderPayoutNotification(); break; case "ACCOUNT_HOLDER_UPDATED": notification = new AccountHolderUpdateNotification(); break; case "ACCOUNT_HOLDER_STORE_STATUS_CHANGE": notification = new AccountHolderStoreStatusChangeNotification(); break; case "ACCOUNT_HOLDER_UPCOMING_DEADLINE": notification = new AccountHolderUpcomingDeadlineNotification(); break; case "BENEFICIARY_SETUP": notification = new BeneficiarySetupNotification(); break; case "SCHEDULED_REFUNDS": notification = new ScheduledRefundsNotification(); break; case "COMPENSATE_NEGATIVE_BALANCE": notification = new CompensateNegativeBalanceNotification(); break; case "PAYMENT_FAILURE": notification = new PaymentFailureNotification(); break; case "REPORT_AVAILABLE": notification = new ReportAvailableNotification(); break; case "TRANSFER_FUNDS": notification = new TransferFundsNotification(); break; case "DIRECT_DEBIT_INITIATED": notification = new DirectDebitInitiatedNotification(); break; case "REFUND_FUNDS_TRANSFER": notification = new RefundFundsTransferNotification(); break; } serializer.Populate(jsonObject.CreateReader(), notification); return(notification); }