test/pref_test.rb in cliutils-2.0.3 vs test/pref_test.rb in cliutils-2.1.0

- old
+ new

@@ -1,10 +1,82 @@ require 'test_helper' require 'yaml' require File.join(File.dirname(__FILE__), '..', 'lib/cliutils/ext/hash_extensions') require File.join(File.dirname(__FILE__), '..', 'lib/cliutils/prefs/pref') +require File.join(File.dirname(__FILE__), '..', 'lib/cliutils/prefs/pref_actions/pref_action') +require File.join(File.dirname(__FILE__), '..', 'lib/cliutils/prefs/pref_behaviors/pref_behavior') +require File.join(File.dirname(__FILE__), '..', 'lib/cliutils/prefs/pref_validators/pref_validator') # Tests for the Prefs class class TestPref < Test::Unit::TestCase - + def setup + @prefs_hash = { + behaviors: [{ name: 'test' }], + config_key: 'test_prompt', + config_section: 'app_data', + default: 'bachya', + options: ['a', 'b'], + pre: { + message: 'Test pre message', + action: 'test' + }, + post: { + message: 'Test post message', + action: 'test' + }, + prereqs: [ + { config_section: 'section' }, + { config_value: 'value' } + ], + prompt_text: 'Test', + validators: ['test'], + } + + CLIUtils::Prefs.register_action(File.join(File.dirname(__FILE__), 'test_files/test_action.rb')) + CLIUtils::Prefs.register_behavior(File.join(File.dirname(__FILE__), 'test_files/test_behavior.rb')) + CLIUtils::Prefs.register_validator(File.join(File.dirname(__FILE__), 'test_files/test_validator.rb')) + end + + def teardown + + end + + def test_initialization + pref = CLIUtils::Pref.new(@prefs_hash) + + assert_equal(pref.answer, nil) + assert_equal(pref.behavior_objects[0].class, CLIUtils::TestBehavior.new.class) + assert_equal(pref.behaviors, [{ name: 'test' }]) + assert_equal(pref.config_key, @prefs_hash[:config_key]) + assert_equal(pref.config_section, @prefs_hash[:config_section]) + assert_equal(pref.default, @prefs_hash[:default]) + assert_equal(pref.last_error_message, nil) + assert_equal(pref.options, ['a', 'b']) + assert_equal(pref.post, { message: 'Test post message', action: 'test' }) + assert_equal(pref.pre, { message: 'Test pre message', action: 'test' }) + assert_equal(pref.prereqs, [{ config_section: 'section' }, { config_value: 'value' }]) + assert_equal(pref.validator_objects[0].class, CLIUtils::TestValidator.new.class) + assert_equal(pref.validators, ['test']) + end + + def test_action + require File.join(File.dirname(__FILE__), 'test_files/test_action.rb') + a = CLIUtils::TestAction.new + assert_output("here\n") { a.run } + end + + def test_behavior + require File.join(File.dirname(__FILE__), 'test_files/test_behavior.rb') + b = CLIUtils::TestBehavior.new + assert_equal(b.evaluate('test'), 'test_behavior: test') + end + + def test_validator + require File.join(File.dirname(__FILE__), 'test_files/test_validator.rb') + v = CLIUtils::TestValidator.new + v.validate('bachya') + + assert_equal(v.is_valid, true) + assert_equal(v.message, "String did not equal 'bachya': bachya") + end end \ No newline at end of file