From 890cff93d57e4a2da733b4daaa738ee33512e8a9 Mon Sep 17 00:00:00 2001 From: benbierens Date: Mon, 22 Jan 2024 16:05:04 +0100 Subject: [PATCH] Adds method for getting request-fulfilled events --- .../CodexContractsPlugin/CodexContractsAccess.cs | 15 +++++++++++++-- .../Marketplace/Customizations.cs | 5 +++++ Tests/CodexTests/BasicTests/ExampleTests.cs | 3 +++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/ProjectPlugins/CodexContractsPlugin/CodexContractsAccess.cs b/ProjectPlugins/CodexContractsPlugin/CodexContractsAccess.cs index e4222d4e..5d03e0e8 100644 --- a/ProjectPlugins/CodexContractsPlugin/CodexContractsAccess.cs +++ b/ProjectPlugins/CodexContractsPlugin/CodexContractsAccess.cs @@ -19,9 +19,9 @@ namespace CodexContractsPlugin TestToken GetTestTokenBalance(IHasEthAddress owner); TestToken GetTestTokenBalance(EthAddress ethAddress); - Request[] GetStorageRequests(TimeRange range); + Request[] GetStorageRequests(TimeRange timeRange); EthAddress GetSlotHost(Request storageRequest, decimal slotIndex); - // add 'RequestFulfilled' to see request is started. + RequestFulfilledEventDTO[] GetRequestFulfilledEvents(TimeRange timeRange); SlotFilledEventDTO[] GetSlotFilledEvents(TimeRange timeRange); SlotFreedEventDTO[] GetSlotFreedEvents(TimeRange timeRange); } @@ -82,6 +82,17 @@ namespace CodexContractsPlugin .ToArray(); } + public RequestFulfilledEventDTO[] GetRequestFulfilledEvents(TimeRange timeRange) + { + var events = gethNode.GetEvents(Deployment.MarketplaceAddress, timeRange); + return events.Select(e => + { + var result = e.Event; + result.BlockNumber = e.Log.BlockNumber.ToUlong(); + return result; + }).ToArray(); + } + public SlotFilledEventDTO[] GetSlotFilledEvents(TimeRange timeRange) { var events = gethNode.GetEvents(Deployment.MarketplaceAddress, timeRange); diff --git a/ProjectPlugins/CodexContractsPlugin/Marketplace/Customizations.cs b/ProjectPlugins/CodexContractsPlugin/Marketplace/Customizations.cs index 088909d4..dafd88ab 100644 --- a/ProjectPlugins/CodexContractsPlugin/Marketplace/Customizations.cs +++ b/ProjectPlugins/CodexContractsPlugin/Marketplace/Customizations.cs @@ -11,6 +11,11 @@ namespace CodexContractsPlugin.Marketplace public EthAddress ClientAddress { get { return new EthAddress(Client); } } } + public partial class RequestFulfilledEventDTO + { + public ulong BlockNumber { get; set; } + } + public partial class SlotFilledEventDTO { public ulong BlockNumber { get; set; } diff --git a/Tests/CodexTests/BasicTests/ExampleTests.cs b/Tests/CodexTests/BasicTests/ExampleTests.cs index 2f01ae29..a901343d 100644 --- a/Tests/CodexTests/BasicTests/ExampleTests.cs +++ b/Tests/CodexTests/BasicTests/ExampleTests.cs @@ -98,6 +98,9 @@ namespace CodexTests.BasicTests AssertBalance(contracts, seller, Is.LessThan(sellerInitialBalance), "Collateral was not placed."); + var requestFulfilledEvents = contracts.GetRequestFulfilledEvents(GetTestRunTimeRange()); + Assert.That(requestFulfilledEvents.Length, Is.EqualTo(1)); + CollectionAssert.AreEqual(request.RequestId, requestFulfilledEvents[0].RequestId); var filledSlotEvents = contracts.GetSlotFilledEvents(GetTestRunTimeRange()); Assert.That(filledSlotEvents.Length, Is.EqualTo(1)); var filledSlotEvent = filledSlotEvents.Single();