Class: Ast::Merge::RSpec::ProviderConformance

Inherits:
Object
  • Object
show all
Defined in:
lib/ast/merge/rspec/provider_conformance.rb

Overview

Executes the adversarial base-participation proof used by shared provider conformance.

Defined Under Namespace

Classes: Result

Instance Method Summary collapse

Constructor Details

#initialize(provider:, request:, parse_output:, expected_value:) ⇒ ProviderConformance

Returns a new instance of ProviderConformance.



10
11
12
13
14
15
# File 'lib/ast/merge/rspec/provider_conformance.rb', line 10

def initialize(provider:, request:, parse_output:, expected_value:)
  @provider = provider
  @request = request
  @parse_output = parse_output
  @expected_value = expected_value
end

Instance Method Details

#callObject



17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/ast/merge/rspec/provider_conformance.rb', line 17

def call
  provider_result = Ast::Merge::ProviderContract.validate_result!(:merge3, @provider.merge3(@request))
  actual_value = provider_result[:ok] ? @parse_output.call(provider_result.fetch(:output)) : nil
  Result.new(
    passed: provider_result[:ok] &&
      provider_result.dig(:verification, :base_participated) == true &&
      actual_value == @expected_value,
    provider_result: provider_result,
    actual_value: actual_value,
    expected_value: @expected_value
  )
end