diff --git a/src/lib/y2network/widgets/interface_name.rb b/src/lib/y2network/widgets/interface_name.rb index a3eaa7671..007cace84 100644 --- a/src/lib/y2network/widgets/interface_name.rb +++ b/src/lib/y2network/widgets/interface_name.rb @@ -30,6 +30,7 @@ def initialize(settings) textdomain "network" @settings = settings + @old_name = @settings.name end def label @@ -57,7 +58,7 @@ def items end def validate - if @settings.name_exists?(value) + if @old_name != value && @settings.name_exists?(value) Yast::Popup.Error( format(_("Configuration name %s already exists.\nChoose a different one."), value) ) diff --git a/test/y2network/widgets/interface_name_test.rb b/test/y2network/widgets/interface_name_test.rb index 43ac20244..454e3b950 100644 --- a/test/y2network/widgets/interface_name_test.rb +++ b/test/y2network/widgets/interface_name_test.rb @@ -52,12 +52,26 @@ expect(subject.validate).to be false end - it "fails for already used names" do - allow(subject).to receive(:value).and_return valid_name - allow(Yast::NetworkInterfaces).to receive(:List).and_return [valid_name] + context "when the name is already used" do + before do + allow(subject).to receive(:value).and_return valid_name + allow(Yast::NetworkInterfaces).to receive(:List).and_return [valid_name] + end - expect(Yast::UI).to receive(:SetFocus) - expect(subject.validate).to be false + context "if the name was changed" do + let(:valid_name) { "eth1" } + + it "fails" do + expect(Yast::UI).to receive(:SetFocus) + expect(subject.validate).to be false + end + end + + context "if the name was not changed" do + it "passes" do + expect(subject.validate).to eq(true) + end + end end end