public async Task ClearProposalByLibAsync(Hash blockHash, long blockHeight) { var proposalIdList = _proposalProvider.GetAllProposals(); var result = await _contractReaderFactory.Create(new ContractReaderContext { BlockHash = blockHash, BlockHeight = blockHeight, ContractAddress = await GetParliamentContractAddressAsync(new ChainContext { BlockHash = blockHash, BlockHeight = blockHeight }) }).GetNotVotedPendingProposals .CallAsync(new ProposalIdList { ProposalIds = { proposalIdList } }); if (result == null) { return; } foreach (var proposalId in proposalIdList.Except(result.ProposalIds)) { if (!_proposalProvider.TryGetProposalCreatedHeight(proposalId, out var h) || h > blockHeight) { continue; } Logger.LogDebug($"Clear proposal {proposalId} by LIB hash {blockHash}, height {blockHeight}"); _proposalProvider.RemoveProposalById(proposalId); } }
public void RemoveProposalByIdTest() { var proposalId = HashHelper.ComputeFrom("ProposalId"); var blockHeight = 10; _proposalProvider.AddProposal(proposalId, blockHeight); _proposalProvider.RemoveProposalById(proposalId); var targetProposal = _proposalProvider.TryGetProposalCreatedHeight(proposalId, out _); targetProposal.ShouldBeFalse(); }