Skip to content
GitLab
Explore
Projects
Groups
Snippets
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Bootstrap
bootstrap
Commits
fe6ba238
Commit
fe6ba238
authored
6 years ago
by
Anton Bershanskiy
Committed by
Johann-S
5 years ago
Browse files
Options
Download
Email Patches
Plain Diff
rewrite manipulator unit tests
parent
c8c20746
main
cleanup-floating-forms
cssvar-function
dependabot/npm_and_yarn/stylelint-and-stylelint-config-twbs-bootstrap-15.3.0
extend-snippets
feat/data-target
floating-always-visible
floating-labels-icons
fod-main-banner
form-controls-with-icons
github/fork/719media/patch-13
github/fork/719media/patch-14
github/fork/719media/patch-9
github/fork/ChellyAhmed/fix-typo-reboot.md
github/fork/ChellyAhmed/offcanvas-scroll-back
github/fork/CtrlAltLilith/main
github/fork/Elysiome/offcanvas-optional-window-resizing
github/fork/JanSargsyan/main
github/fork/LunicLynx/support-different-line-height-for-buttons
github/fork/Psixodelik/main
github/fork/Ronid1/ronid1/offcanvas_static_backdrop
github/fork/RyanBerliner/tooltip-accessibility
github/fork/SantiagoPVazquez/Feature-default-border-bottom-to-dropdown-item
github/fork/Sir-Genius/utils
github/fork/Sumit-Singh-8/main
github/fork/Viktor-VERA2020/offcanvas-slide
github/fork/Zivangu9/input-group-for-form-control-plaintext
github/fork/alpadev/alpadev/call-dispose-on-component-reinstantiation
github/fork/astagi/fix/tree-shake-modules
github/fork/compnerd/dark-accordion-icon
github/fork/derSascha/dropdown-dont-close-on-input-click
github/fork/dev-ph1l/main
github/fork/donquixote/issue-33861-utl-mixin
github/fork/florianlacreuse/mixin-make-row-gutter-y
github/fork/gregorw/main
github/fork/iteggmbh/transitionend-dispose-race
github/fork/jdelStrother/patch-1
github/fork/jonnysp/form-floating
github/fork/jonnysp/independent-offcanvas
github/fork/jonnysp/theme-dark-on-card-and-modal-fix
github/fork/josefdlange/floating-label-placeholder-opacity
github/fork/julien-deramond/enhance-change-version.js
github/fork/julien-deramond/main-jd-fix-offset-content
github/fork/julien-deramond/main-jd-issue-with-utitlies
github/fork/julien-deramond/main-xmr-pa11y-ci-jd-add-hideElements
github/fork/kyletsang/fix-tooltip-padding
github/fork/lacutah/CheckboxCenteringDocumentation
github/fork/lekoala/patch-3
github/fork/louismaximepiton/main-kld-lmp-collapse-proposal
github/fork/louismaximepiton/main-lmp-card-inner-border-radius-fix
github/fork/louismaximepiton/main-lmp-carousel-multiple-images
github/fork/louismaximepiton/main-lmp-css-var-init
github/fork/louismaximepiton/main-lmp-disabled-floating-label-fix
github/fork/louismaximepiton/main-lmp-input-range-fix
github/fork/louismaximepiton/main-lmp-shift-color
github/fork/louismaximepiton/main-lmp-table-active-tr-fix
github/fork/maciek-szn/switch
github/fork/michael-roth/feature/19964-multiple-tab-targets
github/fork/mistic100/dom-utils
github/fork/nkdas91/accordion
github/fork/nstungcom/fix-missing-modal-open-class
github/fork/oraliahdz/animation-utilities
github/fork/pine3ree/patch-7
github/fork/pouwerkerk/unindent-scss-docs-shortcode
github/fork/smares/smares-no-scolling-on-modal-close
github/fork/tgm-git/patch-1
gs-forms
gs-toasts-with-animated-progress-bar
gs/add-history-helper
gs/change-version-dir-on-docs
gs/data-must-set-onlu-one-instance
gs/docs/fix-drop-down-error
gs/event-handler-2
gs/make-docs-js-build
gs/make-simple-attribute-toggler
gs/popover-fix-doc
gs/provide-steConfig-method
gs/scrollspy-smoothscroll-option-use-browser-history
gs/streamline-jqueryInterface
gs/support-drop-down-in-navbar
gs/test-js-generic-trigger
gs/try-web-components
gs/tweak-collapse-js-selector
gs/use-event-handler-in-cocmponent
gs/use-rollup-replace-for-version
jo-docs-thanks-page
jo-ssr-friendly
logical-props-spacing-utils
main-fod-disabled-form-check-label
main-fod-nested-accordion
main-fod-simpler-table-structure
main-fod-table-separator
main-fod-utilities-contrast
main-jd-abbr-title
main-jd-add-chips
main-jd-add-doc-for-sass-custom-colors
main-jd-add-enable-host-to-handle-web-components
main-jd-browserstack-fine-tune
main-jd-browserstack-updates
main-jd-docs-consistent-usage-of-css-sections-step-2
main-jd-fix-docs-headers-in-white
main-jd-fix-highlight-docs-border-radius
main-jd-fix-placeholder-color-background-params-for-img-markup
main-jd-glossary-experiment
main-jd-postcss-drop-empty-css-vars
main-jd-proto-doc-astro
main-jd-skip-navigation-component
main-jd-stackblitz-for-examples
main-jd-upgrade-browserlistrc
main-jd-use-host
main-lmp-dark-theme-customization
main-lmp-handle-scroll-target
main-lmp-tab-fix
main-mc-opensearch
main-xmr-bundlewatch-action
main-xmr-eslint-plugin-compat
main-xmr-hugo-docs-vendor
main-xmr-hugo-rm-ver
main-xmr-linkinator-prod
main-xmr-min-mangle
main-xmr-pa11y-ci
more-darkmode-examples
nested-dropdowns
patrickhlauke-issue37428
patrickhlauke-use-of-color-tweaks
pr/34102
pr/37590
previous-next-docs-links
sticky-thead
utilities-functions-mixin
v530-dev
v6-postcss-custom-media
v6-spinner-dots
v6/gs/use-floating-ui-in-place-of-popper
xmr/dev
xmr/docs-png
xmr/docs-svgs
xmr/hugo-reorg-files
xmr/js-2
xmr/markdownlint
xmr/prepare-530-alpha2
xmr/xo
v5.3.0-alpha1
v5.2.3
v5.2.2
v5.2.1
v5.2.0
v5.2.0-beta1
v5.1.3
v5.1.2
v5.1.1
v5.1.0
v5.0.2
v5.0.1
v5.0.0
v5.0.0-beta3
v5.0.0-beta2
v5.0.0-beta1
v5.0.0-alpha3
v5.0.0-alpha2
v5.0.0-alpha1
2 merge requests
!31948
Examples/Floating-labels: fix bad behavior with autofill
,
!30064
test
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
js/src/dom/manipulator.spec.js
+158
-0
js/src/dom/manipulator.spec.js
js/tests/unit/dom/manipulator.js
+0
-128
js/tests/unit/dom/manipulator.js
with
158 additions
and
128 deletions
+158
-128
js/src/dom/manipulator.spec.js
0 → 100644
+
158
-
0
View file @
fe6ba238
import
Manipulator
from
'
./manipulator
'
/** Test helpers */
import
{
getFixture
,
clearFixture
}
from
'
../../tests/helpers/fixture
'
describe
(
'
Manipulator
'
,
()
=>
{
let
fixtureEl
beforeAll
(()
=>
{
fixtureEl
=
getFixture
()
})
afterEach
(()
=>
{
clearFixture
()
})
describe
(
'
setDataAttribute
'
,
()
=>
{
it
(
'
should set data attribute
'
,
()
=>
{
fixtureEl
.
innerHTML
=
'
<div></div>
'
const
div
=
fixtureEl
.
querySelector
(
'
div
'
)
Manipulator
.
setDataAttribute
(
div
,
'
key
'
,
'
value
'
)
expect
(
div
.
getAttribute
(
'
data-key
'
)).
toEqual
(
'
value
'
)
})
it
(
'
should set data attribute in lower case
'
,
()
=>
{
fixtureEl
.
innerHTML
=
'
<div></div>
'
const
div
=
fixtureEl
.
querySelector
(
'
div
'
)
Manipulator
.
setDataAttribute
(
div
,
'
tEsT
'
,
'
value
'
)
expect
(
div
.
getAttribute
(
'
data-test
'
)).
toEqual
(
'
value
'
)
})
})
describe
(
'
removeDataAttribute
'
,
()
=>
{
it
(
'
should remove data attribute
'
,
()
=>
{
fixtureEl
.
innerHTML
=
'
<div data-key="value"></div>
'
const
div
=
fixtureEl
.
querySelector
(
'
div
'
)
Manipulator
.
removeDataAttribute
(
div
,
'
key
'
)
expect
(
div
.
getAttribute
(
'
data-key
'
)).
toBeNull
()
})
it
(
'
should remove data attribute in lower case
'
,
()
=>
{
fixtureEl
.
innerHTML
=
'
<div data-testkey="value" ></div>
'
const
div
=
fixtureEl
.
querySelector
(
'
div
'
)
Manipulator
.
removeDataAttribute
(
div
,
'
tEStKeY
'
)
expect
(
div
.
getAttribute
(
'
data-testkey
'
)).
toBeNull
()
})
})
describe
(
'
getDataAttributes
'
,
()
=>
{
it
(
'
should return empty object for null
'
,
()
=>
{
expect
(
Manipulator
.
getDataAttributes
(
null
),
{})
expect
().
nothing
()
})
it
(
'
should get all data attributes
'
,
()
=>
{
fixtureEl
.
innerHTML
=
'
<div data-test="js" data-test2="js2" ></div>
'
const
div
=
fixtureEl
.
querySelector
(
'
div
'
)
expect
(
Manipulator
.
getDataAttributes
(
div
)).
toEqual
({
test
:
'
js
'
,
test2
:
'
js2
'
})
})
})
describe
(
'
getDataAttribute
'
,
()
=>
{
it
(
'
should get data attribute
'
,
()
=>
{
fixtureEl
.
innerHTML
=
'
<div data-test="null" ></div>
'
const
div
=
fixtureEl
.
querySelector
(
'
div
'
)
expect
(
Manipulator
.
getDataAttribute
(
div
,
'
test
'
)).
toBeNull
()
})
it
(
'
should get data attribute in lower case
'
,
()
=>
{
fixtureEl
.
innerHTML
=
'
<div data-test="value" ></div>
'
const
div
=
fixtureEl
.
querySelector
(
'
div
'
)
expect
(
Manipulator
.
getDataAttribute
(
div
,
'
tEsT
'
)).
toEqual
(
'
value
'
)
})
it
(
'
should normalize data
'
,
()
=>
{
fixtureEl
.
innerHTML
=
'
<div data-test="false" ></div>
'
const
div
=
fixtureEl
.
querySelector
(
'
div
'
)
expect
(
Manipulator
.
getDataAttribute
(
div
,
'
test
'
)).
toEqual
(
false
)
div
.
setAttribute
(
'
data-test
'
,
'
true
'
)
expect
(
Manipulator
.
getDataAttribute
(
div
,
'
test
'
)).
toEqual
(
true
)
div
.
setAttribute
(
'
data-test
'
,
'
1
'
)
expect
(
Manipulator
.
getDataAttribute
(
div
,
'
test
'
)).
toEqual
(
1
)
})
})
describe
(
'
offset
'
,
()
=>
{
it
(
'
should return object with two properties top and left, both numbers
'
,
()
=>
{
fixtureEl
.
innerHTML
=
'
<div></div>
'
const
div
=
fixtureEl
.
querySelector
(
'
div
'
)
const
offset
=
Manipulator
.
offset
(
div
)
expect
(
offset
).
toBeDefined
()
expect
(
offset
.
top
).
toEqual
(
jasmine
.
any
(
Number
))
expect
(
offset
.
left
).
toEqual
(
jasmine
.
any
(
Number
))
})
})
describe
(
'
position
'
,
()
=>
{
it
(
'
should return object with two properties top and left, both numbers
'
,
()
=>
{
fixtureEl
.
innerHTML
=
'
<div></div>
'
const
div
=
fixtureEl
.
querySelector
(
'
div
'
)
const
position
=
Manipulator
.
position
(
div
)
expect
(
position
).
toBeDefined
()
expect
(
position
.
top
).
toEqual
(
jasmine
.
any
(
Number
))
expect
(
position
.
left
).
toEqual
(
jasmine
.
any
(
Number
))
})
})
describe
(
'
toggleClass
'
,
()
=>
{
it
(
'
should not error out if element is null or undefined
'
,
()
=>
{
Manipulator
.
toggleClass
(
null
,
'
test
'
)
Manipulator
.
toggleClass
(
undefined
,
'
test
'
)
expect
().
nothing
()
})
it
(
'
should add class if it is missing
'
,
()
=>
{
fixtureEl
.
innerHTML
=
'
<div></div>
'
const
div
=
fixtureEl
.
querySelector
(
'
div
'
)
Manipulator
.
toggleClass
(
div
,
'
test
'
)
expect
(
div
.
classList
.
contains
(
'
test
'
)).
toEqual
(
true
)
})
it
(
'
should remove class if it is set
'
,
()
=>
{
fixtureEl
.
innerHTML
=
'
<div class="test"></div>
'
const
div
=
fixtureEl
.
querySelector
(
'
div
'
)
Manipulator
.
toggleClass
(
div
,
'
test
'
)
expect
(
div
.
classList
.
contains
(
'
test
'
)).
toEqual
(
false
)
})
})
})
This diff is collapsed.
Click to expand it.
js/tests/unit/dom/manipulator.js
deleted
100644 → 0
+
0
-
128
View file @
c8c20746
$
(
function
()
{
'
use strict
'
QUnit
.
module
(
'
manipulator
'
)
QUnit
.
test
(
'
should be defined
'
,
function
(
assert
)
{
assert
.
expect
(
1
)
assert
.
ok
(
Manipulator
,
'
Manipulator is defined
'
)
})
QUnit
.
test
(
'
should set data attribute
'
,
function
(
assert
)
{
assert
.
expect
(
1
)
var
$div
=
$
(
'
<div />
'
).
appendTo
(
'
#qunit-fixture
'
)
Manipulator
.
setDataAttribute
(
$div
[
0
],
'
test
'
,
'
test
'
)
assert
.
strictEqual
(
$div
[
0
].
getAttribute
(
'
data-test
'
),
'
test
'
)
})
QUnit
.
test
(
'
should set data attribute in lower case
'
,
function
(
assert
)
{
assert
.
expect
(
1
)
var
$div
=
$
(
'
<div />
'
).
appendTo
(
'
#qunit-fixture
'
)
Manipulator
.
setDataAttribute
(
$div
[
0
],
'
tEsT
'
,
'
test
'
)
assert
.
strictEqual
(
$div
[
0
].
getAttribute
(
'
data-test
'
),
'
test
'
)
})
QUnit
.
test
(
'
should get data attribute
'
,
function
(
assert
)
{
assert
.
expect
(
2
)
var
$div
=
$
(
'
<div data-test="null" />
'
).
appendTo
(
'
#qunit-fixture
'
)
assert
.
strictEqual
(
Manipulator
.
getDataAttribute
(
$div
[
0
],
'
test
'
),
null
)
var
$div2
=
$
(
'
<div data-test2="js" />
'
).
appendTo
(
'
#qunit-fixture
'
)
assert
.
strictEqual
(
Manipulator
.
getDataAttribute
(
$div2
[
0
],
'
tEst2
'
),
'
js
'
)
})
QUnit
.
test
(
'
should get data attributes
'
,
function
(
assert
)
{
assert
.
expect
(
4
)
var
$div
=
$
(
'
<div data-test="js" data-test2="js2" />
'
).
appendTo
(
'
#qunit-fixture
'
)
var
$div2
=
$
(
'
<div data-test3="js" data-test4="js2" />
'
).
appendTo
(
'
#qunit-fixture
'
)
var
$div3
=
$
(
'
<div attri="1" />
'
).
appendTo
(
'
#qunit-fixture
'
)
assert
.
propEqual
(
Manipulator
.
getDataAttributes
(
$div
[
0
]),
{
test
:
'
js
'
,
test2
:
'
js2
'
})
assert
.
propEqual
(
Manipulator
.
getDataAttributes
(
null
),
{})
assert
.
propEqual
(
Manipulator
.
getDataAttributes
(
$div2
[
0
]),
{
test3
:
'
js
'
,
test4
:
'
js2
'
})
assert
.
propEqual
(
Manipulator
.
getDataAttributes
(
$div3
[
0
]),
{})
})
QUnit
.
test
(
'
should remove data attribute
'
,
function
(
assert
)
{
assert
.
expect
(
2
)
var
$div
=
$
(
'
<div />
'
).
appendTo
(
'
#qunit-fixture
'
)
Manipulator
.
setDataAttribute
(
$div
[
0
],
'
test
'
,
'
test
'
)
assert
.
strictEqual
(
$div
[
0
].
getAttribute
(
'
data-test
'
),
'
test
'
)
Manipulator
.
removeDataAttribute
(
$div
[
0
],
'
test
'
)
assert
.
strictEqual
(
$div
[
0
].
getAttribute
(
'
data-test
'
),
null
)
})
QUnit
.
test
(
'
should remove data attribute in lower case
'
,
function
(
assert
)
{
assert
.
expect
(
2
)
var
$div
=
$
(
'
<div />
'
).
appendTo
(
'
#qunit-fixture
'
)
Manipulator
.
setDataAttribute
(
$div
[
0
],
'
test
'
,
'
test
'
)
assert
.
strictEqual
(
$div
[
0
].
getAttribute
(
'
data-test
'
),
'
test
'
)
Manipulator
.
removeDataAttribute
(
$div
[
0
],
'
tESt
'
)
assert
.
strictEqual
(
$div
[
0
].
getAttribute
(
'
data-test
'
),
null
)
})
QUnit
.
test
(
'
should return element offsets
'
,
function
(
assert
)
{
assert
.
expect
(
2
)
var
$div
=
$
(
'
<div />
'
).
appendTo
(
'
#qunit-fixture
'
)
var
offset
=
Manipulator
.
offset
(
$div
[
0
])
assert
.
ok
(
typeof
offset
.
top
===
'
number
'
)
assert
.
ok
(
typeof
offset
.
left
===
'
number
'
)
})
QUnit
.
test
(
'
should return element position
'
,
function
(
assert
)
{
assert
.
expect
(
2
)
var
$div
=
$
(
'
<div />
'
).
appendTo
(
'
#qunit-fixture
'
)
var
offset
=
Manipulator
.
position
(
$div
[
0
])
assert
.
ok
(
typeof
offset
.
top
===
'
number
'
)
assert
.
ok
(
typeof
offset
.
left
===
'
number
'
)
})
QUnit
.
test
(
'
should toggle class
'
,
function
(
assert
)
{
assert
.
expect
(
2
)
var
$div
=
$
(
'
<div class="test" />
'
).
appendTo
(
'
#qunit-fixture
'
)
Manipulator
.
toggleClass
(
$div
[
0
],
'
test
'
)
assert
.
ok
(
!
$div
.
hasClass
(
'
test
'
))
Manipulator
.
toggleClass
(
$div
[
0
],
'
test
'
)
assert
.
ok
(
$div
.
hasClass
(
'
test
'
))
Manipulator
.
toggleClass
(
null
)
})
})
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment
Menu
Explore
Projects
Groups
Snippets