public async Task UpdateOrders() { // Arrange var exchangeApi = ExchangeServiceHelper.GetExchangeService(ExchangeServiceType.UpdateOrders); var exchangeService = new WpfExchangeService(exchangeApi); var accountViewModel = new OrdersViewModel(exchangeService, new DebugLogger()); var account = new Account(new Interface.Model.AccountInfo { User = new Interface.Model.User() }) { ApiKey = "apikey", ApiSecret = "apisecret" }; accountViewModel.Account = account; foreach (var order in TestHelper.Orders) { accountViewModel.Orders.Add(order.GetViewOrder()); } //Act await accountViewModel.UpdateOrders(account); // Assert foreach (var order in accountViewModel.Orders) { Assert.AreEqual(order.ExecutedQuantity, Math.Round(order.OriginalQuantity * 0.5m, 0)); Assert.AreEqual(order.FilledPercent, (int)((order.ExecutedQuantity / order.OriginalQuantity) * 100)); } }
private void ObserveAccount() { var accountObservable = Observable.FromEventPattern <AccountEventArgs>( eventHandler => AccountViewModel.OnAccountNotification += eventHandler, eventHandler => AccountViewModel.OnAccountNotification -= eventHandler) .Select(eventPattern => eventPattern.EventArgs); accountObservableSubscription = accountObservable.Subscribe(args => { if (args.HasException) { TradeViewModelException(args); } else if (args.AccountEventType.Equals(AccountEventType.LoggedIn) || args.AccountEventType.Equals(AccountEventType.LoggedOut)) { TradeViewModel.SetAccount(args.Value); OrdersViewModel.SetAccount(args.Value).FireAndForget(); } else if (args.AccountEventType.Equals(AccountEventType.UpdateOrders)) { TradeViewModel.Touch(); OrdersViewModel.UpdateOrders(args.Value).FireAndForget(); } else if (args.AccountEventType.Equals(AccountEventType.SelectedAsset)) { TradeViewModel.SetSymbol(args.SelectedAsset); } }); }
private void ObserveAccount() { var accountObservable = Observable.FromEventPattern <AccountEventArgs>( eventHandler => AccountViewModel.OnAccountNotification += eventHandler, eventHandler => AccountViewModel.OnAccountNotification -= eventHandler) .Select(eventPattern => eventPattern.EventArgs); accountSubscription = accountObservable.Subscribe(async args => { if (args.HasException) { NotificationsAdd(new Message { MessageType = MessageType.Error, Text = args.Message, TextVerbose = args.Exception.ToString() }); } else if (args.AccountEventType.Equals(AccountEventType.LoggedIn)) { await OrdersViewModel.SetAccount(args.Value); } else if (args.AccountEventType.Equals(AccountEventType.UpdateOrders)) { await OrdersViewModel.UpdateOrders(args.Value); } else if (!string.IsNullOrWhiteSpace(args.Message)) { NotificationsAdd(new Message { MessageType = MessageType.Info, Text = args.Message }); } }); }