diff --git a/app/controllers/dmsf_links_controller.rb b/app/controllers/dmsf_links_controller.rb index e591e6f6..4c60d77c 100644 --- a/app/controllers/dmsf_links_controller.rb +++ b/app/controllers/dmsf_links_controller.rb @@ -121,9 +121,9 @@ class DmsfLinksController < ApplicationController end else # Link to - @dmsf_link.dmsf_folder_id = if DmsfLinksHelper.number?(params[:dmsf_link][:target_folder_id]) - params[:dmsf_link][:target_folder_id].to_i - end + if DmsfLinksHelper.number?(params[:dmsf_link][:target_folder_id]) + @dmsf_link.dmsf_folder_id = params[:dmsf_link][:target_folder_id].to_i + end if params[:dmsf_link][:target_project_id].present? @dmsf_link.project_id = params[:dmsf_link][:target_project_id] else diff --git a/app/helpers/dmsf_links_helper.rb b/app/helpers/dmsf_links_helper.rb index a149feee..67ba38d0 100644 --- a/app/helpers/dmsf_links_helper.rb +++ b/app/helpers/dmsf_links_helper.rb @@ -32,12 +32,12 @@ module DmsfLinksHelper # An integer test def self.number?(str) - str.to_s.match(/\A[+-]?\d+?(\.\d+)?\Z/).nil? + str&.match?(/\A\d+\Z/) end def files_for_select(project_id, folder_id) files = [] - if folder_id && DmsfLinksHelper.number?(folder_id) + if DmsfLinksHelper.number?(folder_id) folder = DmsfFolder.find_by(id: folder_id) files = folder.dmsf_files.visible.to_a if folder elsif project_id diff --git a/test/helpers/dmsf_links_helper_test.rb b/test/helpers/dmsf_links_helper_test.rb new file mode 100644 index 00000000..78ab3195 --- /dev/null +++ b/test/helpers/dmsf_links_helper_test.rb @@ -0,0 +1,34 @@ +# frozen_string_literal: true +# +# Redmine plugin for Document Management System "Features" +# +# Copyright © 2011-23 Karel Pičman +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# 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, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +require File.expand_path('../../test_helper', __FILE__) + +# Links helper +class DmsfLinksHelperTest < RedmineDmsf::Test::HelperTest + include DmsfLinksHelper + + def test_number + assert DmsfLinksHelper.number?('123') + assert_not DmsfLinksHelper.number?('-123') + assert_not DmsfLinksHelper.number?('12.3') + assert_not DmsfLinksHelper.number?('123a') + assert_not DmsfLinksHelper.number?(nil) + end +end