Skip to content

Commit

Permalink
Use the NtpServer widget in the Allin1 dialog
Browse files Browse the repository at this point in the history
  • Loading branch information
imobachgs committed Apr 19, 2017
1 parent 3b9e6bb commit 6e876a1
Show file tree
Hide file tree
Showing 4 changed files with 93 additions and 11 deletions.
5 changes: 4 additions & 1 deletion src/lib/installation/clients/inst_casp_overview.rb
Expand Up @@ -27,6 +27,7 @@

require "installation/widgets/overview"
require "installation/widgets/system_role"
require "installation/widgets/ntp_server"
require "installation/services"

module Installation
Expand Down Expand Up @@ -147,6 +148,7 @@ def quadrant_layout(upper_left:, lower_left:, upper_right:, lower_right:)
# block installation
def content
controller_node = Installation::Widgets::ControllerNodePlace.new
ntp_server = Installation::Widgets::NtpServerPlace.new

kdump_overview = Installation::Widgets::Overview.new(client: "kdump_proposal")
bootloader_overview = Installation::Widgets::Overview.new(client: "bootloader_proposal", redraw: [kdump_overview])
Expand All @@ -159,8 +161,9 @@ def content
::Y2Country::Widgets::KeyboardSelectionCombo.new("english-us")
),
lower_left: VBox(
Installation::Widgets::SystemRole.new(controller_node),
Installation::Widgets::SystemRole.new(controller_node, ntp_server),
controller_node,
ntp_server,
Tune::Widgets::SystemInformation.new
),
upper_right: VBox(
Expand Down
27 changes: 18 additions & 9 deletions src/lib/installation/widgets/system_role.rb
Expand Up @@ -23,6 +23,7 @@
require "cwm/widget"
require "installation/services"
require "installation/system_role"
require "installation/widgets/ntp_server"

Yast.import "ProductControl"
Yast.import "IP"
Expand Down Expand Up @@ -78,7 +79,7 @@ class ControllerNodePlace < CWM::ReplacePoint
def initialize
@controller_node = ControllerNode.new
@empty = CWM::Empty.new("no_controller")
super(widget: @empty)
super(id: "controller_placeholder", widget: @empty)
end

def show
Expand All @@ -91,9 +92,19 @@ def hide
end

class SystemRole < CWM::ComboBox
def initialize(controller_node_widget)
ROLE_WIDGETS = {
"worker_role" => [:controller_node],
"dashboard_role" => [:ntp_server]
}.freeze

attr_reader :widgets_map

def initialize(controller_node_widget, ntp_server_widget)
textdomain "installation"
@controller_node_widget = controller_node_widget
@widgets_map = {
controller_node: controller_node_widget,
ntp_server: ntp_server_widget
}
end

def label
Expand All @@ -110,12 +121,10 @@ def init
end

def handle
if value == "worker_role"
@controller_node_widget.show
else
@controller_node_widget.hide
end

to_show = ROLE_WIDGETS.fetch(value, [])
to_hide = widgets_map.keys - to_show
to_hide.each { |w| widgets_map[w].hide }
to_show.each { |w| widgets_map[w].show }
nil
end

Expand Down
3 changes: 2 additions & 1 deletion test/Makefile.am
Expand Up @@ -36,7 +36,8 @@ TESTS = \
widgets_overview_test.rb \
widgets_system_role_test.rb \
lib/system_role_handlers_runner_test.rb \
lib/widgets/ntp_server_test.rb
lib/widgets/ntp_server_test.rb \
lib/widgets/system_role_test.rb

TEST_EXTENSIONS = .rb
RB_LOG_COMPILER = rspec
Expand Down
69 changes: 69 additions & 0 deletions test/lib/widgets/system_role_test.rb
@@ -0,0 +1,69 @@
#!/usr/bin/env rspec

require_relative "../../test_helper"
require "installation/widgets/system_role"

describe ::Installation::Widgets::SystemRole do
subject(:widget) do
::Installation::Widgets::SystemRole.new(controller_node_widget, ntp_server_widget)
end

let(:controller_node_widget) { double("controller_node_widget") }
let(:ntp_server_widget) { double("ntp_server_widget") }
Yast::ProductControl.GetTranslatedText("roles_caption")

describe "#label" do
before do
allow(Yast::ProductControl).to receive(:GetTranslatedText)
.with("roles_caption").and_return("LABEL")
end

it "returns the label defined in the product's control file" do
expect(widget.label).to eq("LABEL")
end
end

describe "#handle" do
let(:value) { "" }

before do
allow(widget).to receive(:value).and_return(value)
end

it "returns nil" do
allow(ntp_server_widget).to receive(:hide)
allow(controller_node_widget).to receive(:hide)
expect(widget.handle).to be_nil
end

context "when value is 'worker_role'" do
let(:value) { "worker_role" }

it "only shows the controller node widget" do
expect(ntp_server_widget).to receive(:hide)
expect(controller_node_widget).to receive(:show)
widget.handle
end
end

context "when value is 'dashboard_role'" do
let(:value) { "dashboard_role" }

it "only shows the NTP server widget" do
expect(ntp_server_widget).to receive(:show)
expect(controller_node_widget).to receive(:hide)
widget.handle
end
end

context "when value is not 'worker_role' nor 'dashboard_role'" do
let(:value) { "none_role" }

it "hides all widgets" do
expect(ntp_server_widget).to receive(:hide)
expect(controller_node_widget).to receive(:hide)
widget.handle
end
end
end
end

0 comments on commit 6e876a1

Please sign in to comment.