using Managing.Application.Trading.Commands; using Managing.Application.Trading.Handlers; using Managing.Domain.Trades; using Managing.Domain.Users; using Microsoft.Extensions.DependencyInjection; using Moq; using Xunit; using static Managing.Common.Enums; namespace Managing.Application.Tests; public class PositionTests : BaseTests { public PositionTests() : base() { } [Fact] public async Task Should_Open_Position() { var command = new OpenPositionRequest( "test", MoneyManagement, TradeDirection.Long, Ticker.ETH, PositionInitiator.User, DateTime.UtcNow, _account.User, 100m, isForPaperTrading: false, signalIdentifier: new Guid().ToString()); var handler = new OpenPositionCommandHandler( _exchangeService, _accountService.Object, _tradingService.Object); var position = await handler.Handle(command); Assert.NotNull(position); } [Fact] public async Task Shoud_Close_Position() { // var hexPositions = "000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000425deab364e9121f7ca284129da854fd5cf22ed00000000000000000000000070d95587d40a2caf56bd97485ab3eec10bee6336000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e583100000000000000000000000000000000000000fc11babdd3961cb7d1bacca000000000000000000000000000000000000000000000000000002049cca7c844e20000000000000000000000000000000000000000000000000000000000986f7e0000000000000000000000000000000000000001df508d0801ecf73c8058280500000000000000000000000000000000000000000000000df3ff1939e2b50cdd0000000000000000000000000000000000000000026bf951a8f07f8cc891bf920000000000000000000000000000000000000000000000001ac6ce5c364c6c570000000000000000000000000000000000000000000000000000000066db675e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000425deab364e9121f7ca284129da854fd5cf22ed0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024d78200000000000000000000000000000000000000000000000000000b8a74a0cf2200000000000000000000000000000000000000000000000000000000000034ea00000000000000000000000000000000000000000000001481cd70725c3c1c03000000000000000000000000000000000000000004798d9b51ab57ddc2209ef50000000000000000000000000000000000000000000000002430a13e0606cefd000000000000000000000000000000000000000df008568002fcb46874db7fa100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000004ab88d39efb5958075000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c9f4c00dde985003ca14b5000000000000000000000000000000000000000000c9f4c00dde985003ca14b5000000000000000000000000000000000000000000001f04ef12cb04cf15800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004ab88d39efb5958075000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000024d7830000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffbd4eecf9670c9bc2d3c2942e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a323f06526aa4eff43bd81573b1d00000000000000000000001031bcf5ca9bcbacd1e14f4423ec048d2860e6be400000000000000000000000149385b7c14fb69bfecc8920f26e8908c05b23600000000000000000000000001031bcf5ca9bcbacd19e9e311d531128eb34a9526e0000000000000000000000000425deab364e9121f7ca284129da854fd5cf22ed00000000000000000000000047c031236e19d024b42f8ae6780e44a573170703000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e5831000000000000000000000000000000000000052c3a7bfeaccb2af542a7eec1f000000000000000000000000000000000000000000000000000000000000184e100000000000000000000000000000000000000000000000000000000031fce8100000000000000000000000000000000000000026bdba31976b8f5eb6839942f000000000000000000000000000000000000000000000013051f6fe1b99e5f29000000000000000000000000000000000000000000000000002318fb454fb7ef000000000000000000000000000000000000000000000000a633867ed0a624d5000000000000000000000000000000000000000000000000000000006793580e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000425deab364e9121f7ca284129da854fd5cf22ed0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110000000000000000000000000000000000000000000000000000000000008d16000000000000000000000000000000000000000000000013051f6fe1b99e5f290000000000000000000000000000000000000000000000000023aeb7ce5e2ae0000000000000000000000000000000000000000000000000aafa986b91e6895200000000000000000000000000000000000000007044e6adc56544d604423d6b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004ab88d39efb595807500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c9f4c00dde985003ca14b5000000000000000000000000000000000000000000c9f4c00dde985003ca14b50000000000000000000000000000000000000000000014adf4b7320334b9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004ab88d39efb59580750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064db77dc6667d396fff8db0a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014285629eea2ec15d977e8b13dec5d0000000000000000000000000000001e9eda061bea538c139c4c474bf9c33e100000000000000000000000000000001e9eda061bea538c139c4c474bf9c33e100000000000000000000000000000001e9eda061c4f2f03f002b41ae2f9bc191a"; // _ = new GetAccountPositioqwnInfoListOutputDTO().DecodeOutput(hexPositions).d // var openTrade = await _exchangeService.GetTrade(_account, "", Ticker.GMX); var position = new Position(Guid.NewGuid(), 1, TradeDirection.Long, Ticker.GMX, MoneyManagement, PositionInitiator.User, DateTime.UtcNow, new User()) { Open = openTrade }; var command = new ClosePositionCommand(position, 1); _ = _tradingService.Setup(m => m.GetPositionByIdentifierAsync(It.IsAny())).ReturnsAsync(position); _ = _tradingService.Setup(m => m.GetPositionByIdentifierAsync(It.IsAny())).ReturnsAsync(position); var mockScope = new Mock(); var handler = new ClosePositionCommandHandler( _exchangeService, _accountService.Object, _tradingService.Object, mockScope.Object); var closedPosition = await handler.Handle(command); Assert.NotNull(closedPosition); } }