< Summary

Information
Class: AsiBackbone.Testing.Contracts.DecisionReceiptSinkContract
Assembly: AsiBackbone.Testing
File(s): /home/runner/work/AsiBackbone/AsiBackbone/src/AsiBackbone.Testing/Contracts/DecisionReceiptSinkContract.cs
Line coverage
100%
Covered lines: 16
Uncovered lines: 0
Coverable lines: 16
Total lines: 55
Line coverage: 100%
Branch coverage
100%
Covered branches: 4
Total branches: 4
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
VerifyDecisionReceiptSinkAcceptsValidReceiptAsync()100%44100%

File(s)

/home/runner/work/AsiBackbone/AsiBackbone/src/AsiBackbone.Testing/Contracts/DecisionReceiptSinkContract.cs

#LineLine coverage
 1using AsiBackbone.Core.Audit;
 2
 3namespace AsiBackbone.Testing.Contracts;
 4
 5/// <summary>
 6/// Reusable contract fixture for <see cref="IDecisionReceiptSink" /> implementations.
 7/// </summary>
 8public abstract class DecisionReceiptSinkContract
 9{
 10    /// <summary>
 11    /// Creates the decision receipt sink implementation under test.
 12    /// </summary>
 13    /// <returns>The decision receipt sink implementation to validate.</returns>
 14    protected abstract IDecisionReceiptSink CreateDecisionReceiptSink();
 15
 16    /// <summary>
 17    /// Creates the decision receipt supplied to the sink implementation under test.
 18    /// </summary>
 19    /// <returns>The decision receipt to write.</returns>
 20    protected abstract IDecisionReceipt CreateDecisionReceipt();
 21
 22    /// <summary>
 23    /// Verifies that a decision receipt sink accepts a valid decision receipt value without weakening its required shap
 24    /// </summary>
 25    /// <param name="cancellationToken">A token that can cancel the contract validation.</param>
 26    /// <returns>A task that completes when the contract validation succeeds.</returns>
 27    public async ValueTask VerifyDecisionReceiptSinkAcceptsValidReceiptAsync(CancellationToken cancellationToken = defau
 28    {
 629        IDecisionReceiptSink receiptSink = CreateDecisionReceiptSink()
 630            ?? throw new GovernanceContractViolationException("Decision receipt sink contract must provide a sink instan
 531        IDecisionReceipt receipt = CreateDecisionReceipt()
 532            ?? throw new GovernanceContractViolationException("Decision receipt sink contract must provide a decision re
 33
 434        _ = GovernanceDecisionContract.VerifyDecisionReceipt(receipt, "Decision receipt sink receipt");
 35
 36        try
 37        {
 438            await receiptSink.WriteAsync(receipt, cancellationToken).ConfigureAwait(false);
 139        }
 140        catch (OperationCanceledException)
 41        {
 142            throw;
 43        }
 144        catch (GovernanceContractViolationException)
 45        {
 146            throw;
 47        }
 148        catch (Exception exception)
 49        {
 150            throw new GovernanceContractViolationException(
 151                "Decision receipt sink implementations must accept a valid decision receipt during normal contract valid
 152                exception);
 53        }
 154    }
 55}