xyc
2024-05-17 6b24f642b01cf3cd1be0d5833273fa2867d389e1
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
/* eslint-env qunit */
import * as contextmenu from '../editor/contextmenu.js';
 
// log function
QUnit.log((details) => {
  if (window.console && window.console.log) {
    window.console.log(details.result + ' :: ' + details.message);
  }
});
 
function tearDown () {
  contextmenu.resetCustomMenus();
}
 
QUnit.module('svgedit.contextmenu');
 
QUnit.test('Test svgedit.contextmenu package', function (assert) {
  assert.expect(4);
 
  assert.ok(contextmenu, 'contextmenu registered correctly');
  assert.ok(contextmenu.add, 'add registered correctly');
  assert.ok(contextmenu.hasCustomHandler, 'contextmenu hasCustomHandler registered correctly');
  assert.ok(contextmenu.getCustomHandler, 'contextmenu getCustomHandler registered correctly');
});
 
QUnit.test('Test svgedit.contextmenu does not add invalid menu item', function (assert) {
  assert.expect(3);
 
  contextmenu.add({id: 'justanid'});
  assert.ok(!contextmenu.hasCustomHandler('justanid'), 'menu item with just an id is invalid');
 
  contextmenu.add({id: 'idandlabel', label: 'anicelabel'});
  assert.ok(!contextmenu.hasCustomHandler('idandlabel'), 'menu item with just an id and label is invalid');
 
  contextmenu.add({id: 'idandlabel', label: 'anicelabel', action: 'notafunction'});
  assert.ok(!contextmenu.hasCustomHandler('idandlabel'), 'menu item with action that is not a function is invalid');
});
 
QUnit.test('Test svgedit.contextmenu adds valid menu item', function (assert) {
  assert.expect(2);
 
  const validItem = {id: 'valid', label: 'anicelabel', action () { alert('testing'); }};
  contextmenu.add(validItem);
 
  assert.ok(contextmenu.hasCustomHandler('valid'), 'Valid menu item is added.');
  assert.equal(contextmenu.getCustomHandler('valid'), validItem.action, 'Valid menu action is added.');
  tearDown();
});
 
QUnit.test('Test svgedit.contextmenu rejects valid duplicate menu item id', function (assert) {
  assert.expect(1);
 
  const validItem1 = {id: 'valid', label: 'anicelabel', action () { alert('testing'); }};
  const validItem2 = {id: 'valid', label: 'anicelabel', action () { alert('testingtwice'); }};
  contextmenu.add(validItem1);
  contextmenu.add(validItem2);
 
  assert.equal(contextmenu.getCustomHandler('valid'), validItem1.action, 'duplicate menu item is rejected.');
  tearDown();
});