public async Task Synchronize() { var tokenizer = new Mock <ITokenizer>(); tokenizer.Setup(_ => _.RefreshAsync(It.IsAny <Connection>())) .ReturnsAsync(await RefreshTokenAsync()); var accountReader = new Mock <IAccountReader>(); accountReader.Setup(_ => _.ReadByConnectionIdAsync(It.IsAny <int>())) .ReturnsAsync(new List <Account>()); var symbolReader = new Mock <ISymbolReader>(); symbolReader.Setup(_ => _.ReadByBrokerageReferenceAsync(It.IsAny <int>(), It.IsAny <string>())) .ReturnsAsync(() => new Symbol(1, "XIC", "TSX Composite ETF", new Currency("CAD", (Rate)0.75m, DateTime.UtcNow.Date), new ListingExchange("TSX"))); var symbolWriter = new Mock <ISymbolWriter>(); var currencyReader = new Mock <ICurrencyReader>(); currencyReader.Setup(_ => _.ReadByCodeAsync("CAD")) .ReturnsAsync(new Currency("CAD", Rate.Full, DateTime.Now)); currencyReader.Setup(_ => _.ReadByCodeAsync("USD")) .ReturnsAsync(new Currency("USD", (Rate)0.75m, DateTime.Now)); int? connectionId = null; List <Account> accounts = null; var accountWriter = new Mock <IAccountWriter>(); accountWriter.Setup(_ => _.WriteAsync(It.IsAny <int>(), It.IsAny <List <Account> >())) .Callback <int, List <Account> >((i, a) => { connectionId = i; accounts = a; }) .Returns(Task.CompletedTask); var synchronizer = new ConnectionSynchronizer( accountReader.Object, accountWriter.Object, symbolReader.Object, symbolWriter.Object, currencyReader.Object, tokenizer.Object); await synchronizer.SyncAsync(new Connection()); Assert.NotNull(connectionId); Assert.NotNull(accounts); }
public async Task <IActionResult> Sync() { try { var user = await AuthenticationClient.AuthenticateAsync(HttpContext.Request); foreach (var connection in await ConnectionReader.ReadByUserIdAsync(user.Id)) { await ConnectionSynchronizer.SyncAsync(connection); } await CurrencySynchronizer.SyncAsync(); return(NoContent()); } catch (ErrorException ex) { return(BadRequest(new { message = ex.Message })); } }