Sha256: c8cae21b54aab46e29093150e491a761cb1dcc2d5bb820f1e3c147c41001028d

Contents?: true

Size: 1.9 KB

Versions: 13

Compression:

Stored size: 1.9 KB

Contents

require 'assert'
require 'ns-options/namespace_advisor'
require 'ns-options/namespace_data'
require 'ns-options/namespace'

class NsOptions::NamespaceAdvisor

  class BaseTests < Assert::Context
    desc "NsOptions::NamespaceAdvisor"
    setup do
      @ns = NsOptions::Namespace.new 'test'
      @ns.option 'opt1'
      @ns.namespace 'ns1'
      @ns_data = @ns.__data__
      @na = ns_advisor_for 'test'
    end
    subject { @na }

    def ns_advisor_for(name, kind='an option')
      NsOptions::NamespaceAdvisor.new(@ns_data, name, kind)
    end

    should have_imeths :run, :not_recommended?, :duplicate?, :not_recommended_names

    should "know its not recommended names" do
      exp = NsOptions::Namespace.instance_methods(false).map(&:to_sym)
      assert_equal exp, subject.not_recommended_names
    end

    should "know if a name is not recommended" do
      assert     ns_advisor_for('option').not_recommended?
      assert     ns_advisor_for('to_hash').not_recommended?
      assert_not ns_advisor_for('test').not_recommended?
    end

    should "know if a name is a duplicate" do
      assert_not ns_advisor_for('option').duplicate?
      assert_not ns_advisor_for('to_hash').duplicate?
      assert_not ns_advisor_for('test').duplicate?
      assert     ns_advisor_for('opt1').duplicate?
      assert     ns_advisor_for('ns1').duplicate?
    end

  end

  class RunTests < BaseTests
    desc "run meth"
    setup do
      @io = StringIO.new(@out = "")
      @caller = ["a test caller"]
    end

    should "write a warning and any caller info on not recommended names" do
      ns_advisor_for('to_hash').run(@io, @caller)

      assert_match "WARNING: ", @out
      assert_match @caller.first, @out
    end

    should "write a warning and any caller info on duplicate names" do
      ns_advisor_for('opt1').run(@io, @caller)

      assert_match "WARNING: ", @out
      assert_match @caller.first, @out
    end

  end

end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
ns-options-1.1.6 test/unit/namespace_advisor_tests.rb
ns-options-1.1.5 test/unit/namespace_advisor_tests.rb
ns-options-1.1.4 test/unit/namespace_advisor_tests.rb
ns-options-1.1.3 test/unit/namespace_advisor_tests.rb
ns-options-1.1.2 test/unit/namespace_advisor_tests.rb
ns-options-1.1.1 test/unit/namespace_advisor_tests.rb
ns-options-1.1.0 test/unit/namespace_advisor_tests.rb
ns-options-1.0.1 test/unit/namespace_advisor_tests.rb
ns-options-1.0.0 test/unit/namespace_advisor_tests.rb
ns-options-1.0.0.rc4 test/unit/namespace_advisor_tests.rb
ns-options-1.0.0.rc3 test/unit/namespace_advisor_tests.rb
ns-options-1.0.0.rc2 test/unit/namespace_advisor_tests.rb
ns-options-1.0.0.rc1 test/unit/namespace_advisor_tests.rb