test/unit/ns-options/helper/advisor_test.rb in ns-options-0.2.0 vs test/unit/ns-options/helper/advisor_test.rb in ns-options-0.3.0
- old
+ new
@@ -1,32 +1,19 @@
require 'assert'
class NsOptions::Helper::Advisor
- module Output
- module_function
-
- def capture
- out = StringIO.new
- $stdout = out
- yield
- return out
- ensure
- $stdout = STDOUT
- end
- end
-
class BaseTest < Assert::Context
desc "NsOptions::Helper::Advisor"
setup do
@namespace = NsOptions::Namespace.new("something")
@advisor = NsOptions::Helper::Advisor.new(@namespace)
end
subject{ @advisor }
should have_accessors :namespace
- should have_instance_methods :is_this_ok?, :is_this_option_ok?, :is_this_namespace_ok?,
+ should have_instance_methods :is_this_ok?, :is_this_option_ok?, :is_this_sub_namespace_ok?,
:is_already_defined?, :bad_methods, :not_recommended_methods, :bad_method_message,
:duplicate_message, :not_recommended_method_message
should "return methods that cannot be overwritten with a call to #bad_methods" do
expected = [ :define, :namespace, :option, :options ].map(&:to_s).sort
@@ -59,29 +46,30 @@
class DuplicateOptionTest < BaseTest
desc "with a duplicate option"
setup do
@namespace.option(:duplicate)
- @output = Output.capture do
+ @output = NsOptions::TestOutput.capture do
@advisor.is_this_option_ok?("duplicate")
end
end
should "output a message warning that they are re-defining an option" do
expected = subject.duplicate_message("duplicate")
assert_match expected, @output.string
assert_match "From: ", @output.string
end
+
should "return true with a call to #is_already_defined?" do
assert_equal true, subject.is_already_defined?(:duplicate)
end
end
class NotRecommendedOptionTest < BaseTest
desc "with a not recommended option"
setup do
- @output = Output.capture do
+ @output = NsOptions::TestOutput.capture do
@advisor.is_this_option_ok?("apply")
end
end
should "output a message warning using the method name as an option name" do
@@ -89,15 +77,45 @@
assert_match expected, @output.string
assert_match "From: ", @output.string
end
end
- class BadNamespaceTest < BaseTest
- desc "with a bad namespace"
+ class NotRecommendedNamespaceTest < BaseTest
+ desc "with a not recommended root namespace"
setup do
- begin
+ @output = NsOptions::TestOutput.capture do
@advisor.is_this_namespace_ok?("options")
+ end
+ end
+
+ should "output a message warning using the method name as a namespace name" do
+ expected = subject.not_recommended_method_message("namespace", "options")
+ assert_match expected, @output.string
+ assert_match "From: ", @output.string
+ end
+ end
+
+ class NotRecommendedSubNamespaceTest < BaseTest
+ desc "with a not recommended sub namespace"
+ setup do
+ @output = NsOptions::TestOutput.capture do
+ @advisor.is_this_sub_namespace_ok?("apply")
+ end
+ end
+
+ should "output a message warning using the method name as a namespace name" do
+ expected = subject.not_recommended_method_message("sub-namespace", "apply")
+ assert_match expected, @output.string
+ assert_match "From: ", @output.string
+ end
+ end
+
+ class BadSubNamespaceTest < BaseTest
+ desc "with a bad sub namespace"
+ setup do
+ begin
+ @advisor.is_this_sub_namespace_ok?("options")
rescue Exception => @exception
end
end
should "raise an exception when a namespace matches one of the bad methods" do
@@ -105,40 +123,26 @@
expected = subject.bad_method_message("sub-namespace", "options")
assert_equal expected, @exception.message
end
end
- class DuplicateNamespaceTest < BaseTest
- desc "with a duplicate namespace"
+ class DuplicateSubNamespaceTest < BaseTest
+ desc "with a duplicate sub namespace"
setup do
@namespace.namespace(:duplicate)
- @output = Output.capture do
- @advisor.is_this_namespace_ok?("duplicate")
+ @output = NsOptions::TestOutput.capture do
+ @advisor.is_this_sub_namespace_ok?("duplicate")
end
end
should "output a message warning that they are re-defining a namespace" do
expected = subject.duplicate_message("duplicate")
assert_match expected, @output.string
assert_match "From: ", @output.string
end
+
should "return true with a call to #is_already_defined?" do
assert_equal true, subject.is_already_defined?(:duplicate)
- end
- end
-
- class NotRecommendedNamespaceTest < BaseTest
- desc "with a not recommended namespace"
- setup do
- @output = Output.capture do
- @advisor.is_this_namespace_ok?("apply")
- end
- end
-
- should "output a message warning using the method name as a namespace name" do
- expected = subject.not_recommended_method_message("sub-namespace", "apply")
- assert_match expected, @output.string
- assert_match "From: ", @output.string
end
end
end