-
Notifications
You must be signed in to change notification settings - Fork 2.5k
/
liner.js
128 lines (95 loc) · 3.36 KB
/
liner.js
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
119
120
121
122
123
124
125
126
127
128
/* bender-tags: editor,unit,lineutils */
/* bender-ckeditor-plugins: lineutils */
( function() {
'use strict';
var liner;
CKEDITOR.addCss(
'body { padding: 0px !important; margin: 0px !important; }' +
'body * { outline: 1px solid #ccc } '
);
bender.editor = {
config: {
allowedContent: true,
autoParagraph: false,
on: {
instanceReady: function() {
liner = new CKEDITOR.plugins.lineutils.liner( this );
}
}
}
};
var lines = [],
line;
bender.test( {
'test addLine': function() {
var body = CKEDITOR.document.getBody();
for ( var i = 0; i < 10; i++ ) {
line = liner.addLine();
lines.push( line );
assert.areSame( body, line.getParent(), 'Line added to DOM.' );
}
},
'test remove lines (destroy)': function() {
var bot = this.editorBot,
i;
for ( i = lines.length; i--; )
liner[ i % 2 ? 'visible' : 'hidden' ][ lines[ i ].getUniqueId() ] = lines[ i ];
assert.areSame( 5, CKEDITOR.tools.objectKeys( liner.visible ).length );
assert.areSame( 5, CKEDITOR.tools.objectKeys( liner.hidden ).length );
bot.editor.destroy();
for ( i = lines.length; i--; )
assert.isNull( lines[ i ].getParent(), 'Line removed from DOM.' );
},
'test showLine': function() {
var line, uid;
line = liner.addLine();
uid = line.getUniqueId();
assert.isUndefined( liner.hidden[ uid ], 'Line not registered in visible.' );
assert.isUndefined( liner.visible[ uid ], 'Line not registered in hidden.' );
liner.showLine( line );
assert.isUndefined( liner.hidden[ uid ], 'Line not added to hidden.' );
assert.areSame( liner.visible[ uid ], line, 'Line properly added to visible.' );
assert.isTrue( line.isVisible(), 'Line hidden in DOM.' );
},
'test hideLine': function() {
var line, uid;
line = liner.addLine();
uid = line.getUniqueId();
assert.isUndefined( liner.hidden[ uid ], 'Line not registered in visible.' );
assert.isUndefined( liner.visible[ uid ], 'Line not registered in hidden.' );
liner.visible[ uid ] = line;
liner.hideLine( line );
assert.isUndefined( liner.visible[ uid ], 'Line properly removed from visible.' );
assert.areSame( liner.hidden[ uid ], line, 'Line properly added to hidden.' );
assert.isFalse( line.isVisible(), 'Line hidden in DOM.' );
},
'test hideVisible': function() {
var line1, line2;
// Clean-up liner first.
liner.removeAll();
// One to hidden.
line1 = liner.addLine();
liner.hidden[ line1.getUniqueId() ] = line2;
// One to visible.
line2 = liner.addLine();
liner.visible[ line2.getUniqueId() ] = line2;
liner.hideVisible();
assert.isTrue( CKEDITOR.tools.isEmpty( liner.visible ), 'Line removed from visible.' );
assert.isFalse( line2.isVisible(), 'Line hidden in DOM.' );
assert.areSame( 2, CKEDITOR.tools.objectKeys( liner.hidden ).length, 'Line moved to hidden.' );
},
// #12812
'test the constructor does not access window\'s parent frame in case of inline editor': function() {
bender.editorBot.create( {
creator: 'inline',
name: 'inline1'
}, function( bot ) {
var editor = bot.editor,
spy = sinon.spy( editor.window, 'getFrame' ),
liner = new CKEDITOR.plugins.lineutils.liner( editor );
assert.isFalse( spy.called, 'the editor.window.getFrame() was not called' );
assert.isFalse( 'frame' in liner, 'liner.frame was not set' );
} );
}
} );
} )();