From 9740dbc9f2ad9a5aa71a0a99a0c96f971429b8e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Imobach=20Gonz=C3=A1lez=20Sosa?= Date: Mon, 10 May 2021 14:33:08 +0100 Subject: [PATCH] Extend Ask::CheckBox unit tests --- .../autoinstall/widgets/ask/check_box_test.rb | 68 ++++++++++++++++++- 1 file changed, 67 insertions(+), 1 deletion(-) 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