diff --git a/spec/unit/parser/required_check_spec.rb b/spec/unit/parser/required_check_spec.rb new file mode 100644 index 0000000..779f6b3 --- /dev/null +++ b/spec/unit/parser/required_check_spec.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +RSpec.describe TTY::Option::Parser::RequiredCheck do + it "passes required check" do + param = TTY::Option::Parameter::Option.create(:foo, required: true) + errors = [] + aggregator = ->(err) { errors << err } + required_check = described_class.new(aggregator) + required_check << param + + required_check.delete(param) + + required_check.() + + expect(errors).to eq([]) + end + + it "fails required check" do + param = TTY::Option::Parameter::Option.create(:foo) + errors = [] + aggregator = ->(err) { errors << err } + required_check = described_class.new(aggregator) + required_check << param + + required_check.() + + error = TTY::Option::MissingParameter.new("need to provide '--foo' option") + + expect(errors).to eq([error]) + end +end