Hello community,

here is the log from the commit of package yast2-dns-server for 
openSUSE:Factory checked in at 2018-08-12 20:54:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-dns-server (Old)
 and      /work/SRC/openSUSE:Factory/.yast2-dns-server.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "yast2-dns-server"

Sun Aug 12 20:54:56 2018 rev:75 rq:628640 version:4.1.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-dns-server/yast2-dns-server.changes        
2018-07-27 10:58:09.189865996 +0200
+++ /work/SRC/openSUSE:Factory/.yast2-dns-server.new/yast2-dns-server.changes   
2018-08-12 20:55:00.469422764 +0200
@@ -1,0 +2,7 @@
+Tue Aug  7 12:14:35 UTC 2018 - dgonza...@suse.com
+
+- Use CWM::ServiceWidget to manage the service status
+  (part of fate#319428).
+- 4.1.0
+
+-------------------------------------------------------------------

Old:
----
  yast2-dns-server-4.0.4.tar.bz2

New:
----
  yast2-dns-server-4.1.0.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ yast2-dns-server.spec ++++++
--- /var/tmp/diff_new_pack.1QJz0s/_old  2018-08-12 20:55:00.881423601 +0200
+++ /var/tmp/diff_new_pack.1QJz0s/_new  2018-08-12 20:55:00.881423601 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           yast2-dns-server
-Version:        4.0.4
+Version:        4.1.0
 Release:        0
 Url:            https://github.com/yast/yast-dns-server
 
@@ -33,8 +33,8 @@
 BuildRequires:  yast2-testsuite
 BuildRequires:  rubygem(rspec)
 
-# SuSEFirewall2 replaced by firewalld
-BuildRequires:  yast2 >= 4.0.39
+# Yast2::ServiceWidget
+BuildRequires:  yast2 >= 4.1.0
 Requires:       /usr/bin/host
 Requires:       perl-gettext
 # Exporter Data::Dumper
@@ -55,8 +55,8 @@
 # FATE #303386: Network setup tools
 Requires:       yast2-sysconfig
 
-# SuSEFirewall2 replaced by firewalld
-Requires:       yast2 >= 4.0.39
+# Yast2::ServiceWidget
+Requires:       yast2 >= 4.1.0
 
 BuildArch:      noarch
 
@@ -82,6 +82,8 @@
 %defattr(-,root,root)
 %dir %{yast_yncludedir}/dns-server
 %{yast_yncludedir}/dns-server/*
+%dir %{yast_libdir}/dns-server
+%{yast_libdir}/dns-server/*.rb
 %{yast_clientdir}/dns-server.rb
 %{yast_clientdir}/dns-server_*.rb
 %{yast_moduledir}/*

++++++ yast2-dns-server-4.0.4.tar.bz2 -> yast2-dns-server-4.1.0.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-dns-server-4.0.4/package/yast2-dns-server.changes 
new/yast2-dns-server-4.1.0/package/yast2-dns-server.changes
--- old/yast2-dns-server-4.0.4/package/yast2-dns-server.changes 2018-07-26 
11:46:52.000000000 +0200
+++ new/yast2-dns-server-4.1.0/package/yast2-dns-server.changes 2018-08-10 
16:21:56.000000000 +0200
@@ -1,4 +1,11 @@
 -------------------------------------------------------------------
+Tue Aug  7 12:14:35 UTC 2018 - dgonza...@suse.com
+
+- Use CWM::ServiceWidget to manage the service status
+  (part of fate#319428).
+- 4.1.0
+
+-------------------------------------------------------------------
 Wed Jul 25 18:20:26 UTC 2018 - knut.anders...@suse.com
 
 - Reload the configuration only if the service is running but do
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-dns-server-4.0.4/package/yast2-dns-server.spec 
new/yast2-dns-server-4.1.0/package/yast2-dns-server.spec
--- old/yast2-dns-server-4.0.4/package/yast2-dns-server.spec    2018-07-26 
11:46:52.000000000 +0200
+++ new/yast2-dns-server-4.1.0/package/yast2-dns-server.spec    2018-08-10 
16:21:56.000000000 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           yast2-dns-server
-Version:        4.0.4
+Version:        4.1.0
 Release:        0
 Url:            https://github.com/yast/yast-dns-server
 
@@ -33,8 +33,8 @@
 BuildRequires:  yast2-testsuite
 BuildRequires:  rubygem(rspec)
 
-# SuSEFirewall2 replaced by firewalld
-BuildRequires:  yast2 >= 4.0.39
+# Yast2::ServiceWidget
+BuildRequires:  yast2 >= 4.1.0
 Requires:       /usr/bin/host
 Requires:       perl-gettext
 # Exporter Data::Dumper
@@ -55,8 +55,8 @@
 # FATE #303386: Network setup tools
 Requires:       yast2-sysconfig
 
-# SuSEFirewall2 replaced by firewalld
-Requires:       yast2 >= 4.0.39
+# Yast2::ServiceWidget
+Requires:       yast2 >= 4.1.0
 
 BuildArch:      noarch
 
@@ -82,6 +82,8 @@
 %defattr(-,root,root)
 %dir %{yast_yncludedir}/dns-server
 %{yast_yncludedir}/dns-server/*
+%dir %{yast_libdir}/dns-server
+%{yast_libdir}/dns-server/*.rb
 %{yast_clientdir}/dns-server.rb
 %{yast_clientdir}/dns-server_*.rb
 %{yast_moduledir}/*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-dns-server-4.0.4/src/Makefile.am 
new/yast2-dns-server-4.1.0/src/Makefile.am
--- old/yast2-dns-server-4.0.4/src/Makefile.am  2018-07-26 11:46:52.000000000 
+0200
+++ new/yast2-dns-server-4.1.0/src/Makefile.am  2018-08-10 16:21:56.000000000 
+0200
@@ -30,6 +30,10 @@
   include/dns-server/cmdline.rb \
   include/dns-server/helps.rb
 
+ylibdir = @ylibdir@/dns-server
+ylib_DATA = \
+  lib/dns-server/service_widget_helpers.rb
+
 scrconf_DATA = \
   scrconf/dns_zone.scr \
   scrconf/cfg_named.scr \
@@ -49,6 +53,6 @@
 desktop_DATA = \
   desktop/dns-server.desktop
 
-EXTRA_DIST = $(module_DATA) $(module1_DATA) $(client_DATA) $(ynclude_DATA) 
$(scrconf_DATA) $(agent_SCRIPTS) $(schemafiles_DATA) $(desktop_DATA)
+EXTRA_DIST = $(module_DATA) $(module1_DATA) $(client_DATA) $(ynclude_DATA) 
$(scrconf_DATA) $(agent_SCRIPTS) $(schemafiles_DATA) $(desktop_DATA) 
$(ylib_DATA)
 
 include $(top_srcdir)/Makefile.am.common
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-dns-server-4.0.4/src/include/dns-server/dialog-installwizard.rb 
new/yast2-dns-server-4.1.0/src/include/dns-server/dialog-installwizard.rb
--- old/yast2-dns-server-4.0.4/src/include/dns-server/dialog-installwizard.rb   
2018-07-26 11:46:52.000000000 +0200
+++ new/yast2-dns-server-4.1.0/src/include/dns-server/dialog-installwizard.rb   
2018-08-10 16:21:56.000000000 +0200
@@ -9,8 +9,13 @@
 #
 # Representation of the configuration of dns-server.
 # Input and output routines.
+
+require "dns-server/service_widget_helpers"
+
 module Yast
   module DnsServerDialogInstallwizardInclude
+    include Y2DnsServer::ServiceWidgetHelpers
+
     def initialize_dns_server_dialog_installwizard(include_target)
       textdomain "dns-server"
 
@@ -23,6 +28,14 @@
       Yast.import "CWMFirewallInterfaces"
     end
 
+    # Writes settings and saves the service
+    #
+    # @return [Boolean] true if service is saved successfully; false otherwise
+    def write_dns_settings
+      service_widget.store
+      service.save
+    end
+
     def runInstallWizardForwardersDialog
       caption =
         # Dialog caption (before a colon)
@@ -184,22 +197,7 @@
           VBox(
             firewall_layout,
             ldap_support,
-            # Label for Radiobuttons - DNS starting
-            Left(Label(_("Start-up Behavior"))),
-            Left(
-              RadioButtonGroup(
-                Id("dns_server_type"),
-                VBox(
-                  # Radiobutton label - DNS starting
-                  Left(
-                    RadioButton(Id(:on), _("O&n: Start Now and When Booting"))
-                  ),
-                  # Radiobutton label - DNS starting
-                  Left(RadioButton(Id(:off), _("O&ff: Only Start Manually"))),
-                  VSpacing(1)
-                )
-              )
-            )
+            service_widget.contents,
           ),
           RichText(Id("installation_overview"), rich_text),
           VSpacing(2),
@@ -222,13 +220,6 @@
       SetDNSSErverIcon()
       Wizard.SetNextButton(:next, Label.FinishButton)
 
-      auto_start = DnsServer.GetStartService
-      UI.ChangeWidget(
-        Id("dns_server_type"),
-        :CurrentButton,
-        auto_start ? :on : :off
-      )
-
       use_ldap = false
       # only expert allows to store data in ldap
       if DnsServer.ExpertUI
@@ -270,10 +261,8 @@
       end
 
       if ret == :next || ret == :expert
-        DnsServer.SetModified
+        write_dns_settings
 
-        auto_start2 = UI.QueryWidget(Id("dns_server_type"), :CurrentButton) == 
:on
-        DnsServer.SetStartService(auto_start2)
         CWMFirewallInterfaces.OpenFirewallStore(firewall_widget, "", event)
       end
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-dns-server-4.0.4/src/include/dns-server/dialog-main.rb 
new/yast2-dns-server-4.1.0/src/include/dns-server/dialog-main.rb
--- old/yast2-dns-server-4.0.4/src/include/dns-server/dialog-main.rb    
2018-07-26 11:46:52.000000000 +0200
+++ new/yast2-dns-server-4.1.0/src/include/dns-server/dialog-main.rb    
2018-08-10 16:21:56.000000000 +0200
@@ -5,12 +5,17 @@
 # Summary:     Data for configuration of dns-server, input and output 
functions.
 # Authors:     Jiri Srain <jsr...@suse.cz>
 
-require "ui/service_status"
+require "yast"
+require "yast2/popup"
+require "dns-server/service_widget_helpers"
 
 module Yast
   # Representation of the configuration of dns-server.
   # Input and output routines.
   module DnsServerDialogMainInclude
+    include Yast::Logger
+    include Y2DnsServer::ServiceWidgetHelpers
+
     def initialize_dns_server_dialog_main(include_target)
       textdomain "dns-server"
 
@@ -259,20 +264,9 @@
       @functions = { :abort => fun_ref(method(:confirmAbort), "boolean ()") }
     end
 
-    def InitStartUp(_key)
-      status_widget.refresh
-      nil
-    end
+    def handle_apply(_key, event)
+      SaveAndRestart(event) if event["ID"] == "apply"
 
-    def HandleStartUp(_key, event)
-      event_id = event["ID"]
-      if event_id == "apply"
-        SaveAndRestart()
-      else
-        if status_widget.handle_input(event_id) == :enabled_flag
-          DnsServer.SetStartService(status_widget.enabled_flag?)
-        end
-      end
       nil
     end
 
@@ -895,7 +889,7 @@
             _("Really set this\noption without any value?\n")
           )
           return false
-        end 
+        end
         # it is a YES or NO type
       elsif OptionsIsYesNoType(option)
         # it has not a yes/no value
@@ -913,7 +907,7 @@
             )
             return false
           end
-        end 
+        end
         # it must be a number
       elsif OptionsIsNumberType(option)
         # if has not a number value
@@ -1876,38 +1870,72 @@
     end
 
     # Write settings dialog
-    # @return `abort if aborted and `next otherwise
+    #
+    # @return [Symbol] :next whether configuration is saved successfully
+    #                  :back if user decided to change settings
+    #                  :abort otherwise
     def WriteDialog
-      Wizard.RestoreHelp(Ops.get_string(@HELPS, "write", ""))
-      ret = DnsServer.Write
-      if ret
-        service.reload if service.running? && status_widget.reload_flag?
-        :next
-      else
-        if Popup.YesNo(_("Saving the configuration failed. Change the 
settings?"))
-          :back
-        else
-          :abort
-        end
-      end
+      Wizard.RestoreHelp(write_help_text)
+
+      return :next if write_settings
+      return :back if back_to_change_setting?
+      :abort
     end
 
-    # Writes settings and restores the dialog without exiting
-    def SaveAndRestart
+    # Writes settings without exiting
+    def SaveAndRestart(event)
+      return nil unless validate_and_save_widgets(event)
+
       Wizard.CreateDialog
-      Wizard.RestoreHelp(Ops.get_string(@HELPS, "write", ""))
-      ret = DnsServer.Write
-      if ret
-        service.reload if service.running? && status_widget.reload_flag?
-      else
-        Report.Error(_("Saving the configuration failed"))
-      end
-      Builtins.sleep(1000)
-      UI.CloseDialog
+      Wizard.RestoreHelp(write_help_text)
+      Report.Error(_("Saving the configuration failed")) unless write_settings
+      Wizard.CloseDialog
+
+      service_widget.refresh
 
       nil
     end
 
+    # Writes DNS server settings and saves the service
+    #
+    # @note currently, the DnsServer is a Perl module, reason why the write of
+    # settings is being performed in two steps.
+    #
+    # @return [Boolean] true if settings are saved successfully; false 
otherwise
+    def write_settings
+      DnsServer.Write && service.save
+    end
+
+    # Shows a popup asking to the user if wants to change settings
+    #
+    # @return [Boolean] true if user decides to go back to change settings; 
false otherwise
+    def back_to_change_setting?
+      change_settings_message = _("Saving the configuration failed. Change the 
settings?")
+      Yast2::Popup.show(change_settings_message, headline: :warning, buttons: 
:yes_no) == :yes
+    end
+
+    # Validates and saves CWM widgets
+    #
+    # @param [Hash] event map that triggered saving
+    #
+    # @return [Boolean] false if validation fails; true otherwise
+    def validate_and_save_widgets(event)
+      return false unless CWM.validate_current_widgets(event)
+
+      CWM.save_current_widgets(event)
+
+      true
+    end
+
+    # Returns the common help text during settings are being written
+    #
+    # @return [String] common help text, if any; empty string otherwise
+    def write_help_text
+     @HELPS.fetch("write") { "" }
+    rescue
+      ""
+    end
+
     # Ask for exit without saving
     # @return event that should be handled, nil if user canceled the exit
     def confirmAbort
@@ -1961,12 +1989,12 @@
         "start_up"      => {
           # FIXME: new startup
           "contents"        => VBox(
-            status_widget.widget,
+            service_widget.contents,
             VSpacing(),
             "firewall",
             VStretch(),
             Right(
-              PushButton(Id("apply"), _("Apply Changes"))
+              "apply"
             )
           ),
           # Dialog Label - DNS - expert settings
@@ -1981,7 +2009,7 @@
           # FIXME: new startup
           "widget_names"    => DnsServer.ExpertUI ?
             # expert mode
-            ["start_up", "firewall"] :
+            ["start_up", "firewall", "apply"] :
             # simple mode
             ["start_up", "firewall", "set_icon"]
         },
@@ -2078,18 +2106,12 @@
     # Returns a hash describing the UI widgets
     def new_widgets
       @new_widgets ||= {
-        "start_up"    => {
-          "widget"        => :custom,
-          "custom_widget" => VBox(),
-          "init"          => fun_ref(
-            method(:InitStartUp),
-            "void (string)"
-          ),
-          "handle"        => fun_ref(
-            method(:HandleStartUp),
-            "symbol (string, map)"
-          ),
-          "help"          => status_widget.help
+        "start_up"    => service_widget.cwm_definition,
+        "apply"           => {
+          "widget" => :push_button,
+          "label"  => _("Apply Changes"),
+          "handle" => fun_ref(method(:handle_apply), "symbol (string, map)"),
+          "help"   => ""
         },
         "firewall"      => CWMFirewallInterfaces.CreateOpenFirewallWidget(
           { "services" => ["dns"], "display_details" => true }
@@ -2224,21 +2246,5 @@
         }
       }
     end
-
-    # Returns the status widget for service
-    #
-    # @return [::UI::ServiceStatus] status widget
-    #
-    # @see #service
-    def status_widget
-      @status_widget ||= ::UI::ServiceStatus.new(service)
-    end
-
-    # Returns the 'named' systemd service
-    #
-    # @return [SystemdService] 'named' systemd service instance
-    def service
-      @service ||= SystemdService.find("named")
-    end
   end
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-dns-server-4.0.4/src/lib/dns-server/service_widget_helpers.rb 
new/yast2-dns-server-4.1.0/src/lib/dns-server/service_widget_helpers.rb
--- old/yast2-dns-server-4.0.4/src/lib/dns-server/service_widget_helpers.rb     
1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-dns-server-4.1.0/src/lib/dns-server/service_widget_helpers.rb     
2018-08-10 16:21:56.000000000 +0200
@@ -0,0 +1,44 @@
+# encoding: utf-8
+
+# Copyright (c) [2018] SUSE LLC
+#
+# All Rights Reserved.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of version 2 of the GNU General Public License as published
+# by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+# more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, contact SUSE LLC.
+#
+# To contact SUSE LLC about this file by physical or electronic mail, you may
+# find current contact information at www.suse.com.
+# encoding: utf-8
+
+require "cwm/service_widget"
+require "yast2/system_service"
+
+module Y2DnsServer
+  module ServiceWidgetHelpers
+    # Returns the 'named' system service
+    #
+    # @return [Yast2::SystemService] 'named' system service
+    def service
+      @service ||= Yast2::SystemService.find("named")
+    end
+
+    # Widget to define status and start mode of the service
+    #
+    # @return [CWM::ServiceWidget]
+    #
+    # @see #service
+    def service_widget
+      @service_widget ||= CWM::ServiceWidget.new(service)
+    end
+  end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-dns-server-4.0.4/src/modules/DnsServer.pm 
new/yast2-dns-server-4.1.0/src/modules/DnsServer.pm
--- old/yast2-dns-server-4.0.4/src/modules/DnsServer.pm 2018-07-26 
11:46:52.000000000 +0200
+++ new/yast2-dns-server-4.1.0/src/modules/DnsServer.pm 2018-08-10 
16:21:56.000000000 +0200
@@ -1525,44 +1525,48 @@
     $self->update_forwarding();
 
     $ret = {};
-    # named has to be started
-    if ($start_service)
-    {
-       my $success = 1;
-       if (! $write_only)
-       {
-           # named is running
-           if (Service->Status("named") == 0) {
-               y2milestone("Reloading service 'named'");
-               $success = Service->Reload("named")
-           } else {
-               y2milestone("Restarting service 'named'");
-               $success = Service->Restart("named")
-           }
-       }
-       Service->Enable ("named");
-       if (! $success)
-       {
-           # Cannot start service 'named', because of error that follows 
Error:.  Do not translate named.
-           Report->Error (__("Error occurred while starting service 
named.\n\n"));
-           $ok = 0;
-           # There's no 'named' running -> prevent from blocking DNS queries
-           $self->SetLocalForwarder("resolver") if GetLocalForwarder() eq 
"bind";
-           y2warning("Local forwarder set to: ".GetLocalForwarder());
-       }
-    }
-    # named has to be stopped
-    else
+
+    if (Mode->auto() || Mode->config())
     {
-       if (! $write_only)
-       {
-           y2milestone("Stopping service 'named'");
-           Service->Stop("named");
-           # There's no 'named' running. Reset dns forwarder again
-           $self->SetLocalForwarder("resolver") if GetLocalForwarder() eq 
"bind";
-           y2warning("Local forwarder set to: ".GetLocalForwarder());
-       }
-       Service->Disable ("named");
+        # named has to be started
+        if ($start_service)
+        {
+        my $success = 1;
+        if (! $write_only)
+        {
+            # named is running
+            if (Service->Status("named") == 0) {
+            y2milestone("Reloading service 'named'");
+            $success = Service->Reload("named")
+            } else {
+            y2milestone("Restarting service 'named'");
+            $success = Service->Restart("named")
+            }
+        }
+        Service->Enable ("named");
+        if (! $success)
+        {
+            # Cannot start service 'named', because of error that follows 
Error:.  Do not translate named.
+            Report->Error (__("Error occurred while starting service 
named.\n\n"));
+            $ok = 0;
+            # There's no 'named' running -> prevent from blocking DNS queries
+            $self->SetLocalForwarder("resolver") if GetLocalForwarder() eq 
"bind";
+            y2warning("Local forwarder set to: ".GetLocalForwarder());
+        }
+        }
+        # named has to be stopped
+        else
+        {
+        if (! $write_only)
+        {
+            y2milestone("Stopping service 'named'");
+            Service->Stop("named");
+            # There's no 'named' running. Reset dns forwarder again
+            $self->SetLocalForwarder("resolver") if GetLocalForwarder() eq 
"bind";
+            y2warning("Local forwarder set to: ".GetLocalForwarder());
+        }
+        Service->Disable ("named");
+        }
     }
 
     # First run finished
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-dns-server-4.0.4/test/main_test.rb 
new/yast2-dns-server-4.1.0/test/main_test.rb
--- old/yast2-dns-server-4.0.4/test/main_test.rb        2018-07-26 
11:46:52.000000000 +0200
+++ new/yast2-dns-server-4.1.0/test/main_test.rb        2018-08-10 
16:21:56.000000000 +0200
@@ -1,20 +1,20 @@
 #! /usr/bin/env rspec
 
 require_relative "test_helper"
-require "yast"
-require "yast/rspec"
+
+require "yast2/system_service"
+require "dns-server/service_widget_helpers"
+
+Yast.import "DnsServerUI"
 
 describe "DnsServerDialogMainInclude" do
   class CurrentDialogMain
     include Yast::I18n
     include Yast::UIShortcuts
+    include Y2DnsServer::ServiceWidgetHelpers
 
-    attr_accessor :status_widget
-    attr_accessor :service
     def initialize
       Yast.include self, "dns-server/dialog-main.rb"
-      @status_widget = "status_widget"
-      @service = "named.service"
     end
   end
 
@@ -23,75 +23,56 @@
   end
 
   describe "#WriteDialog" do
-    let(:m) { CurrentDialogMain.new }
-    let(:written) { false }
-    let(:running) { true }
+    subject(:main_dialog) { CurrentDialogMain.new }
 
     before do
-      allow(Yast::DnsServer).to receive(:Write).and_return written
-      allow(m.service).to receive(:running?).and_return running
+      allow(Yast::DnsServer).to 
receive(:Write).and_return(dns_configuration_written)
+      allow(Yast2::SystemService).to receive(:find).and_return(service)
     end
 
-    it "writes the DNS configuration" do
-      expect(Yast::DnsServer).to receive(:Write).and_return written
-      m.WriteDialog
-    end
+    let(:service) { instance_double(Yast2::SystemService, save: true) }
+    let(:dns_configuration_written) { true }
 
-    context "when the configuration is written" do
-      let(:written) { true }
-
-      context "and the named service is running" do
-        context "and the config is marked to be reloaded" do
-          it "reloads the service" do
-            expect(m.status_widget).to receive(:reload_flag?).and_return true
-            expect(m.service).to receive(:reload)
-            expect(m.WriteDialog ).to eq(:next)
-          end
-        end
+    context "when DNS configuration is written" do
+      it "saves the system service" do
+        expect(service).to receive(:save)
 
-        context "and the config is not marked to be reloaded" do
-          it "does not restart nor reload the service" do
-            expect(m.status_widget).to receive(:reload_flag?).and_return false
-            expect(m.service).to_not receive(:reload)
-            expect(m.service).to_not receive(:restart)
-            expect(m.WriteDialog ).to eq(:next)
-          end
-        end
+        main_dialog.WriteDialog
       end
 
-      context "and the named service is not running" do
-        let(:running) { false}
-
-        before do
-          allow(m.status_widget).to receive(:reload_flag?).and_return true
-        end
-
-        it "does not restart nor reload the service" do
-          expect(m.service).to_not receive(:restart)
-          expect(m.service).to_not receive(:reload)
-          expect(m.WriteDialog ).to eq(:next)
-        end
+      it "returns :next" do
+        expect(main_dialog.WriteDialog).to eq(:next)
       end
     end
 
     context "when the configuration is not written" do
-      let(:written) { false }
+      before do
+        allow(Yast2::Popup).to receive(:show).and_return(change_settings)
+      end
+
+      let(:change_settings) { :yes }
+      let(:dns_configuration_written) { false }
 
       it "aks for changing the current settings" do
-        expect(Yast::Popup).to receive(:YesNo)
-        m.WriteDialog
+        expect(Yast2::Popup).to receive(:show)
+          .with(instance_of(String), hash_including(buttons: :yes_no))
+
+        main_dialog.WriteDialog
       end
 
-      it "returns :back if decided to change the current settings" do
-        expect(Yast::Popup).to receive(:YesNo).and_return true
-        expect(m.WriteDialog).to eq(:back)
+      context "and user decides to change the current setting" do
+        it "returns :back" do
+          expect(main_dialog.WriteDialog).to eq(:back)
+        end
       end
 
-      it "returns :abort if canceled" do
-        expect(Yast::Popup).to receive(:YesNo).and_return false
-        expect(m.WriteDialog).to eq(:abort)
+      context "and user decides to cancel" do
+        let(:change_settings) { :no }
+
+        it "returns :abort" do
+          expect(subject.WriteDialog).to eq(:abort)
+        end
       end
     end
   end
-
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-dns-server-4.0.4/test/service_widget_helpers_test.rb 
new/yast2-dns-server-4.1.0/test/service_widget_helpers_test.rb
--- old/yast2-dns-server-4.0.4/test/service_widget_helpers_test.rb      
1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-dns-server-4.1.0/test/service_widget_helpers_test.rb      
2018-08-10 16:21:56.000000000 +0200
@@ -0,0 +1,48 @@
+#! /usr/bin/env rspec
+
+require_relative "test_helper"
+require "dns-server/service_widget_helpers"
+
+describe Y2DnsServer::ServiceWidgetHelpers do
+  class Tester
+    include Y2DnsServer::ServiceWidgetHelpers
+  end
+
+  subject { Tester.new }
+
+  before do
+    allow(Yast2::SystemService).to 
receive(:find).with("named").and_return(service)
+  end
+
+  describe "#service" do
+    context "when service is available" do
+      let(:service) { double("named") }
+
+      it "returns a service" do
+        expect(subject.service).to be(service)
+      end
+    end
+
+    context "when service is NOT available" do
+      let(:service) { nil }
+
+      it "returns nil" do
+        expect(subject.service).to be_nil
+      end
+    end
+  end
+
+  describe "#service_widget" do
+    let(:service) { double("named") }
+
+    it "creates a service widget for \"named\" service" do
+      expect(CWM::ServiceWidget).to receive(:new).with(service)
+
+      subject.service_widget
+    end
+
+    it "returns a CWM::ServiceWidget" do
+      expect(subject.service_widget).to be_a(CWM::ServiceWidget)
+    end
+  end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-dns-server-4.0.4/test/test_helper.rb 
new/yast2-dns-server-4.1.0/test/test_helper.rb
--- old/yast2-dns-server-4.0.4/test/test_helper.rb      2018-07-26 
11:46:52.000000000 +0200
+++ new/yast2-dns-server-4.1.0/test/test_helper.rb      2018-08-10 
16:21:56.000000000 +0200
@@ -21,6 +21,7 @@
 ENV["Y2DIR"] = SRC_PATH
 
 require "yast"
+require "yast/rspec"
 
 if ENV["COVERAGE"]
   require "simplecov"


Reply via email to