예제 #1
0
        public void QuoteStorageTest()
        {
            var getQuoteRequest = new GetQuoteRequest()
            {
                FromAsset       = "BTC",
                ToAsset         = "USD",
                FromAssetVolume = 0.1,
                ToAssetVolume   = 0,
                IsFromFixed     = true,
                BrokerId        = "broker",
                AccountId       = "Acc",
                WalletId        = "wallet"
            };

            var responseData = Service.GetQuoteAsync(getQuoteRequest).Result.Data;
            var storageQuote = ConvertQuoteStorageMock.GetQuoteAsync(responseData.OperationId).Result;

            Assert.AreEqual(getQuoteRequest.FromAsset, storageQuote.FromAsset);
            Assert.AreEqual(getQuoteRequest.ToAsset, storageQuote.ToAsset);
            Assert.AreEqual(getQuoteRequest.IsFromFixed, storageQuote.IsFromFixed);
            Assert.AreEqual(getQuoteRequest.BrokerId, storageQuote.BrokerId);
            Assert.AreEqual(getQuoteRequest.AccountId, storageQuote.AccountId);
            Assert.AreEqual(getQuoteRequest.WalletId, storageQuote.WalletId);
            if (getQuoteRequest.IsFromFixed)
            {
                Assert.AreEqual(getQuoteRequest.FromAssetVolume, storageQuote.FromAssetVolume);
                Assert.AreEqual(responseData.ToAssetVolume, storageQuote.ToAssetVolume);
            }
            else
            {
                Assert.AreEqual(getQuoteRequest.ToAssetVolume, storageQuote.ToAssetVolume);
                Assert.AreEqual(responseData.FromAssetVolume, storageQuote.FromAssetVolume);
            }
            Assert.AreEqual(responseData.Price, storageQuote.Price);
        }
        public void CrossSwopTradeStorageTest()
        {
            var requestCase = new GetQuoteRequest()
            {
                FromAsset       = "BTC",
                ToAsset         = "ETH",
                FromAssetVolume = 0,
                ToAssetVolume   = 1,
                IsFromFixed     = false,
                BrokerId        = "broker",
                AccountId       = "Acc",
                WalletId        = "wallet"
            };
            var responseData = Service.GetQuoteAsync(requestCase).Result.Data;

            var storageTrade = ConvertQuoteStorageMock.GetTradesAsync(responseData.OperationId).Result;

            Assert.IsTrue(storageTrade.Count == 2);

            var firstPair  = storageTrade.FirstOrDefault(trade => trade.InstrumentSymbol == "BTCUSD");
            var secondPair = storageTrade.FirstOrDefault(trade => trade.InstrumentSymbol == "ETHUSD");

            Assert.IsNotNull(firstPair);
            Assert.IsNotNull(secondPair);

            Assert.AreEqual(responseData.OperationId, firstPair.OperationId);
            Assert.AreEqual(52544.8585, firstPair.InstrumentPrice);
            Assert.AreEqual(TradeState.New, firstPair.State);
            Assert.IsNotEmpty(firstPair.TradeId);

            Assert.AreEqual(responseData.OperationId, secondPair.OperationId);
            Assert.AreEqual(5253, secondPair.InstrumentPrice);
            Assert.AreEqual(TradeState.New, secondPair.State);
            Assert.IsNotEmpty(secondPair.TradeId);
        }
