Files
managing-apps/src/Managing.Application.Tests/PositionTests.cs

69 lines
9.9 KiB
C#

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<Guid>())).ReturnsAsync(position);
_ = _tradingService.Setup(m => m.GetPositionByIdentifierAsync(It.IsAny<Guid>())).ReturnsAsync(position);
var mockScope = new Mock<IServiceScopeFactory>();
var handler = new ClosePositionCommandHandler(
_exchangeService,
_accountService.Object,
_tradingService.Object,
mockScope.Object);
var closedPosition = await handler.Handle(command);
Assert.NotNull(closedPosition);
}
}