Fixed issue #1513 - TimeAccounting ticket condition prevents submit of Zoom.

This commit is contained in:
Martin Edenhofer 2017-11-30 09:29:18 +01:00
parent 7599e8e17a
commit d3062592ea
2 changed files with 203 additions and 37 deletions

View file

@ -200,6 +200,26 @@ class App.Ticket extends App.Model
result = true if objectValue.toString().match(contains_regex) result = true if objectValue.toString().match(contains_regex)
else if condition.operator == 'contains not' else if condition.operator == 'contains not'
result = true if !objectValue.toString().match(contains_regex) result = true if !objectValue.toString().match(contains_regex)
else if condition.operator == 'contains all'
result = true
for loopConditionValue in conditionValue
if !_.contains(objectValue, loopConditionValue)
result = false
else if condition.operator == 'contains one'
result = false
for loopConditionValue in conditionValue
if _.contains(objectValue, loopConditionValue)
result = true
else if condition.operator == 'contains all not'
result = true
for loopObjectValue in objectValue
if _.contains(conditionValue, loopObjectValue)
result = false
else if condition.operator == 'contains one not'
result = false
for loopObjectValue in objectValue
if !_.contains(conditionValue, loopObjectValue)
result = true
else if condition.operator == 'is' else if condition.operator == 'is'
result = true if objectValue.toString().trim().toLowerCase() is loopConditionValue.toString().trim().toLowerCase() result = true if objectValue.toString().trim().toLowerCase() is loopConditionValue.toString().trim().toLowerCase()
else if condition.operator == 'is not' else if condition.operator == 'is not'

View file