예제 #3
0
        public void Setup()
        {
            _loggerFactory =
                LoggerFactory.Create(builder =>
                                     builder.AddSimpleConsole(options =>
            {
                options.IncludeScopes   = true;
                options.SingleLine      = true;
                options.TimestampFormat = "hh:mm:ss ";
            }));
            _logger       = _loggerFactory.CreateLogger <QuoteService>();
            _assetsClient = new AssetsDictionaryMock();
            _spotInstrumentDictionaryClient     = new SpotInstrumentDictionaryMock();
            _liquidityConverterSettingsAccessor = new LiquidityConverterSettingsAccessorMock();
            _spotInstrumentFeesClient           = new SpotInstrumentFeesClientMock();
            _orderBookService        = new OrderBookServiceMock();
            _dbContextOptionsBuilder = new DbContextOptionsBuilderMock();
            _quotesContextProvider   = new QuotesContextProviderMock();
            _cashServiceClient       = new CashServiceClientMock();
            _tradingServiceClient    = new TradingServiceClientMock();
            ConvertQuoteStorageMock  = new ConvertQuoteStorageMock();
            _instrumentEngine        = new InstrumentEngine(_logger,
                                                            _assetsClient,
                                                            _spotInstrumentDictionaryClient,
                                                            _liquidityConverterSettingsAccessor,
                                                            _spotInstrumentFeesClient,
                                                            _orderBookService);

            Service = new QuoteService(_logger,
                                       _assetsClient,
                                       _spotInstrumentDictionaryClient,
                                       _liquidityConverterSettingsAccessor,
                                       _spotInstrumentFeesClient,
                                       _orderBookService,
                                       _quotesContextProvider,
                                       _cashServiceClient,
                                       _tradingServiceClient,
                                       ConvertQuoteStorageMock,
                                       _instrumentEngine);

            GenerateAssetsClient();
            GenerateSpotInstrumentDictionaryClient();
            GenerateLiquidityConverterSettingsAccessor();
            GenerateSpotInstrumentFeesClient();
            GenerateOrderBookService();
        }
        public void CrossSwopQuoteStorageTest()
        {
            var requestCase = new GetQuoteRequest()
            {
                FromAsset       = "BTC",
                ToAsset         = "ETH",
                FromAssetVolume = 0,
                ToAssetVolume   = 1,
                IsFromFixed     = false,
                BrokerId        = "broker",
                AccountId       = "Acc",
                WalletId        = "wallet"
            };
            var responseData = Service.GetQuoteAsync(requestCase).Result.Data;

            var storageQuote = ConvertQuoteStorageMock.GetQuoteAsync(responseData.OperationId).Result;
            var storageTrade = ConvertQuoteStorageMock.GetTradesAsync(responseData.OperationId).Result;

            Assert.AreEqual(responseData.FromAsset, storageQuote.FromAsset);
            Assert.AreEqual(responseData.FromAsset, storageQuote.FromAsset);
            Assert.AreEqual(responseData.ToAsset, storageQuote.ToAsset);
            Assert.AreEqual(responseData.IsFromFixed, storageQuote.IsFromFixed);
            Assert.AreEqual(responseData.BrokerId, storageQuote.BrokerId);
            Assert.AreEqual(responseData.AccountId, storageQuote.AccountId);
            Assert.AreEqual(responseData.WalletId, storageQuote.WalletId);
            Assert.AreEqual(responseData.OperationId, storageQuote.OperationId);
            Assert.AreEqual(responseData.Price, storageQuote.Price);
            if (responseData.IsFromFixed)
            {
                Assert.AreEqual(requestCase.FromAssetVolume, storageQuote.FromAssetVolume);
                Assert.AreEqual(responseData.ToAssetVolume, storageQuote.ToAssetVolume);
            }
            else
            {
                Assert.AreEqual(requestCase.ToAssetVolume, storageQuote.ToAssetVolume);
                Assert.AreEqual(responseData.FromAssetVolume, storageQuote.FromAssetVolume);
            }
        }
예제 #5
0
        public void ExecuteQuoteValidationTest()
        {
            var storageQuote = new ConvertQuote()
            {
                FromAsset       = "BTC",
                ToAsset         = "USD",
                FromAssetVolume = 0.1,
                ToAssetVolume   = 150,
                IsFromFixed     = true,
                BrokerId        = "broker",
                AccountId       = "Acc",
                WalletId        = "wallet",
                Price           = 323,
                ExpireDate      = DateTime.MaxValue,
                OperationId     = "someId",
                OpenDate        = DateTime.UtcNow,
                ClosedDate      = DateTime.MinValue,
                State           = QuoteState.Active
            };

            ConvertQuoteStorageMock.SaveAsync(storageQuote);

            var executeQuoteRequestCase1 = new ExecuteQuoteRequest()
            {
                FromAsset       = storageQuote.FromAsset,
                ToAsset         = storageQuote.ToAsset,
                FromAssetVolume = storageQuote.FromAssetVolume,
                ToAssetVolume   = storageQuote.ToAssetVolume,
                IsFromFixed     = storageQuote.IsFromFixed,
                BrokerId        = storageQuote.BrokerId,
                AccountId       = storageQuote.AccountId,
                WalletId        = "something else",
                OperationId     = storageQuote.OperationId,
                Price           = storageQuote.Price
            };

            var response = Service.ExecuteQuoteAsync(executeQuoteRequestCase1);

            Assert.IsTrue(response.Result.QuoteExecutionResult == QuoteExecutionResult.Error);

            var executeQuoteRequestCase2 = new ExecuteQuoteRequest()
            {
                FromAsset       = storageQuote.FromAsset,
                ToAsset         = storageQuote.ToAsset,
                FromAssetVolume = storageQuote.FromAssetVolume,
                ToAssetVolume   = 11,
                IsFromFixed     = storageQuote.IsFromFixed,
                BrokerId        = storageQuote.BrokerId,
                AccountId       = storageQuote.AccountId,
                WalletId        = storageQuote.WalletId,
                OperationId     = storageQuote.OperationId,
                Price           = storageQuote.Price
            };

            var response2 = Service.ExecuteQuoteAsync(executeQuoteRequestCase2);

            Assert.IsTrue(response2.Result.QuoteExecutionResult == QuoteExecutionResult.Error);


            var executeQuoteRequestCase3 = new ExecuteQuoteRequest()
            {
                FromAsset       = storageQuote.FromAsset,
                ToAsset         = "new asset",
                FromAssetVolume = storageQuote.FromAssetVolume,
                ToAssetVolume   = storageQuote.ToAssetVolume,
                IsFromFixed     = storageQuote.IsFromFixed,
                BrokerId        = storageQuote.BrokerId,
                AccountId       = storageQuote.AccountId,
                WalletId        = storageQuote.WalletId,
                OperationId     = storageQuote.OperationId,
                Price           = storageQuote.Price
            };

            var response3 = Service.ExecuteQuoteAsync(executeQuoteRequestCase3);

            Assert.IsTrue(response3.Result.QuoteExecutionResult == QuoteExecutionResult.Error);
        }