mirror of
https://github.com/twbs/bootstrap.git
synced 2025-02-22 06:39:52 +00:00
test(Modal): check if modal is disposed
This commit is contained in:
parent
65dc8c9070
commit
bd2851938a
@ -196,9 +196,17 @@ class Modal {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dispose() {
|
dispose() {
|
||||||
$.removeData(this._element, DATA_KEY)
|
[window, this._element, this._dialog]
|
||||||
|
.forEach((htmlElement) => $(htmlElement).off(EVENT_KEY))
|
||||||
|
|
||||||
$(window, document, this._element, this._backdrop).off(EVENT_KEY)
|
/**
|
||||||
|
* `document` has 2 events `Event.FOCUSIN` and `Event.CLICK_DATA_API`
|
||||||
|
* Do not move `document` in `htmlElements` array
|
||||||
|
* It will remove `Event.CLICK_DATA_API` event that should remain
|
||||||
|
*/
|
||||||
|
$(document).off(Event.FOCUSIN)
|
||||||
|
|
||||||
|
$.removeData(this._element, DATA_KEY)
|
||||||
|
|
||||||
this._config = null
|
this._config = null
|
||||||
this._element = null
|
this._element = null
|
||||||
|
@ -697,4 +697,37 @@ $(function () {
|
|||||||
|
|
||||||
beginTimestamp = Date.now()
|
beginTimestamp = Date.now()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
QUnit.test('should dispose modal', function (assert) {
|
||||||
|
assert.expect(3)
|
||||||
|
var done = assert.async()
|
||||||
|
|
||||||
|
var $modal = $([
|
||||||
|
'<div id="modal-test">',
|
||||||
|
' <div class="modal-dialog">',
|
||||||
|
' <div class="modal-content">',
|
||||||
|
' <div class="modal-body" />',
|
||||||
|
' </div>',
|
||||||
|
' </div>',
|
||||||
|
'</div>'
|
||||||
|
].join('')).appendTo('#qunit-fixture')
|
||||||
|
|
||||||
|
$modal.on('shown.bs.modal', function () {
|
||||||
|
var spy = sinon.spy($.fn, 'off')
|
||||||
|
|
||||||
|
$(this).bootstrapModal('dispose')
|
||||||
|
|
||||||
|
const modalDataApiEvent = $._data(document, 'events').click
|
||||||
|
.find((e) => e.namespace === 'bs.data-api.modal')
|
||||||
|
|
||||||
|
assert.ok(typeof $(this).data('bs.modal') === 'undefined', 'modal data object was disposed')
|
||||||
|
|
||||||
|
assert.ok(spy.callCount === 4, '`jQuery.off` was called')
|
||||||
|
|
||||||
|
assert.ok(typeof modalDataApiEvent !== 'undefined', '`Event.CLICK_DATA_API` on `document` was not removed')
|
||||||
|
|
||||||
|
$.fn.off.restore()
|
||||||
|
done()
|
||||||
|
}).bootstrapModal('show')
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user