69 lines
9.9 KiB
C#
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);
|
|
}
|
|
} |