Module: LogStash::PluginMixins::ECSCompatibilitySupport::SpecHelper

Defined in:
lib/logstash/plugin_mixins/ecs_compatibility_support/spec_helper.rb

Overview

The SpecHelper is meant to be extended into an rspec context to provide it with tools for vaidating the ecs_compatibility matrix.

It creates one sub-context per provided mode, and yields a Selector::State to the provided block primed with the list of supported supported_modes and the active mode.

It also memoizes an ecs_compatibility set to the active mode. It is up to the user to plumb this into the initialization of your plugin.

require 'logstash/plugin_mixins/ecs_compatibility_support/spec_helper'

describe YourClass, :ecs_compatibility_support
  ecs_compatibility_matrix(:disabled, :v1) do |ecs_select|
    context "#description" do
      subject(:result) { instance.description }
      it { is_expected.to eq ecs_select[disabled: "legacy", v1: "novel"] }
    end
  end
end

Instance Method Summary collapse

Instance Method Details

#ecs_compatibility_matrix(*supported_modes, &block) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/logstash/plugin_mixins/ecs_compatibility_support/spec_helper.rb', line 30

def ecs_compatibility_matrix(*supported_modes,&block)
  ecs_selector = Selector.new(*supported_modes)

  ecs_selector.ecs_modes_supported.each do |active_mode|
    context "`ecs_compatibility => #{active_mode}`" do
      let(:ecs_compatibility) { active_mode }

      ecs_select = ecs_selector.state_for(active_mode)
      instance_exec(ecs_select, &block)
    end
  end
end