public async Task Login_AccountInfo_Update() { // Arrange var fail = false; var hasUpdated = false; string errorMessage = string.Empty; var exchangeApi = ExchangeServiceHelper.GetExchangeService(ExchangeServiceType.SubscribeAccountInfo); var exchangeService = new WpfExchangeService(exchangeApi); var symbolsCacheFactory = SymbolsCacheFactoryHelper.GetSymbolsCachefactory(exchangeService); var accountViewModel = new AccountBalancesViewModel(exchangeService, symbolsCacheFactory, new DebugLogger()); var account = new Account(new Core.Model.AccountInfo { User = new Core.Model.User() }) { ApiKey = "apikey", ApiSecret = "apisecret" }; accountViewModel.Account = account; var accountObservable = Observable.FromEventPattern <AccountEventArgs>( eventHandler => accountViewModel.OnAccountNotification += eventHandler, eventHandler => accountViewModel.OnAccountNotification -= eventHandler) .Select(eventPattern => eventPattern.EventArgs); accountObservable.Subscribe(args => { if (args.AccountEventType.Equals(AccountEventType.LoggedIn)) { // expected } else if (args.AccountEventType.Equals(AccountEventType.UpdateOrders)) { hasUpdated = true; } else { fail = true; } }); // Act await accountViewModel.Login(account); // Assert var btc = accountViewModel.Account.Balances.SingleOrDefault(ab => ab.Asset.Equals("BTC")); var bcpt = accountViewModel.Account.Balances.SingleOrDefault(ab => ab.Asset.Equals("BCPT")); var test = accountViewModel.Account.Balances.SingleOrDefault(ab => ab.Asset.Equals("TEST")); Assert.IsTrue(hasUpdated); Assert.IsNull(btc); Assert.IsNull(bcpt); Assert.IsNotNull(test); Assert.IsTrue(accountViewModel.Account.Balances.Count().Equals(5)); Assert.IsFalse(fail); }
public IncomingViewModel( IncomingFormViewModel incomingFormViewModel, SourcesControlViewModel sourcesControlViewModel, IncomingJournalViewModel journalViewModel, AccountBalancesViewModel accountBalancesViewModel) { IncomingFormVM = incomingFormViewModel; SourcesControlVM = sourcesControlViewModel; IncomingJournalVM = journalViewModel; AccountBalancesVM = accountBalancesViewModel; }
public OutcomingViewModel( OutcomingFormViewModel outcomingFormViewModel, CategoriesControlViewModel categoriesControlViewModel, OutcomingJournalViewModel journalViewModel, AccountBalancesViewModel accountBalancesViewModel) { OutcomingFormVM = outcomingFormViewModel; CategoriesControlVM = categoriesControlViewModel; JournalVM = journalViewModel; AccountBalancesVM = accountBalancesViewModel; }
public async Task SelectedAsset() { // Arrange var fail = false; AccountBalance selectedAccountBalance = null; var exchangeApi = ExchangeServiceHelper.GetExchangeService(); var exchangeService = new WpfExchangeService(exchangeApi); var symbolsCacheFactory = SymbolsCacheFactoryHelper.GetSymbolsCachefactory(exchangeService); var accountViewModel = new AccountBalancesViewModel(exchangeService, symbolsCacheFactory, new DebugLogger()); var account = new Account(new Core.Model.AccountInfo { User = new Core.Model.User() }) { ApiKey = "apikey", ApiSecret = "apisecret" }; accountViewModel.Account = account; var accountObservable = Observable.FromEventPattern <AccountEventArgs>( eventHandler => accountViewModel.OnAccountNotification += eventHandler, eventHandler => accountViewModel.OnAccountNotification -= eventHandler) .Select(eventPattern => eventPattern.EventArgs); accountObservable.Subscribe(args => { if (args.AccountEventType.Equals(AccountEventType.LoggedIn)) { // expected } else if (args.AccountEventType.Equals(AccountEventType.SelectedAsset)) { selectedAccountBalance = args.SelectedAsset; } else { fail = true; } }); // Act await accountViewModel.Login(account); var trx = accountViewModel.Account.Balances.Single(ab => ab.Asset.Equals("TRX")); accountViewModel.SelectedAsset = trx; // Assert Assert.AreEqual(selectedAccountBalance, trx); Assert.IsFalse(fail); }