Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,7 @@ public class ProjectsInformation
[JsonRequired]
[DynamoDBProperty("PoolzBackId")]
public long PoolzBackId { get; set; }

[DynamoDBProperty("TokenHashKey")]
public string TokenHashKey { get; set; } = null!;
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,34 @@
using MediatR;
using Net.Cache.DynamoDb.ERC20;
using Amazon.DynamoDBv2.DataModel;
using Net.Cache.DynamoDb.ERC20.Models;
using InvestProvider.Backend.Services.Strapi;
using poolz.finance.csharp.contracts.LockDealNFT;
using InvestProvider.Backend.Services.Web3.Contracts;
using InvestProvider.Backend.Services.Handlers.AdminCreatePoolzBackId.Models;

namespace InvestProvider.Backend.Services.Handlers.AdminCreatePoolzBackId;

public class AdminCreatePoolzBackIdHandler(IDynamoDBContext dynamoDb)
public class AdminCreatePoolzBackIdHandler(
IDynamoDBContext dynamoDb,
ILockDealNFTService<ContractType> lockDealNFT,
IStrapiClient strapi,
ERC20CacheProvider erc20Cache
)
: IRequestHandler<AdminCreatePoolzBackIdRequest, AdminCreatePoolzBackIdResponse>
{
public async Task<AdminCreatePoolzBackIdResponse> Handle(AdminCreatePoolzBackIdRequest request, CancellationToken cancellationToken)
{
var token = await lockDealNFT
.TokenOfQueryAsync(request.ChainId, ContractType.LockDealNFT, request.PoolzBackId)
.ConfigureAwait(false);

var onChainInfo = await strapi.ReceiveOnChainInfoAsync(request.ChainId);

var tokenInfo = erc20Cache.GetOrAdd(new GetCacheRequest(request.ChainId, token, onChainInfo.RpcUrl));

request.TokenHashKey = tokenInfo.HashKey;

await dynamoDb.SaveAsync(request, cancellationToken);

return new AdminCreatePoolzBackIdResponse(request);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,20 @@
using System.Threading;
using System.Threading.Tasks;
using Moq;
using Xunit;
using System;
using System.Numerics;
using System.Threading;
using System.Threading.Tasks;
using Nethereum.RPC.Eth.DTOs;
using Net.Web3.EthereumWallet;
using Net.Cache.DynamoDb.ERC20;
using Amazon.DynamoDBv2.DataModel;
using Net.Cache.DynamoDb.ERC20.Models;
using InvestProvider.Backend.Services.Strapi;
using poolz.finance.csharp.contracts.LockDealNFT;
using InvestProvider.Backend.Services.Strapi.Models;
using InvestProvider.Backend.Services.Web3.Contracts;
using InvestProvider.Backend.Services.Handlers.AdminCreatePoolzBackId;
using InvestProvider.Backend.Services.Handlers.AdminCreatePoolzBackId.Models;
using InvestProvider.Backend.Tests;

namespace InvestProvider.Backend.Tests.Handlers;

Expand All @@ -14,10 +23,32 @@ public class AdminCreatePoolzBackIdHandlerTests
[Fact]
public async Task Handle_SavesItem_AndReturnsResponse()
{
var phase = TestHelpers.CreatePhase("1", System.DateTime.UtcNow, System.DateTime.UtcNow.AddHours(1), 0m);
Environment.SetEnvironmentVariable("AWS_REGION", "us-east-1");

var phase = TestHelpers.CreatePhase("1", DateTime.UtcNow, DateTime.UtcNow.AddHours(1), 0m);
var projectInfo = TestHelpers.CreateProjectInfo(1, phase);
var dynamoDb = new Mock<IDynamoDBContext>();
var handler = new AdminCreatePoolzBackIdHandler(dynamoDb.Object);
var lockDealNFT = new Mock<ILockDealNFTService<ContractType>>();
lockDealNFT.Setup(x => x.TokenOfQueryAsync(It.IsAny<long>(), ContractType.LockDealNFT, It.IsAny<BigInteger>(), It.IsAny<BlockParameter>()))
.ReturnsAsync(new EthereumAddress("0x00000000000000000000000000000000000000aa"));

var strapi = new Mock<IStrapiClient>();
strapi.Setup(x => x.ReceiveOnChainInfoAsync(1))
.ReturnsAsync(new OnChainInfo(
"http://rpc",
new EthereumAddress("0x00000000000000000000000000000000000000bb"),
new EthereumAddress("0x00000000000000000000000000000000000000cc")
));

var erc20 = new Mock<ERC20CacheProvider>();
erc20.Setup(x => x.GetOrAdd(It.IsAny<GetCacheRequest>()))
.Returns(new ERC20DynamoDbTable());

var handler = new AdminCreatePoolzBackIdHandler(
dynamoDb.Object,
lockDealNFT.Object,
strapi.Object,
erc20.Object);
var request = new AdminCreatePoolzBackIdRequest
{
ProjectId = "pid",
Expand Down
Loading