diff --git a/test/lib/autoinstall/widgets/ask/check_box_test.rb b/test/lib/autoinstall/widgets/ask/check_box_test.rb index 91ed70508..32847bb7f 100644 --- a/test/lib/autoinstall/widgets/ask/check_box_test.rb +++ b/test/lib/autoinstall/widgets/ask/check_box_test.rb @@ -20,6 +20,7 @@ require_relative "../../../../test_helper" require "autoinstall/widgets/ask/check_box" require "autoinstall/ask/question" +require "autoinstall/script" require "cwm/rspec" describe Y2Autoinstall::Widgets::Ask::CheckBox do @@ -34,5 +35,70 @@ include_examples "CWM::CheckBox" include_examples "ask dialog widget" - describe "#init" + describe "#init" do + before do + question.default = false + end + + context "when the question has a value" do + before do + question.value = true + end + + it "sets widget's value" do + expect(subject).to receive(:value=).with(true) + subject.init + end + end + + context "when the question has not a value" do + context "and it has a default_value_script" do + let(:script) do + instance_double( + Y2Autoinstallation::AskDefaultValueScript, + create_script_file: nil, execute: result, stdout: stdout + ) + end + + let(:result) { true } + let(:stdout) { "true" } + + before do + question.default_value_script = script + end + + context "and the script returns 'true'" do + it "sets the value to true" do + expect(subject).to receive(:value=).with(true) + subject.init + end + end + + context "and the script does not return 'true'" do + let(:stdout) { "no" } + + it "sets the value to false" do + expect(subject).to receive(:value=).with(false) + subject.init + end + end + + context "but the script fails" do + let(:result) { false } + + it "uses the default value" do + expect(subject).to receive(:value=).with(question.default) + subject.init + end + end + end + + context "and there is no default_value_script" do + it "uses the question default value as the widget's value" do + expect(subject).to receive(:value=).with(question.default) + subject.init + end + end + end + end end