public void TestSubscribeThenUpdateSettingsThenUnsubscribe() { // проверить наличие отсутствия подписки RemoveSubscriptionIfAny(serviceUsd.ID); var tradeManager = ManagerTrade.Instance; WalletError error; var tradeSets = AutoTradeSettingsSampler.MakeSampleTradeSettings(); tradeSets.TargetAccount = conn.PLATFORM_USER_ACCOUNT.First(pa => pa.PlatformUser == subscriber.ID).Account; tradeManager.SubscribeOnService(ProtectedOperationContext.MakeServerSideContext(), subscriber.Login, serviceUsd.ID, true, false, tradeSets, out error); Assert.AreEqual(WalletError.OK, error, "Тест подписки/модификации/отписки: подписка прошла"); var signalSubSets = conn.SUBSCRIPTION_SIGNAL.FirstOrDefault(v => v.User == subscriber.ID); Assert.IsNotNull(signalSubSets, "Тест подписки/модификации/отписки: настройки созданы"); var wrongFields = AutoTradeSettingsSampler.TradeSignalSetsAreCorrect(tradeSets, signalSubSets); if (!string.IsNullOrEmpty(wrongFields)) { Assert.Fail("Тест подписки/модификации/отписки: настройки не сохранены: " + wrongFields); } tradeSets.MinVolume = 10000; tradeSets.MaxLeverage = 8; tradeSets.StepVolume = 10000; // модифицировать настройки авто-торговли tradeManager.SubscribeOnService(ProtectedOperationContext.MakeServerSideContext(), subscriber.Login, serviceUsd.ID, true, false, tradeSets, out error); Assert.AreEqual(WalletError.OK, error, "Тест подписки/модификации/отписки: обновление прошло"); signalSubSets = conn.SUBSCRIPTION_SIGNAL.FirstOrDefault(v => v.User == subscriber.ID); wrongFields = AutoTradeSettingsSampler.TradeSignalSetsAreCorrect(tradeSets, signalSubSets); if (!string.IsNullOrEmpty(wrongFields)) { Assert.Fail("Тест подписки/модификации/отписки: настройки не обновлены: " + wrongFields); } // отписаться tradeManager.SubscribeOnService(ProtectedOperationContext.MakeServerSideContext(), subscriber.Login, serviceUsd.ID, true, true, tradeSets, out error); Assert.AreEqual(WalletError.OK, error, "Тест подписки/модификации/отписки: удаление подписки прошло"); Assert.IsFalse(conn.SUBSCRIPTION_SIGNAL.Any(ss => ss.User == subscriber.ID && ss.Service == serviceUsd.ID), "Тест отписки: SUBSCRIPTION_SIGNAL удалена"); Assert.IsFalse(conn.SUBSCRIPTION.Any(ss => ss.User == subscriber.ID && ss.Service == serviceUsd.ID), "Тест отписки: SUBSCRIPTION удалена"); }
public void TestSubscribeOnCustomPortfolio() { var managerTrade = ManagerTrade.Instance; var portfolio = new TopPortfolio { Criteria = "P", DescendingOrder = true, ParticipantCount = 6, Name = "UserGeniusExclusiveTop", }; var tradeSets = AutoTradeSettingsSampler.MakeSampleTradeSettings(); tradeSets.TargetAccount = conn.PLATFORM_USER_ACCOUNT.First(pa => pa.PlatformUser == subscriber.ID).Account; var status = managerTrade.SubscribeOnPortfolio(ProtectedOperationContext.MakeServerSideContext(), subscriber.Login, portfolio, null, tradeSets); Assert.AreEqual(RequestStatus.OK, status, "SubscribeOnPortfolio - удалось подписаться"); // проверить количество подписок var userSubsCount = conn.SUBSCRIPTION.Count(s => s.User == subscriber.ID); Assert.AreEqual(portfolio.ParticipantCount, userSubsCount, "SubscribeOnPortfolio - подписался на всех в портфеле"); // проверить настройки авто-торговли var subSettings = conn.SUBSCRIPTION_SIGNAL.First(ss => ss.User == subscriber.ID); var wrongFields = AutoTradeSettingsSampler.TradeSignalSetsAreCorrect(tradeSets, subSettings); if (!string.IsNullOrEmpty(wrongFields)) { Assert.Fail("SubscribeOnPortfolio - настройки авто-торговли не сохранены в подписке: " + wrongFields); } // настройки авто-торговли для самого портфеля var portfolioTradeSets = (from upf in conn.USER_TOP_PORTFOLIO join pf in conn.TOP_PORTFOLIO on upf.Portfolio equals pf.Id where upf.User == subscriber.ID select upf).FirstOrDefault(); Assert.IsNotNull(portfolioTradeSets, "SubscribeOnPortfolio - портфель создан"); var portfolioSignalSets = new SUBSCRIPTION_SIGNAL { AutoTrade = portfolioTradeSets.AutoTrade, MaxLeverage = portfolioTradeSets.MaxLeverage, PercentLeverage = portfolioTradeSets.PercentLeverage, HedgingOrdersEnabled = portfolioTradeSets.HedgingOrdersEnabled, FixedVolume = portfolioTradeSets.FixedVolume, MinVolume = portfolioTradeSets.MinVolume, MaxVolume = portfolioTradeSets.MaxVolume, VolumeRound = portfolioTradeSets.VolumeRound, StepVolume = portfolioTradeSets.StepVolume, TargetAccount = portfolioTradeSets.TargetAccount }; wrongFields = AutoTradeSettingsSampler.TradeSignalSetsAreCorrect(tradeSets, portfolioSignalSets); if (!string.IsNullOrEmpty(wrongFields)) { Assert.Fail("SubscribeOnPortfolio - настройки авто-торговли не сохранены в портфеле: " + wrongFields); } // отписаться от портфеля status = managerTrade.UnsubscribePortfolio(ProtectedOperationContext.MakeServerSideContext(), subscriber.Login, true, true); Assert.AreEqual(RequestStatus.OK, status, "SubscribeOnPortfolio - удалось отписаться"); userSubsCount = conn.SUBSCRIPTION.Count(s => s.User == subscriber.ID); Assert.AreEqual(0, userSubsCount, "SubscribeOnPortfolio - отписался ото всех в портфеле"); }