Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F2751864
jquery.textSelection.test.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
4 KB
Referenced Files
None
Subscribers
None
jquery.textSelection.test.js
View Options
QUnit
.
module
(
'jquery.textSelection'
,
()
=>
{
const
sig
=
{
pre
:
'--~~~~'
};
const
bold
=
{
pre
:
'\'\'\''
,
peri
:
'Bold text'
,
post
:
'\'\'\''
};
const
h2
=
{
pre
:
'== '
,
peri
:
'Heading 2'
,
post
:
' =='
,
regex
:
/^(\s*)(={1,6})(.*?)\2(\s*)$/
,
regexReplace
:
'$1==$3==$4'
,
ownline
:
true
};
const
ulist
=
{
pre
:
'* '
,
peri
:
'Bulleted list item'
,
post
:
''
,
ownline
:
true
,
splitlines
:
true
};
QUnit
.
test
.
each
(
'encapsulateText'
,
{
'Adding sig to end of text'
:
{
before
:
{
text
:
'Wikilove dude! '
,
start
:
15
,
end
:
15
},
after
:
{
text
:
'Wikilove dude! --~~~~'
,
selected
:
''
},
replace
:
sig
},
'Adding bold to empty'
:
{
before
:
{
text
:
''
,
start
:
0
,
end
:
0
},
after
:
{
text
:
'\'\'\'Bold text\'\'\''
,
selected
:
'Bold text'
// selected because it's the default
},
replace
:
bold
},
'Adding bold to existing text'
:
{
before
:
{
text
:
'Now is the time for all good men to come to the aid of their country'
,
start
:
20
,
end
:
32
},
after
:
{
text
:
'Now is the time for \'\'\'all good men\'\'\' to come to the aid of their country'
,
selected
:
''
// empty because it's not the default'
},
replace
:
bold
},
'ownline option: adding new h2'
:
{
before
:
{
text
:
'Before\nAfter'
,
start
:
7
,
end
:
7
},
after
:
{
text
:
'Before\n== Heading 2 ==\nAfter'
,
selected
:
'Heading 2'
},
replace
:
h2
},
'ownline option: turn a whole line into new h2'
:
{
before
:
{
text
:
'Before\nMy heading\nAfter'
,
start
:
7
,
end
:
17
},
after
:
{
text
:
'Before\n== My heading ==\nAfter'
,
selected
:
''
},
replace
:
h2
},
'ownline option: turn a partial line into new h2'
:
{
before
:
{
text
:
'BeforeMy headingAfter'
,
start
:
6
,
end
:
16
},
after
:
{
text
:
'Before\n== My heading ==\nAfter'
,
selected
:
''
},
replace
:
h2
},
'splitlines option: no selection, insert new list item'
:
{
before
:
{
text
:
'Before\nAfter'
,
start
:
7
,
end
:
7
},
after
:
{
text
:
'Before\n* Bulleted list item\nAfter'
},
replace
:
ulist
},
'splitlines option: single partial line selection, insert new list item'
:
{
before
:
{
text
:
'BeforeMy List ItemAfter'
,
start
:
6
,
end
:
18
},
after
:
{
text
:
'Before\n* My List Item\nAfter'
},
replace
:
ulist
},
'splitlines option: multiple lines'
:
{
before
:
{
text
:
'Before\nFirst\nSecond\nThird\nAfter'
,
start
:
7
,
end
:
25
},
after
:
{
text
:
'Before\n* First\n* Second\n* Third\nAfter'
},
replace
:
ulist
}
},
(
assert
,
opt
)
=>
{
const
$textarea
=
$
(
'<textarea>'
).
appendTo
(
'#qunit-fixture'
);
$textarea
.
textSelection
(
'setContents'
,
opt
.
before
.
text
);
const
replace
=
Object
.
assign
(
{
selectionStart
:
opt
.
before
.
start
,
selectionEnd
:
opt
.
before
.
end
},
opt
.
replace
);
$textarea
.
textSelection
(
'encapsulateSelection'
,
replace
);
const
text
=
$textarea
.
textSelection
(
'getContents'
).
replace
(
/\r\n/g
,
'\n'
);
assert
.
strictEqual
(
text
,
opt
.
after
.
text
,
'after encapsulation'
);
if
(
opt
.
after
.
selected
!==
undefined
)
{
const
selected
=
$textarea
.
textSelection
(
'getSelection'
);
assert
.
strictEqual
(
selected
,
opt
.
after
.
selected
,
'selected text'
);
}
}
);
const
caretSample
=
'Some big text that we like to work with. Nothing fancy... you know what I mean?'
;
// Default/empty selection, T36820, T33847
QUnit
.
test
(
'getCaretPosition [initial]'
,
(
assert
)
=>
{
const
$textarea
=
$
(
'<textarea>'
).
text
(
caretSample
).
appendTo
(
'#qunit-fixture'
);
const
pos
=
$textarea
.
textSelection
(
'getCaretPosition'
,
{
startAndEnd
:
true
}
);
assert
.
strictEqual
(
pos
[
0
],
0
,
'default start'
);
assert
.
strictEqual
(
pos
[
1
],
0
,
'default end'
);
}
);
QUnit
.
test
.
each
(
'getCaretPosition'
,
{
'forced empty selection'
:
{
start
:
7
,
end
:
7
},
'small selection'
:
{
start
:
6
,
end
:
11
}
},
(
assert
,
options
)
=>
{
const
$textarea
=
$
(
'<textarea>'
).
text
(
caretSample
).
appendTo
(
'#qunit-fixture'
);
$textarea
.
textSelection
(
'setSelection'
,
{
start
:
options
.
start
,
end
:
options
.
end
}
);
const
pos
=
$textarea
.
textSelection
(
'getCaretPosition'
,
{
startAndEnd
:
true
}
);
assert
.
strictEqual
(
pos
[
0
],
options
.
start
,
'Caret start should be where we set it.'
);
assert
.
strictEqual
(
pos
[
1
],
options
.
end
,
'Caret end should be where we set it.'
);
}
);
}
);
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Jul 3, 19:15 (1 d, 4 h)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
72/38/15e714d8173d5331a3be48a46e14
Default Alt Text
jquery.textSelection.test.js (4 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment