Fixes #3213 - Relative fields get copied on macro

This commit is contained in:
Mantas Masalskis 2020-12-01 13:35:32 +01:00 committed by Thorsten Eckel
parent a557a52c12
commit 03b56b8fc8
3 changed files with 55 additions and 5 deletions

View file

@ -333,7 +333,15 @@ class App.UiElement.ticket_perform_action
'relative' 'relative'
] ]
if _.include(relative_operators, meta.operator) upcoming_operator = meta.operator
if !_.include(config.operator, upcoming_operator)
if Array.isArray(config.operator)
upcoming_operator = config.operator[0]
else
upcoming_operator = null
if _.include(relative_operators, upcoming_operator)
config['name'] = "#{attribute.name}::#{groupAndAttribute}" config['name'] = "#{attribute.name}::#{groupAndAttribute}"
if attribute.value && attribute.value[groupAndAttribute] if attribute.value && attribute.value[groupAndAttribute]
config['value'] = _.clone(attribute.value[groupAndAttribute]) config['value'] = _.clone(attribute.value[groupAndAttribute])

View file

@ -1,5 +1,5 @@
// ticket_perform_action // ticket_perform_action
test( "ticket_perform_action check", function() { test( "ticket_perform_action check", function(assert) {
App.TicketPriority.refresh([ App.TicketPriority.refresh([
{ {
@ -251,7 +251,6 @@ test( "ticket_perform_action check", function() {
row.find('.js-datepicker').datepicker('setDate') row.find('.js-datepicker').datepicker('setDate')
row.find('.js-timepicker').val(date_parsed.getHours() + ':' + date_parsed.getMinutes()).trigger('blur') row.find('.js-timepicker').val(date_parsed.getHours() + ':' + date_parsed.getMinutes()).trigger('blur')
params = App.ControllerForm.params(el)
test_params = { test_params = {
ticket_perform_action1: { ticket_perform_action1: {
'ticket.state_id': { 'ticket.state_id': {
@ -288,7 +287,14 @@ test( "ticket_perform_action check", function() {
} }
} }
} }
deepEqual(params, test_params, 'form param check')
var done = assert.async()
setTimeout(function(){
params = App.ControllerForm.params(el)
deepEqual(params, test_params, 'form param check')
done()
}, 0);
// switch pending time to relative // switch pending time to relative
@ -504,3 +510,39 @@ test( "ticket_perform_action backwards check after PR#2862", function() {
deepEqual(params, test_params, 'form param check') deepEqual(params, test_params, 'form param check')
}); });
test( "ticket_perform_action orphan time fields", function() {
$('#forms').append('<hr><h1>ticket_perform_action orphan time fields</h1><form id="form4"></form>')
var el = $('#form4')
var defaults = {
ticket_perform_action4: {
'ticket.pending_time': {
operator: 'relative',
value: '1'
}
}
}
new App.ControllerForm({
el: el,
model: {
configure_attributes: [
{
name: 'ticket_perform_action4',
display: 'TicketPerformAction4',
tag: 'ticket_perform_action',
null: true,
},
]
},
params: defaults,
autofocus: true
})
// change to another attribute
el.find('select:first').val('ticket.tags').trigger('change')
equal(el.find('.js-valueRangeSelector').length, 0)
});

View file

@ -107,7 +107,7 @@ RSpec.describe 'QUnit', type: :system, authenticated_as: false, set_up: true, we
end end
it 'Ticket perform action' do it 'Ticket perform action' do
q_unit_tests('form_ticket_perform_action') async_q_unit_tests('form_ticket_perform_action')
end end
it 'Ticket macro' do it 'Ticket macro' do