Class: Ast::Merge::RSpec::ProviderConformance
- Inherits:
-
Object
- Object
- Ast::Merge::RSpec::ProviderConformance
- 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
- #call ⇒ Object
-
#initialize(provider:, request:, parse_output:, expected_value:) ⇒ ProviderConformance
constructor
A new instance of ProviderConformance.
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
#call ⇒ Object
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 |