Fixed issue #1151 - Problem with cyrillic letters in name of overviews.
This commit is contained in:
parent
e028e8c1a3
commit
7cb212832e
3 changed files with 237 additions and 9 deletions
|
@ -28,24 +28,37 @@ class Overview < ApplicationModel
|
||||||
end
|
end
|
||||||
|
|
||||||
def fill_link_on_create
|
def fill_link_on_create
|
||||||
return true if !link.empty?
|
return true if link.present?
|
||||||
self.link = link_name(name)
|
self.link = link_name(name)
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
def fill_link_on_update
|
def fill_link_on_update
|
||||||
return true if link.empty?
|
|
||||||
return true if !changes['name']
|
return true if !changes['name']
|
||||||
|
return true if changes['link']
|
||||||
self.link = link_name(name)
|
self.link = link_name(name)
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
def link_name(name)
|
def link_name(name)
|
||||||
link = name.downcase
|
local_link = name.downcase
|
||||||
link.gsub!(/\s/, '_')
|
local_link = local_link.parameterize('_')
|
||||||
link.gsub!(/[^0-9a-z]/i, '_')
|
local_link.gsub!(/\s/, '_')
|
||||||
link.gsub!(/_+/, '_')
|
local_link.gsub!(/_+/, '_')
|
||||||
link
|
local_link = URI.escape(local_link)
|
||||||
|
if local_link.blank?
|
||||||
|
local_link = id || rand(999)
|
||||||
|
end
|
||||||
|
check = true
|
||||||
|
while check
|
||||||
|
exists = Overview.find_by(link: local_link)
|
||||||
|
if exists && exists.id != id
|
||||||
|
local_link = "#{local_link}_#{rand(999)}"
|
||||||
|
else
|
||||||
|
check = false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local_link
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
215
test/unit/overview_test.rb
Normal file
215
test/unit/overview_test.rb
Normal file
|
@ -0,0 +1,215 @@
|
||||||
|
# encoding: utf-8
|
||||||
|
require 'test_helper'
|
||||||
|
|
||||||
|
class OverviewTest < ActiveSupport::TestCase
|
||||||
|
|
||||||
|
test 'overview link' do
|
||||||
|
UserInfo.current_user_id = 1
|
||||||
|
overview = Overview.create!(
|
||||||
|
name: 'Not Shown Admin 2',
|
||||||
|
condition: {
|
||||||
|
'ticket.state_id' => {
|
||||||
|
operator: 'is',
|
||||||
|
value: [1, 2, 3],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
order: {
|
||||||
|
by: 'created_at',
|
||||||
|
direction: 'DESC',
|
||||||
|
},
|
||||||
|
view: {
|
||||||
|
d: %w(title customer state created_at),
|
||||||
|
s: %w(number title customer state created_at),
|
||||||
|
m: %w(number title customer state created_at),
|
||||||
|
view_mode_default: 's',
|
||||||
|
},
|
||||||
|
)
|
||||||
|
assert_equal(overview.link, 'not_shown_admin_2')
|
||||||
|
overview.destroy!
|
||||||
|
|
||||||
|
overview = Overview.create!(
|
||||||
|
name: 'My assigned Tickets',
|
||||||
|
condition: {
|
||||||
|
'ticket.state_id' => {
|
||||||
|
operator: 'is',
|
||||||
|
value: [1, 2, 3],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
order: {
|
||||||
|
by: 'created_at',
|
||||||
|
direction: 'DESC',
|
||||||
|
},
|
||||||
|
view: {
|
||||||
|
d: %w(title customer state created_at),
|
||||||
|
s: %w(number title customer state created_at),
|
||||||
|
m: %w(number title customer state created_at),
|
||||||
|
view_mode_default: 's',
|
||||||
|
},
|
||||||
|
)
|
||||||
|
assert_equal(overview.link, 'my_assigned_tickets')
|
||||||
|
overview.destroy!
|
||||||
|
|
||||||
|
overview = Overview.create!(
|
||||||
|
name: 'Übersicht',
|
||||||
|
condition: {
|
||||||
|
'ticket.state_id' => {
|
||||||
|
operator: 'is',
|
||||||
|
value: [1, 2, 3],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
order: {
|
||||||
|
by: 'created_at',
|
||||||
|
direction: 'DESC',
|
||||||
|
},
|
||||||
|
view: {
|
||||||
|
d: %w(title customer state created_at),
|
||||||
|
s: %w(number title customer state created_at),
|
||||||
|
m: %w(number title customer state created_at),
|
||||||
|
view_mode_default: 's',
|
||||||
|
},
|
||||||
|
)
|
||||||
|
assert_equal(overview.link, 'ubersicht')
|
||||||
|
overview.destroy!
|
||||||
|
|
||||||
|
overview = Overview.create!(
|
||||||
|
name: " Übersicht \n",
|
||||||
|
condition: {
|
||||||
|
'ticket.state_id' => {
|
||||||
|
operator: 'is',
|
||||||
|
value: [1, 2, 3],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
order: {
|
||||||
|
by: 'created_at',
|
||||||
|
direction: 'DESC',
|
||||||
|
},
|
||||||
|
view: {
|
||||||
|
d: %w(title customer state created_at),
|
||||||
|
s: %w(number title customer state created_at),
|
||||||
|
m: %w(number title customer state created_at),
|
||||||
|
view_mode_default: 's',
|
||||||
|
},
|
||||||
|
)
|
||||||
|
assert_equal(overview.link, 'ubersicht')
|
||||||
|
overview.destroy!
|
||||||
|
|
||||||
|
overview1 = Overview.create!(
|
||||||
|
name: 'Meine Übersicht',
|
||||||
|
condition: {
|
||||||
|
'ticket.state_id' => {
|
||||||
|
operator: 'is',
|
||||||
|
value: [1, 2, 3],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
order: {
|
||||||
|
by: 'created_at',
|
||||||
|
direction: 'DESC',
|
||||||
|
},
|
||||||
|
view: {
|
||||||
|
d: %w(title customer state created_at),
|
||||||
|
s: %w(number title customer state created_at),
|
||||||
|
m: %w(number title customer state created_at),
|
||||||
|
view_mode_default: 's',
|
||||||
|
},
|
||||||
|
)
|
||||||
|
assert_equal(overview1.link, 'meine_ubersicht')
|
||||||
|
overview2 = Overview.create!(
|
||||||
|
name: 'Meine Übersicht',
|
||||||
|
condition: {
|
||||||
|
'ticket.state_id' => {
|
||||||
|
operator: 'is',
|
||||||
|
value: [1, 2, 3],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
order: {
|
||||||
|
by: 'created_at',
|
||||||
|
direction: 'DESC',
|
||||||
|
},
|
||||||
|
view: {
|
||||||
|
d: %w(title customer state created_at),
|
||||||
|
s: %w(number title customer state created_at),
|
||||||
|
m: %w(number title customer state created_at),
|
||||||
|
view_mode_default: 's',
|
||||||
|
},
|
||||||
|
)
|
||||||
|
assert(overview2.link.start_with?('meine_ubersicht'))
|
||||||
|
assert_not_equal(overview1.link, overview2.link)
|
||||||
|
overview1.destroy!
|
||||||
|
overview2.destroy!
|
||||||
|
|
||||||
|
overview = Overview.create!(
|
||||||
|
name: 'Д дФ ф',
|
||||||
|
condition: {
|
||||||
|
'ticket.state_id' => {
|
||||||
|
operator: 'is',
|
||||||
|
value: [1, 2, 3],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
order: {
|
||||||
|
by: 'created_at',
|
||||||
|
direction: 'DESC',
|
||||||
|
},
|
||||||
|
view: {
|
||||||
|
d: %w(title customer state created_at),
|
||||||
|
s: %w(number title customer state created_at),
|
||||||
|
m: %w(number title customer state created_at),
|
||||||
|
view_mode_default: 's',
|
||||||
|
},
|
||||||
|
)
|
||||||
|
assert_match(/^\d\d\d$/, overview.link)
|
||||||
|
overview.destroy!
|
||||||
|
|
||||||
|
overview = Overview.create!(
|
||||||
|
name: ' Д дФ ф abc ',
|
||||||
|
condition: {
|
||||||
|
'ticket.state_id' => {
|
||||||
|
operator: 'is',
|
||||||
|
value: [1, 2, 3],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
order: {
|
||||||
|
by: 'created_at',
|
||||||
|
direction: 'DESC',
|
||||||
|
},
|
||||||
|
view: {
|
||||||
|
d: %w(title customer state created_at),
|
||||||
|
s: %w(number title customer state created_at),
|
||||||
|
m: %w(number title customer state created_at),
|
||||||
|
view_mode_default: 's',
|
||||||
|
},
|
||||||
|
)
|
||||||
|
assert_equal(overview.link, 'abc')
|
||||||
|
overview.destroy!
|
||||||
|
|
||||||
|
overview = Overview.create!(
|
||||||
|
name: 'Übersicht',
|
||||||
|
link: 'my_overview',
|
||||||
|
condition: {
|
||||||
|
'ticket.state_id' => {
|
||||||
|
operator: 'is',
|
||||||
|
value: [1, 2, 3],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
order: {
|
||||||
|
by: 'created_at',
|
||||||
|
direction: 'DESC',
|
||||||
|
},
|
||||||
|
view: {
|
||||||
|
d: %w(title customer state created_at),
|
||||||
|
s: %w(number title customer state created_at),
|
||||||
|
m: %w(number title customer state created_at),
|
||||||
|
view_mode_default: 's',
|
||||||
|
},
|
||||||
|
)
|
||||||
|
assert_equal(overview.link, 'my_overview')
|
||||||
|
|
||||||
|
overview.name = 'Übersicht2'
|
||||||
|
overview.link = 'my_overview2'
|
||||||
|
overview.save!
|
||||||
|
|
||||||
|
assert_equal(overview.link, 'my_overview2')
|
||||||
|
|
||||||
|
overview.destroy!
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
|
@ -302,7 +302,7 @@ class TicketOverviewTest < ActiveSupport::TestCase
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
test 'bbb overiview index' do
|
test 'bbb overview index' do
|
||||||
|
|
||||||
result = Ticket::Overviews.all(
|
result = Ticket::Overviews.all(
|
||||||
current_user: @agent1,
|
current_user: @agent1,
|
||||||
|
@ -343,7 +343,7 @@ class TicketOverviewTest < ActiveSupport::TestCase
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
test 'ccc overiview content' do
|
test 'ccc overview content' do
|
||||||
|
|
||||||
Ticket.destroy_all
|
Ticket.destroy_all
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue