forked from zammad/zammad
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathform_code_editor.js
More file actions
118 lines (106 loc) · 3.8 KB
/
form_code_editor.js
File metadata and controls
118 lines (106 loc) · 3.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
QUnit.test('form code editor', (assert) => {
var done = assert.async(1)
$('#forms').append('<hr><h1>form code editor</h1><form id="form1"></form>')
var el = $('#form1')
new App.ControllerForm({
el: el,
model: {
configure_attributes: [
{ name: 'code', display: 'Code', tag: 'code_editor', null: false, default: '[]' }
]
},
});
var params = App.ControllerForm.params(el)
var test_params = {
code: '[]'
}
assert.deepEqual(params, test_params, 'default param check')
var initDelay = 350
var updateDelay = 1000
setTimeout(() => {
var editor = el.find('.CodeMirror-code')
// Combine all test examples in the same promise chain due to asynchronous behavior.
new Promise((resolve) => {
syn.click(editor[0]).type('[delete][delete]')
setTimeout(() => { resolve() }, updateDelay)
})
.then(() => {
var params = App.ControllerForm.params(el)
var test_params = {
code: ''
}
assert.deepEqual(params, test_params, 'code editor supports empty value')
})
.then(() => new Promise((resolve) => {
syn.click(editor[0]).type('{}')
setTimeout(() => { resolve() }, updateDelay)
}))
.then(() => {
var params = App.ControllerForm.params(el)
var test_params = {
code: '{}'
}
assert.deepEqual(params, test_params, 'code editor value was updated')
})
.then(() => new Promise((resolve) => {
App.Auth.login({
data: {
username: 'admin@example.com',
password: 'test',
},
success: resolve,
error: resolve
})
}))
.then(() => new Promise((resolve) => {
syn.click(editor[0]).type('[left][enter]"id[right]:[space]"::')
setTimeout(() => { resolve() }, updateDelay)
}))
.then(() => {
assert.ok($('.CodeMirror-hints'), 'shows full replacements list triggered by ::')
})
.then(() => new Promise((resolve) => {
syn.click(editor[0]).type('ticket.id[enter]')
setTimeout(() => { resolve() }, updateDelay)
}))
.then(() => {
assert.notOk($('.CodeMirror-hints').length, 'hides replacements list after choosing')
})
.then(() => new Promise((resolve) => {
syn.click(editor[0]).type('[right],[enter]"title[right]:[space]"#{')
setTimeout(() => { resolve() }, updateDelay)
}))
.then(() => {
assert.ok($('.CodeMirror-hints'), 'shows full replacements list triggered by #{')
})
.then(() => new Promise((resolve) => {
syn.click(editor[0]).type('ticket.titl[enter]')
setTimeout(() => { resolve() }, updateDelay)
}))
.then(() => {
assert.notOk($('.CodeMirror-hints').length, 'hides replacements list after choosing')
})
.then(() => new Promise((resolve) => {
syn.click(editor[0]).type('[right],[enter]"escalation[right]:[space]"#{')
setTimeout(() => { resolve() }, updateDelay)
}))
.then(() => {
assert.ok($('.CodeMirror-hints'), 'shows full replacements list triggered by #{')
})
.then(() => new Promise((resolve) => {
syn.click(editor[0]).type('ticket.escalation_at')
setTimeout(() => { resolve() }, updateDelay)
}))
.then(() => {
assert.notOk($('.CodeMirror-hints').length, 'hides replacements list after only a single match remains')
})
.then(() => {
var params = App.ControllerForm.params(el)
var test_params = {
code: '{\r\n "id": "#{ticket.id}",\r\n "title": "#{ticket.title}",\r\n "escalation": "#{ticket.escalation_at}"\r\n}',
}
assert.deepEqual(params, test_params, 'code editor value contains replacements')
})
.finally(done)
}, initDelay)
});