public override async Task <InvokeResponse> OnInvoke(InvokeRequest request, ServerCallContext context) { _logger.LogDebug("OnInvoke"); var response = new InvokeResponse(); switch (request.Method) { case "increment": var incrementRequest = JsonSerializer.Deserialize <IncrementRequest>(request.Data.Value.ToByteArray(), this.jsonOptions); var account = new LoyaltyAccount() { Id = incrementRequest.Id, TotalPoints = incrementRequest.Points * 2 }; response.Data = new Any { Value = ByteString.CopyFrom(JsonSerializer.SerializeToUtf8Bytes <LoyaltyAccount>(account, this.jsonOptions)) }; break; default: break; } return(response); }
public void DebitingAccountShouldDeductAmountFromBalanceRecordTransactionAndUpdateLastdebitDate() { var account = new LoyaltyAccount(); account.Credit(100); account.Debit(50); Assert.AreEqual(50, account.Balance); var lastTransaction = account.LastTransaction; Assert.AreEqual(-50, lastTransaction.Amount); var now = DateTime.Now; Assert.AreEqual(now.Date + "/" + now.Month + "/" + now.Year, account.LastTransactionDate); }