コード例 #1
0
        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);
        }
コード例 #2
0
        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
                }));
            }
        }