@@ -940,4 +940,116 @@ $(function () {
940940
941941 $dropdown . trigger ( 'click' )
942942 } )
943+
944+ QUnit . test ( 'should call Popper.js and detect navbar on update' , function ( assert ) {
945+ assert . expect ( 3 )
946+
947+ var dropdownHTML =
948+ '<div class="dropdown">' +
949+ ' <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>' +
950+ ' <div class="dropdown-menu">' +
951+ ' <a class="dropdown-item" href="#">Another link</a>' +
952+ ' </div>' +
953+ '</div>'
954+
955+ var $dropdown = $ ( dropdownHTML )
956+ . appendTo ( '#qunit-fixture' )
957+ . find ( '[data-toggle="dropdown"]' )
958+ . bootstrapDropdown ( )
959+
960+ var dropdown = $dropdown . data ( 'bs.dropdown' )
961+ dropdown . toggle ( )
962+ assert . ok ( dropdown . _popper )
963+
964+ var spyPopper = sinon . spy ( dropdown . _popper , 'scheduleUpdate' )
965+ var spyDetectNavbar = sinon . spy ( dropdown , '_detectNavbar' )
966+ dropdown . update ( )
967+
968+ assert . ok ( spyPopper . called )
969+ assert . ok ( spyDetectNavbar . called )
970+ } )
971+
972+ QUnit . test ( 'should just detect navbar on update' , function ( assert ) {
973+ assert . expect ( 2 )
974+
975+ var dropdownHTML =
976+ '<div class="dropdown">' +
977+ ' <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>' +
978+ ' <div class="dropdown-menu">' +
979+ ' <a class="dropdown-item" href="#">Another link</a>' +
980+ ' </div>' +
981+ '</div>'
982+
983+ var $dropdown = $ ( dropdownHTML )
984+ . appendTo ( '#qunit-fixture' )
985+ . find ( '[data-toggle="dropdown"]' )
986+ . bootstrapDropdown ( )
987+
988+ var dropdown = $dropdown . data ( 'bs.dropdown' )
989+ var spyDetectNavbar = sinon . spy ( dropdown , '_detectNavbar' )
990+
991+ dropdown . update ( )
992+
993+ assert . notOk ( dropdown . _popper )
994+ assert . ok ( spyDetectNavbar . called )
995+ } )
996+
997+ QUnit . test ( 'should dispose dropdown with Popper' , function ( assert ) {
998+ assert . expect ( 6 )
999+
1000+ var dropdownHTML =
1001+ '<div class="dropdown">' +
1002+ ' <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>' +
1003+ ' <div class="dropdown-menu">' +
1004+ ' <a class="dropdown-item" href="#">Another link</a>' +
1005+ ' </div>' +
1006+ '</div>'
1007+
1008+ var $dropdown = $ ( dropdownHTML )
1009+ . appendTo ( '#qunit-fixture' )
1010+ . find ( '[data-toggle="dropdown"]' )
1011+ . bootstrapDropdown ( )
1012+
1013+ var dropdown = $dropdown . data ( 'bs.dropdown' )
1014+ dropdown . toggle ( )
1015+
1016+ assert . ok ( dropdown . _popper )
1017+ assert . ok ( dropdown . _menu !== null )
1018+ assert . ok ( dropdown . _element !== null )
1019+ var spyDestroy = sinon . spy ( dropdown . _popper , 'destroy' )
1020+
1021+ dropdown . dispose ( )
1022+
1023+ assert . ok ( spyDestroy . called )
1024+ assert . ok ( dropdown . _menu === null )
1025+ assert . ok ( dropdown . _element === null )
1026+ } )
1027+
1028+ QUnit . test ( 'should dispose dropdown' , function ( assert ) {
1029+ assert . expect ( 5 )
1030+
1031+ var dropdownHTML =
1032+ '<div class="dropdown">' +
1033+ ' <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>' +
1034+ ' <div class="dropdown-menu">' +
1035+ ' <a class="dropdown-item" href="#">Another link</a>' +
1036+ ' </div>' +
1037+ '</div>'
1038+
1039+ var $dropdown = $ ( dropdownHTML )
1040+ . appendTo ( '#qunit-fixture' )
1041+ . find ( '[data-toggle="dropdown"]' )
1042+ . bootstrapDropdown ( )
1043+
1044+ var dropdown = $dropdown . data ( 'bs.dropdown' )
1045+
1046+ assert . notOk ( dropdown . _popper )
1047+ assert . ok ( dropdown . _menu !== null )
1048+ assert . ok ( dropdown . _element !== null )
1049+
1050+ dropdown . dispose ( )
1051+
1052+ assert . ok ( dropdown . _menu === null )
1053+ assert . ok ( dropdown . _element === null )
1054+ } )
9431055} )
0 commit comments