Sha256: 6ba7c3bf7e0b2a2428b851d080f1e8afc82f10aa41850901844f9873c0f65e7b

Contents?: true

Size: 1.41 KB

Versions: 144

Compression:

Stored size: 1.41 KB

Contents

# frozen_string_literal: true

require 'eac_ruby_utils/recursive_builder'

RSpec.describe ::EacRubyUtils::RecursiveBuilder do
  let(:item_class) do
    ::Class.new do
      class << self
        def create(label, dependencies_keys)
          item = new(label, dependencies_keys)
          registry[item.label] = item
          item
        end

        def registry
          @registry ||= {}
        end
      end

      attr_reader :label, :dependencies_keys

      def initialize(label, dependencies_keys)
        @label = label
        @dependencies_keys = dependencies_keys.freeze
      end

      def dependencies
        dependencies_keys.map { |key| self.class.registry.fetch(key) }
      end

      def to_s
        label
      end
    end
  end

  items = [
    [:a, %w[c], %w[a c]],
    [:b, %w[a], %w[b a c]],
    [:c, [], %w[c]],
    [:d, %w[a b c e], %w[d a b c e]],
    [:e, %w[c b], %w[e c b a]]
  ]

  items.each do |item|
    let(item[0]) { item_class.create(item[0].to_s, item[1]) }
    before { send(item[0]) }
  end

  describe '#result' do
    items.each do |item|
      context "when root is \"#{item[0]}\"" do
        let(:root) { send(item[0]) }
        let(:dependencies) { item[2].map { |d| send(d) } }
        let(:builder) do
          described_class.new(root, &:dependencies)
        end

        it "is #{item[2]}" do
          expect(builder.result).to eq(dependencies)
        end
      end
    end
  end
end

Version data entries

144 entries across 144 versions & 3 rubygems

Version Path
eac_tools-0.76.1 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/recursive_builder_spec.rb
eac_tools-0.76.0 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/recursive_builder_spec.rb
eac_tools-0.75.2 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/recursive_builder_spec.rb
eac_tools-0.75.1 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/recursive_builder_spec.rb
eac_tools-0.75.0 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/recursive_builder_spec.rb
eac_tools-0.74.1 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/recursive_builder_spec.rb
eac_tools-0.74.0 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/recursive_builder_spec.rb
eac_tools-0.73.0 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/recursive_builder_spec.rb
eac_tools-0.72.0 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/recursive_builder_spec.rb
eac_tools-0.70.1 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/recursive_builder_spec.rb
eac_tools-0.70.0 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/recursive_builder_spec.rb
eac_tools-0.69.1 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/recursive_builder_spec.rb
eac_tools-0.69.0 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/recursive_builder_spec.rb
eac_tools-0.68.0 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/recursive_builder_spec.rb
eac_tools-0.67.1 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/recursive_builder_spec.rb
eac_tools-0.67.0 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/recursive_builder_spec.rb
eac_tools-0.66.0 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/recursive_builder_spec.rb
eac_tools-0.65.1 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/recursive_builder_spec.rb
eac_tools-0.65.0 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/recursive_builder_spec.rb
eac_tools-0.64.0 sub/eac_ruby_utils/spec/lib/eac_ruby_utils/recursive_builder_spec.rb