Sha256: 63fff241ae193658186f56e7a9443599ff8ad1b9ed82ebc96207243467db87fe

Contents?: true

Size: 1.99 KB

Versions: 19

Compression:

Stored size: 1.99 KB

Contents

#
# Copyright:: Copyright (c) 2014-2018 Chef Software Inc.
# License:: Apache License, Version 2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

require "spec_helper"
require "chef-dk/commands_map"
require "stringio"

describe ChefDK::CommandsMap do

  subject(:mapping) { ChefDK::CommandsMap.new }

  before do
    mapping.builtin("example", :Example)
    mapping.builtin("hypenated-example", :HyphenatedExample)
    mapping.builtin("explicit-path-example", :ExplicitPathExample, require_path: "unit/fixtures/command/explicit_path_example")
    mapping.builtin("documented-example", :DocumentedExample, desc: "I have documentation")
  end

  it "defines a subcommand mapping" do
    expect(mapping.have_command?("example")).to be true
  end

  it "infers a non-hypenated command's require path" do
    expect(mapping.spec_for("example").require_path).to eq("chef-dk/command/example")
  end

  it "infers a hyphenated command's require path" do
    expect(mapping.spec_for("hypenated-example").require_path).to eq("chef-dk/command/hypenated_example")
  end

  it "lists the available commands" do
    expect(mapping.command_names).to match_array(%w{example hypenated-example explicit-path-example documented-example})
  end

  it "keeps the docstring of a command" do
    expect(mapping.spec_for("documented-example").description).to eq("I have documentation")
  end

  it "creates an instance of a command" do
    expect(mapping.instantiate("explicit-path-example")).to be_an_instance_of(ChefDK::Command::ExplicitPathExample)
  end

end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
chef-dk-4.13.3 spec/unit/commands_map_spec.rb
chef-dk-4.12.0 spec/unit/commands_map_spec.rb
chef-dk-4.11.0 spec/unit/commands_map_spec.rb
chef-dk-4.10.0 spec/unit/commands_map_spec.rb
chef-dk-4.9.7 spec/unit/commands_map_spec.rb
chef-dk-4.7.73 spec/unit/commands_map_spec.rb
chef-dk-3.13.1 spec/unit/commands_map_spec.rb
chef-dk-4.6.35 spec/unit/commands_map_spec.rb
chef-dk-3.12.10 spec/unit/commands_map_spec.rb
chef-dk-3.12.0 spec/unit/commands_map_spec.rb
chef-dk-4.5.0 spec/unit/commands_map_spec.rb
chef-dk-4.4.27 spec/unit/commands_map_spec.rb
chef-dk-4.3.13 spec/unit/commands_map_spec.rb
chef-dk-4.2.0 spec/unit/commands_map_spec.rb
chef-dk-4.1.7 spec/unit/commands_map_spec.rb
chef-dk-3.11.3 spec/unit/commands_map_spec.rb
chef-dk-3.10.1 spec/unit/commands_map_spec.rb
chef-dk-4.0.60 spec/unit/commands_map_spec.rb
chef-dk-3.0.36 spec/unit/commands_map_spec.rb