@ -130,6 +130,7 @@ window.onload = function() {
"vip": false, "vip": false,
"id": 434 "id": 434
}, },
"tags": ["tag a", "tag b"],
"escalation_at": "2017-02-09T09:16:56.192Z", "escalation_at": "2017-02-09T09:16:56.192Z",
"last_contact_agent_at": "2017-02-09T09:16:56.192Z", "last_contact_agent_at": "2017-02-09T09:16:56.192Z",
"last_contact_agent_at": "2017-02-09T09:16:56.192Z", "last_contact_agent_at": "2017-02-09T09:16:56.192Z",
@ -191,7 +192,7 @@ window.onload = function() {
}, },
} }
}; };
result = App.Ticket.selector(ticket, setting['condition'] ); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, true, result); equal(result, true, result);
setting = { setting = {
@ -202,7 +203,7 @@ window.onload = function() {
}, },
} }
}; };
result = App.Ticket.selector(ticket, setting['condition'] ); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, false, result); equal(result, false, result);
}; };
@ -215,7 +216,7 @@ window.onload = function() {
}, },
} }
}; };
result = App.Ticket.selector(ticket, setting['condition'] ); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, true, result); equal(result, true, result);
setting = { setting = {
@ -226,7 +227,7 @@ window.onload = function() {
}, },
} }
}; };
result = App.Ticket.selector(ticket, setting['condition'] ); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, false, result); equal(result, false, result);
}; };
@ -243,7 +244,7 @@ window.onload = function() {
}, },
} }
}; };
result = App.Ticket.selector(ticket, setting['condition'] ); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, true, result); equal(result, true, result);
setting = { setting = {
@ -256,7 +257,7 @@ window.onload = function() {
}, },
} }
}; };
result = App.Ticket.selector(ticket, setting['condition'] ); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, false, result); equal(result, false, result);
setting = { setting = {
@ -270,7 +271,7 @@ window.onload = function() {
} }
}; };
result = App.Ticket.selector(ticket, setting['condition'] ); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, true, result); equal(result, true, result);
setting = { setting = {
@ -283,7 +284,7 @@ window.onload = function() {
} }
} }
}; };
result = App.Ticket.selector(ticket, setting['condition'] ); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, false, result); equal(result, false, result);
setting = { setting = {
@ -296,7 +297,7 @@ window.onload = function() {
} }
} }
}; };
result = App.Ticket.selector(ticket, setting['condition'] ); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, false, result); equal(result, false, result);
setting = { setting = {
@ -307,7 +308,7 @@ window.onload = function() {
} }
} }
}; };
result = App.Ticket.selector(ticket, setting['condition'] ); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, false, result); equal(result, false, result);
setting = { setting = {
@ -318,7 +319,7 @@ window.onload = function() {
} }
} }
}; };
result = App.Ticket.selector(ticket, setting['condition'] ); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, true, result); equal(result, true, result);
}; };
@ -335,7 +336,7 @@ window.onload = function() {
}, },
} }
}; };
result = App.Ticket.selector(ticket, setting['condition'] ); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, true, result); equal(result, true, result);
setting = { setting = {
@ -348,7 +349,7 @@ window.onload = function() {
}, },
} }
}; };
result = App.Ticket.selector(ticket, setting['condition'] ); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, false, result); equal(result, false, result);
setting = { setting = {
@ -362,7 +363,7 @@ window.onload = function() {
} }
}; };
result = App.Ticket.selector(ticket, setting['condition'] ); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, true, result); equal(result, true, result);
setting = { setting = {
@ -375,7 +376,7 @@ window.onload = function() {
} }
} }
}; };
result = App.Ticket.selector(ticket, setting['condition'] ); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, false, result); equal(result, false, result);
setting = { setting = {
@ -388,7 +389,7 @@ window.onload = function() {
} }
} }
}; };
result = App.Ticket.selector(ticket, setting['condition'] ); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, false, result); equal(result, false, result);
setting = { setting = {
@ -399,7 +400,7 @@ window.onload = function() {
} }
} }
}; };
result = App.Ticket.selector(ticket, setting['condition'] ); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, false, result); equal(result, false, result);
setting = { setting = {
@ -410,10 +411,148 @@ window.onload = function() {
} }
} }
}; };
result = App.Ticket.selector(ticket, setting['condition'] ); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, true, result); equal(result, true, result);
}; };
var testPreConditionTags = function (key, ticket) {
App.Session.set(sessionData);
setting = {
"condition": {
"ticket.tags": {
"operator": "contains one",
"value": "tag a",
},
}
};
result = App.Ticket.selector(ticket, setting['condition']);
equal(result, true, result);
setting = {
"condition": {
"ticket.tags": {
"operator": "contains one",
"value": "tag aa",
},
}
};
result = App.Ticket.selector(ticket, setting['condition']);
equal(result, false, result);
setting = {
"condition": {
"ticket.tags": {
"operator": "contains all",
"value": "tag a",
},
}
};
result = App.Ticket.selector(ticket, setting['condition']);
equal(result, true, result);
setting = {
"condition": {
"ticket.tags": {
"operator": "contains all",
"value": ["tag a", "not existing"],
},
}
};
result = App.Ticket.selector(ticket, setting['condition']);
equal(result, false, result);
setting = {
"condition": {
"ticket.tags": {
"operator": "contains all not",
"value": "tag a",
},
}
};
result = App.Ticket.selector(ticket, setting['condition']);
equal(result, false, result);
setting = {
"condition": {
"ticket.tags": {
"operator": "contains all not",
"value": ["tag a", "tag b"],
},
}
};
result = App.Ticket.selector(ticket, setting['condition']);
equal(result, false, result);
setting = {
"condition": {
"ticket.tags": {
"operator": "contains all not",
"value": ["tag a", "tag b", "tag c"],
},
}
};
result = App.Ticket.selector(ticket, setting['condition']);
equal(result, false, result);
setting = {
"condition": {
"ticket.tags": {
"operator": "contains all not",
"value": ["tag c", "tag d"],
},
}
};
result = App.Ticket.selector(ticket, setting['condition']);
equal(result, true, result);
setting = {
"condition": {
"ticket.tags": {
"operator": "contains one not",
"value": "tag a",
},
}
};
result = App.Ticket.selector(ticket, setting['condition']);
equal(result, true, result);
setting = {
"condition": {
"ticket.tags": {
"operator": "contains one not",
"value": ["tag a", "tag b"],
},
}
};
result = App.Ticket.selector(ticket, setting['condition']);
equal(result, false, result);
setting = {
"condition": {
"ticket.tags": {
"operator": "contains one not",
"value": ["tag a", "tag c"],
},
}
};
result = App.Ticket.selector(ticket, setting['condition']);
equal(result, true, result);
setting = {
"condition": {
"ticket.tags": {
"operator": "contains one not",
"value": ["tag c"],
},
}
};
result = App.Ticket.selector(ticket, setting['condition']);
equal(result, true, result);
};
var testTime = function (key, value, ticket) { var testTime = function (key, value, ticket) {
valueDate = new Date(value); valueDate = new Date(value);
compareDate = new Date( valueDate.setHours( valueDate.getHours() - 1 ) ).toISOString(); compareDate = new Date( valueDate.setHours( valueDate.getHours() - 1 ) ).toISOString();
@ -425,7 +564,7 @@ window.onload = function() {
}, },
} }
}; };
result = App.Ticket.selector(ticket, setting['condition'] ); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, true, result); equal(result, true, result);
valueDate = new Date(value); valueDate = new Date(value);
@ -438,7 +577,7 @@ window.onload = function() {
}, },
} }
}; };
result = App.Ticket.selector(ticket, setting['condition'] ); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, false, result); equal(result, false, result);
valueDate = new Date(value); valueDate = new Date(value);
@ -451,7 +590,7 @@ window.onload = function() {
}, },
} }
}; };
result = App.Ticket.selector(ticket, setting['condition'] ); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, false, result); equal(result, false, result);
valueDate = new Date(value); valueDate = new Date(value);
@ -464,7 +603,7 @@ window.onload = function() {
}, },
} }
}; };
result = App.Ticket.selector(ticket, setting['condition'] ); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, true, result); equal(result, true, result);
valueDate = new Date(value); valueDate = new Date(value);
@ -478,7 +617,7 @@ window.onload = function() {
}, },
} }
}; };
result = App.Ticket.selector(ticket, setting['condition'] ); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, true, result); equal(result, true, result);
}; };
@ -492,7 +631,7 @@ window.onload = function() {
}, },
} }
}; };
result = App.Ticket.selector(ticket, setting['condition'] ); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, expectedResult, result); equal(result, expectedResult, result);
}; };
@ -506,7 +645,7 @@ window.onload = function() {
}, },
} }
}; };
result = App.Ticket.selector(ticket, setting['condition'] ); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, expectedResult, result); equal(result, expectedResult, result);
}; };
@ -520,7 +659,7 @@ window.onload = function() {
}, },
} }
}; };
result = App.Ticket.selector(ticket, setting['condition'] ); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, expectedResult, result); equal(result, expectedResult, result);
}; };
@ -534,7 +673,7 @@ window.onload = function() {
}, },
} }
}; };
result = App.Ticket.selector(ticket, setting['condition'] ); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, expectedResult, result); equal(result, expectedResult, result);
}; };
@ -612,7 +751,7 @@ window.onload = function() {
testTimeBeforeRelative('ticket.pending_time', 1, 'hour', false, ticket); testTimeBeforeRelative('ticket.pending_time', 1, 'hour', false, ticket);
compareDate = new Date(); compareDate = new Date();
compareDate.setTime( compareDate.getTime() - 60 * 60 * 2 * 1000 ); compareDate.setTime( compareDate.getTime() - 60 * 60 * 2 * 1000);
ticket.pending_time = compareDate.toISOString(); ticket.pending_time = compareDate.toISOString();
testTimeBeforeRelative('ticket.pending_time', 1, 'hour', true, ticket); testTimeBeforeRelative('ticket.pending_time', 1, 'hour', true, ticket);
@ -621,7 +760,7 @@ window.onload = function() {
testTimeBeforeRelative('ticket.pending_time', 1, 'day', false, ticket); testTimeBeforeRelative('ticket.pending_time', 1, 'day', false, ticket);
compareDate = new Date(); compareDate = new Date();
compareDate.setTime( compareDate.getTime() - 60 * 60 * 48 * 1000 ); compareDate.setTime( compareDate.getTime() - 60 * 60 * 48 * 1000);
ticket.pending_time = compareDate.toISOString(); ticket.pending_time = compareDate.toISOString();
testTimeBeforeRelative('ticket.pending_time', 1, 'day', true, ticket); testTimeBeforeRelative('ticket.pending_time', 1, 'day', true, ticket);
@ -630,7 +769,7 @@ window.onload = function() {
testTimeBeforeRelative('ticket.pending_time', 1, 'year', false, ticket); testTimeBeforeRelative('ticket.pending_time', 1, 'year', false, ticket);
compareDate = new Date(); compareDate = new Date();
compareDate.setTime( compareDate.getTime() - 60 * 60 * 365 * 2 * 1000 ); compareDate.setTime( compareDate.getTime() - 60 * 60 * 365 * 2 * 1000);
ticket.pending_time = compareDate.toISOString(); ticket.pending_time = compareDate.toISOString();
testTimeBeforeRelative('ticket.pending_time', 1, 'year', true, ticket); testTimeBeforeRelative('ticket.pending_time', 1, 'year', true, ticket);
@ -643,7 +782,7 @@ window.onload = function() {
testTimeAfterRelative('ticket.pending_time', 1, 'hour', false, ticket); testTimeAfterRelative('ticket.pending_time', 1, 'hour', false, ticket);
compareDate = new Date(); compareDate = new Date();
compareDate.setTime( compareDate.getTime() + 60 * 60 * 2 * 1000 ); compareDate.setTime( compareDate.getTime() + 60 * 60 * 2 * 1000);
ticket.pending_time = compareDate.toISOString(); ticket.pending_time = compareDate.toISOString();
testTimeAfterRelative('ticket.pending_time', 1, 'hour', true, ticket); testTimeAfterRelative('ticket.pending_time', 1, 'hour', true, ticket);
@ -652,7 +791,7 @@ window.onload = function() {
testTimeAfterRelative('ticket.pending_time', 1, 'day', false, ticket); testTimeAfterRelative('ticket.pending_time', 1, 'day', false, ticket);
compareDate = new Date(); compareDate = new Date();
compareDate.setTime( compareDate.getTime() + 60 * 60 * 48 * 1000 ); compareDate.setTime( compareDate.getTime() + 60 * 60 * 48 * 1000);
ticket.pending_time = compareDate.toISOString(); ticket.pending_time = compareDate.toISOString();
testTimeAfterRelative('ticket.pending_time', 1, 'day', true, ticket); testTimeAfterRelative('ticket.pending_time', 1, 'day', true, ticket);
@ -661,7 +800,7 @@ window.onload = function() {
testTimeAfterRelative('ticket.pending_time', 1, 'year', false, ticket); testTimeAfterRelative('ticket.pending_time', 1, 'year', false, ticket);
compareDate = new Date(); compareDate = new Date();
compareDate.setTime( compareDate.getTime() + 60 * 60 * 365 * 2 * 1000 ); compareDate.setTime( compareDate.getTime() + 60 * 60 * 365 * 2 * 1000);
ticket.pending_time = compareDate.toISOString(); ticket.pending_time = compareDate.toISOString();
testTimeAfterRelative('ticket.pending_time', 1, 'year', true, ticket); testTimeAfterRelative('ticket.pending_time', 1, 'year', true, ticket);
@ -672,12 +811,12 @@ window.onload = function() {
// hour // hour
compareDate = new Date(); compareDate = new Date();
compareDate.setTime( compareDate.getTime() - 60 * 60 * 0.5 * 1000 ); compareDate.setTime( compareDate.getTime() - 60 * 60 * 0.5 * 1000);
ticket.pending_time = compareDate.toISOString(); ticket.pending_time = compareDate.toISOString();
testTimeWithinLastRelative('ticket.pending_time', 1, 'hour', true, ticket); testTimeWithinLastRelative('ticket.pending_time', 1, 'hour', true, ticket);
compareDate = new Date(); compareDate = new Date();
compareDate.setTime( compareDate.getTime() - 60 * 60 * 2 * 1000 ); compareDate.setTime( compareDate.getTime() - 60 * 60 * 2 * 1000);
ticket.pending_time = compareDate.toISOString(); ticket.pending_time = compareDate.toISOString();
testTimeWithinLastRelative('ticket.pending_time', 1, 'hour', false, ticket); testTimeWithinLastRelative('ticket.pending_time', 1, 'hour', false, ticket);
@ -687,12 +826,12 @@ window.onload = function() {
// hour // hour
compareDate = new Date(); compareDate = new Date();
compareDate.setTime( compareDate.getTime() + 60 * 60 * 0.5 * 1000 ); compareDate.setTime( compareDate.getTime() + 60 * 60 * 0.5 * 1000);
ticket.pending_time = compareDate.toISOString(); ticket.pending_time = compareDate.toISOString();
testTimeWithinNextRelative('ticket.pending_time', 1, 'hour', true, ticket); testTimeWithinNextRelative('ticket.pending_time', 1, 'hour', true, ticket);
compareDate = new Date(); compareDate = new Date();
compareDate.setTime( compareDate.getTime() + 60 * 60 * 2 * 1000 ); compareDate.setTime( compareDate.getTime() + 60 * 60 * 2 * 1000);
ticket.pending_time = compareDate.toISOString(); ticket.pending_time = compareDate.toISOString();
testTimeWithinNextRelative('ticket.pending_time', 1, 'hour', false, ticket); testTimeWithinNextRelative('ticket.pending_time', 1, 'hour', false, ticket);
}); });
@ -778,6 +917,13 @@ window.onload = function() {
testPreConditionUser('ticket.updated_by_id', '6', ticket, sessionData); testPreConditionUser('ticket.updated_by_id', '6', ticket, sessionData);
}); });
test("ticket tags", function() {
ticket = new App.Ticket();
ticket.load(ticketData);
testPreConditionTags('ticket.tags', ticket);
});
test("article from", function() { test("article from", function() {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);