diff --git a/dev/tests/js/JsTestDriver/testsuite/mage/suggest/suggest-test.js b/dev/tests/js/JsTestDriver/testsuite/mage/suggest/suggest-test.js
deleted file mode 100644
index 4b2b961f753eea9dc0321f2b788d1196d5cc3696..0000000000000000000000000000000000000000
--- a/dev/tests/js/JsTestDriver/testsuite/mage/suggest/suggest-test.js
+++ /dev/null
@@ -1,952 +0,0 @@
-/**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
-SuggestTest = TestCase('SuggestTest');
-SuggestTest.prototype.setUp = function() {
-    /*:DOC += <input name="test-suggest" id="suggest" />*/
-    this.suggestElement = jQuery('#suggest');
-};
-SuggestTest.prototype.tearDown = function() {
-    this.suggestDestroy();
-};
-SuggestTest.prototype.suggestDestroy = function() {
-    if(this.suggestElement.data('suggest')) {
-        this.suggestElement.suggest('destroy');
-    }
-};
-SuggestTest.prototype.suggestCreate = function(options, element) {
-    return (element || this.suggestElement).suggest(options || {} ).data('suggest');
-};
-SuggestTest.prototype.uiHash = {
-    item: {
-        id: 1,
-        label: 'Test Label'
-    }
-};
-
-SuggestTest.prototype.testInit = function() {
-    this.suggestElement.suggest();
-    assertTrue(this.suggestElement.is(':mage-suggest'));
-};
-SuggestTest.prototype.testCreate = function() {
-    var suggestOptions = {
-            controls: {
-                selector: '.test',
-                eventsMap: {
-                    focus: ['testfocus'],
-                    blur: ['testblur'],
-                    select: ['testselect']
-                }
-            },
-            showRecent: true,
-            storageKey: 'jsTestDriver-test-suggest-recent',
-            multiselect: true
-        },
-        recentItems = [{
-            id: "1",
-            "label": "TestLabel1"
-        },
-        {
-            id: "2",
-            label: "TestLabel2"
-        }],
-        setTemplateExecuted,
-        prepareValueFieldExecuted,
-        renderExecuted,
-        bindExecuted;
-
-    if(window.localStorage) {
-        localStorage.setItem(suggestOptions.storageKey, JSON.stringify(recentItems));
-    }
-
-    var suggestInstance = this.suggestCreate(suggestOptions),
-        nonSelectedItem = {id: '', label: ''};
-
-    assertEquals(null, suggestInstance._term);
-    assertEquals(suggestInstance._nonSelectedItem, nonSelectedItem);
-    assertNull(suggestInstance._renderedContext);
-    assertEquals(suggestInstance._selectedItem, nonSelectedItem);
-    var control = suggestInstance.options.controls;
-    assertEquals(suggestInstance._control, control);
-    assertEquals(suggestInstance._recentItems, window.localStorage ? recentItems : []);
-    assertTrue(suggestInstance.valueField.is(':hidden'));
-    if(window.localStorage) {
-        localStorage.removeItem(suggestOptions.storageKey);
-    }
-};
-SuggestTest.prototype.testRender = function() {
-    var suggestOptions = {
-        dropdownWrapper: '<div class="wrapper-test"></div>',
-        className: 'test-suggest',
-        inputWrapper: '<div class="test-input-wrapper"></div>'
-    };
-
-    var suggestInstance = this.suggestCreate(suggestOptions);
-    suggestInstance._render();
-
-    assertTrue(suggestInstance.dropdown.hasClass('wrapper-test'));
-    assertTrue(suggestInstance.dropdown.is(':hidden'));
-    assertTrue(suggestInstance.element.closest('.test-input-wrapper').size() > 0);
-    assertTrue(suggestInstance.element.closest('.' + suggestOptions.className).size() > 0);
-    assertEquals(suggestInstance.element.attr('autocomplete'), 'off');
-
-    suggestOptions.appendMethod = 'before';
-    this.suggestDestroy();
-    suggestInstance = this.suggestCreate(suggestOptions);
-    suggestInstance._render();
-    assertTrue(suggestInstance.element.prev().is(suggestInstance.dropdown));
-
-    suggestOptions.appendMethod = 'after';
-    this.suggestDestroy();
-    suggestInstance = this.suggestCreate(suggestOptions);
-    suggestInstance._render();
-    assertTrue(suggestInstance.element.next().is(suggestInstance.dropdown));
-};
-SuggestTest.prototype.testCreateValueField = function() {
-    var suggestInstance = this.suggestCreate(),
-        valueField = suggestInstance._createValueField();
-    assertTrue(valueField.is('input'));
-    assertTrue(valueField.is(':hidden'));
-    this.suggestDestroy();
-
-    suggestInstance = this.suggestCreate({multiselect: true});
-    valueField = suggestInstance._createValueField();
-    assertTrue(valueField.is('select'));
-    assertTrue(valueField.is(':hidden'));
-    assertEquals(valueField.attr('multiple'), 'multiple');
-};
-SuggestTest.prototype.testPrepareValueField = function() {
-    var suggestInstance = this.suggestCreate(),
-        suggestName = this.suggestElement.attr('name');
-    suggestInstance._prepareValueField();
-
-    assertNotUndefined(suggestInstance.valueField);
-    assertTrue(suggestInstance.element.prev().is(suggestInstance.valueField));
-    assertUndefined(suggestInstance.element.attr('name'));
-    assertEquals(suggestInstance.valueField.attr('name'), suggestName);
-    this.suggestDestroy();
-
-
-    var valueField = jQuery('<input id="suggest-single-select-value" type="hidden" />');
-    jQuery('body').append(valueField);
-    suggestInstance = this.suggestCreate({valueField: '#suggest-single-select-value'});
-    assertTrue(suggestInstance.valueField.is(valueField));
-};
-SuggestTest.prototype.testDestroy = function() {
-    var suggestOptions = {
-            inputWrapper: '<div class="test-input-wrapper"></div>',
-            valueField: null
-        },
-        suggestInstance = this.suggestCreate(suggestOptions),
-        suggestName = suggestInstance.valueField.attr('name');
-
-    assertNotUndefined(suggestInstance.dropdown);
-    assertNotUndefined(suggestInstance.valueField);
-    assertUndefined(this.suggestElement.attr('name'));
-
-    this.suggestElement.suggest('destroy');
-
-    assertEquals(this.suggestElement.closest('.test-input-wrapper').length, 0);
-    assertUndefined(this.suggestElement.attr('autocomplete'));
-    assertEquals(this.suggestElement.attr('name'), suggestName);
-    assertFalse(suggestInstance.valueField.parents('html').length > 0);
-    assertFalse(suggestInstance.dropdown.parents('html').length > 0);
-};
-SuggestTest.prototype.testValue = function() {
-    var value = 'test-value';
-    this.suggestElement.val(value);
-    jQuery('body').append('<div id="suggest-div">' + value + '</div>');
-
-    var suggestInputInsatnce = this.suggestCreate(),
-        suggestDivInsatnce = this.suggestCreate(null, jQuery('#suggest-div'));
-
-    assertEquals(suggestInputInsatnce._value(), value);
-    assertEquals(suggestDivInsatnce._value(), value);
-};
-SuggestTest.prototype.testProxyEvents = function() {
-    var fakeEvent = $.extend({}, $.Event('keydown'), {
-            ctrlKey: false,
-            keyCode: $.ui.keyCode.ENTER,
-            which: $.ui.keyCode.ENTER
-        }),
-        suggestInstance = this.suggestCreate({controls: {selector: null}}),
-        ctrlKey,
-        keyCode,
-        which;
-
-    suggestInstance.dropdown.on('keydown', function(e) {
-        ctrlKey = e.ctrlKey;
-        keyCode = e.keyCode;
-        which = e.which;
-    });
-
-    suggestInstance._proxyEvents(fakeEvent);
-
-    assertEquals(ctrlKey, fakeEvent.ctrlKey);
-    assertEquals(keyCode, fakeEvent.keyCode);
-    assertEquals(which, fakeEvent.which);
-};
-SuggestTest.prototype.testBind = function() {
-    var eventIsBinded = false,
-        suggestOptions = {
-            events: {
-                click: function() {
-                    eventIsBinded = true;
-                }
-            }
-        };
-    this.suggestCreate(suggestOptions);
-
-    this.suggestElement.trigger('click');
-    assertTrue(eventIsBinded);
-};
-SuggestTest.prototype.testChange = function() {
-    var changeIsTriggered,
-        suggestInstance = this.suggestCreate();
-
-    suggestInstance._term = 'changed';
-    this.suggestElement.on('suggestchange', function(e) {
-        changeIsTriggered = true;
-    });
-
-    suggestInstance._change($.Event('click'));
-    assertTrue(changeIsTriggered);
-};
-SuggestTest.prototype.testBindDropdown = function() {
-    var suggestOptions = {
-        controls: {
-                eventsMap: {
-                    focus: ['testFocus'],
-                    blur: ['testBlur'],
-                    select: ['testSelect']
-                }
-            }
-        },
-        suggestInstance = this.suggestCreate(suggestOptions),
-        focusTriggered,
-        blurTriggered,
-        selectTriggered;
-
-    suggestInstance._onSelectItem = function() {
-        selectTriggered = true;
-    };
-    suggestInstance._focusItem = function() {
-        focusTriggered = true;
-    };
-    suggestInstance._blurItem = function() {
-        blurTriggered = true;
-    };
-    suggestInstance._bindDropdown();
-
-    suggestInstance.dropdown.trigger('testFocus');
-    suggestInstance.dropdown.trigger('testBlur');
-    suggestInstance.dropdown.trigger('testSelect');
-
-    assertTrue(focusTriggered);
-    assertTrue(blurTriggered);
-    assertTrue(selectTriggered);
-};
-SuggestTest.prototype.testTrigger = function() {
-    var propogationStopped = true,
-        suggestInstance = this.suggestCreate();
-
-    this.suggestElement
-        .on('suggesttestevent', function() {
-            return false;
-        });
-    this.suggestElement.parent().on('suggesttestevent', function() {
-            propogationStopped = false;
-        });
-    suggestInstance._trigger('testevent');
-
-    assertTrue(propogationStopped);
-};
-SuggestTest.prototype.testFocusItem = function() {
-    var focusUiParam = false,
-        suggestInstance = this.suggestCreate();
-
-    this.suggestElement.on('suggestfocus', function(e, ui) {
-        focusUiParam = ui;
-    });
-
-    assertUndefined(suggestInstance._focused);
-    assertEquals(suggestInstance.element.val(), '');
-
-    suggestInstance._focusItem($.Event('focus'), this.uiHash);
-    assertEquals(suggestInstance._focused, this.uiHash.item);
-    assertEquals(focusUiParam, this.uiHash);
-    assertEquals(suggestInstance.element.val(), this.uiHash.item.label);
-};
-SuggestTest.prototype.testBlurItem = function() {
-    var suggestInstance = this.suggestCreate();
-
-    suggestInstance._focusItem($.Event('focus'), this.uiHash);
-    assertEquals(suggestInstance._focused, this.uiHash.item);
-    assertEquals(suggestInstance.element.val(), this.uiHash.item.label);
-
-    suggestInstance._blurItem();
-    assertNull(suggestInstance._focused);
-    //assertEquals(suggestInstance.element.val(), suggestInstance._term.toString());
-};
-SuggestTest.prototype.testOnSelectItem = function() {
-    var item = this.uiHash.item,
-        beforeSelect,
-        beforeSelectUI,
-        beforeSelectPropagationStopped = true,
-        select,
-        selectUI,
-        selectPropagationStopped = true,
-        suggestInstance = this.suggestCreate();
-
-    suggestInstance._focused = item;
-    this.suggestElement
-        .on('suggestbeforeselect', function(e, ui) {
-            beforeSelect = true;
-            beforeSelectUI = ui;
-        })
-        .on('suggestselect', function(e, ui) {
-            select = true;
-            selectUI = ui;
-        })
-        .parent()
-        .on('suggestbeforeselect', function() {
-            beforeSelectPropagationStopped = false;
-        })
-        .on('suggestselect', function() {
-            selectPropagationStopped = false;
-        });
-
-    suggestInstance._onSelectItem($.Event('select'));
-
-    assertTrue(beforeSelect);
-    assertTrue(select);
-    assertFalse(beforeSelectPropagationStopped);
-    assertFalse(selectPropagationStopped);
-    assertEquals(beforeSelectUI.item, item);
-    assertEquals(selectUI.item, item);
-
-    beforeSelect = select = beforeSelectUI = selectUI = null;
-    beforeSelectPropagationStopped = selectPropagationStopped = true;
-
-    this.suggestElement
-        .on('suggestbeforeselect.returnfalse', function(e, ui) {
-            return false;
-        });
-
-    suggestInstance._focused = item;
-    suggestInstance._onSelectItem($.Event('select'));
-    assertTrue(beforeSelect);
-    assertNull(select);
-    assertTrue(beforeSelectPropagationStopped);
-    assertTrue(selectPropagationStopped);
-    assertEquals(beforeSelectUI.item, item);
-    assertNull(selectUI);
-
-    beforeSelect = select = beforeSelectUI = selectUI = null;
-    beforeSelectPropagationStopped = selectPropagationStopped = true;
-
-    this.suggestElement
-        .off('suggestbeforeselect.returnfalse')
-        .on('suggestselect.returnfalse', function() {
-            return false;
-        });
-
-    suggestInstance._focused = item;
-    suggestInstance._onSelectItem($.Event('select'));
-    assertTrue(beforeSelect);
-    assertTrue(select);
-    assertFalse(beforeSelectPropagationStopped);
-    assertTrue(selectPropagationStopped);
-    assertEquals(beforeSelectUI.item, item);
-    assertEquals(selectUI.item, item);
-
-    beforeSelect = select = beforeSelectUI = selectUI = null;
-    beforeSelectPropagationStopped = selectPropagationStopped = true;
-
-    this.suggestElement.off('suggestselect.returnfalse');
-    var event = $.Event('select');
-    event.target = this.suggestElement[0];
-
-    suggestInstance._onSelectItem(event, item);
-    assertEquals(suggestInstance._selectedItem, item);
-};
-SuggestTest.prototype.testSelectItem = function() {
-    var suggestInstance = this.suggestCreate();
-
-    suggestInstance._focused = suggestInstance._term = suggestInstance._selectedItem = null;
-    suggestInstance.valueField.val('');
-
-    suggestInstance._selectItem($.Event('select'));
-    assertNull(suggestInstance._selectedItem);
-    assertNull(suggestInstance._term);
-    assertEquals(suggestInstance.valueField.val(), '');
-
-    suggestInstance._focused = this.uiHash.item;
-
-    suggestInstance._selectItem($.Event('select'));
-    assertEquals(suggestInstance._selectedItem, suggestInstance._focused);
-    assertEquals(suggestInstance._term, suggestInstance._focused.label);
-    assertEquals(suggestInstance.valueField.val(), suggestInstance._focused.id);
-    assertTrue(suggestInstance.dropdown.is(':hidden'));
-
-    this.suggestDestroy();
-
-    var suggestOptions;
-    if(window.localStorage) {
-        suggestOptions = {
-            showRecent: true,
-            storageKey: 'jsTestDriver-test-suggest-recent'
-        };
-        suggestInstance = this.suggestCreate(suggestOptions);
-        suggestInstance._focused = this.uiHash.item;
-
-        suggestInstance._selectItem($.Event('select'));
-
-        var storedItem = localStorage.getItem(suggestOptions.storageKey);
-        assertEquals(storedItem, JSON.stringify([this.uiHash.item]));
-        localStorage.removeItem(suggestOptions.storageKey);
-    }
-};
-SuggestTest.prototype.testSelectItemMultiselect = function() {
-    var suggestInstance = this.suggestCreate({multiselect: true});
-
-    suggestInstance._focused = suggestInstance._term = suggestInstance._selectedItem = null;
-    suggestInstance.valueField.val('');
-
-    suggestInstance._selectItem($.Event('select'));
-    assertNull(suggestInstance._selectedItem);
-    assertNull(suggestInstance._term);
-    assertFalse(suggestInstance.valueField.find('option').length > 0);
-    assertTrue(suggestInstance.dropdown.is(':hidden'));
-
-    suggestInstance._focused = this.uiHash.item;
-    var selectedElement = jQuery('<div></div>');
-    var event = $.Event('select');
-    event.target = selectedElement[0];
-
-    suggestInstance._selectItem(event);
-    assertEquals(suggestInstance._selectedItem, suggestInstance._focused);
-    assertEquals(suggestInstance._term, '');
-    assertTrue(suggestInstance._getOption(suggestInstance._focused).length > 0);
-    assertTrue(selectedElement.hasClass(suggestInstance.options.selectedClass));
-    assertTrue(suggestInstance.dropdown.is(':hidden'));
-
-    suggestInstance._selectItem(event);
-    assertEquals(suggestInstance._selectedItem, suggestInstance._nonSelectedItem);
-    assertFalse(suggestInstance._getOption(suggestInstance._focused).length > 0);
-    assertFalse(selectedElement.hasClass(suggestInstance.options.selectedClass));
-    assertTrue(suggestInstance.dropdown.is(':hidden'));
-};
-SuggestTest.prototype.testResetSuggestValue = function() {
-    var suggestInstance = this.suggestCreate();
-    suggestInstance.valueField.val('test');
-    suggestInstance._resetSuggestValue();
-    assertEquals(suggestInstance.valueField.val(), suggestInstance._nonSelectedItem.id);
-};
-SuggestTest.prototype.testResetSuggestValueMultiselect = function() {
-    var suggestInstance = this.suggestCreate({multiselect: true});
-    suggestInstance._focused = this.uiHash.item;
-    var selectedElement = jQuery('<div></div>');
-    var event = $.Event('select');
-    event.target = selectedElement[0];
-
-    suggestInstance._selectItem(event);
-    suggestInstance._resetSuggestValue();
-
-    var suggestValue = suggestInstance.valueField.val();
-    assertArray(suggestValue);
-    assertNotUndefined(suggestValue[0]);
-    assertEquals(suggestValue[0], this.uiHash.item.id);
-};
-SuggestTest.prototype.testReadItemData = function() {
-    var testElement = jQuery('<div></div>'),
-        suggestInstance = this.suggestCreate();
-    assertEquals(suggestInstance._readItemData(testElement), suggestInstance._nonSelectedItem);
-    testElement.data('suggestOption', 'test');
-    assertEquals(suggestInstance._readItemData(testElement), 'test');
-};
-SuggestTest.prototype.testIsDropdownShown = function() {
-    var suggestInstance = this.suggestCreate();
-    suggestInstance.dropdown.hide();
-    assertFalse(suggestInstance.isDropdownShown());
-    suggestInstance.dropdown.show();
-    assertTrue(suggestInstance.isDropdownShown());
-};
-SuggestTest.prototype.testOpen = function() {
-    var openTriggered = false,
-        suggestInstance = this.suggestCreate();
-
-    this.suggestElement.on('suggestopen', function() {
-        openTriggered = true;
-    });
-
-    suggestInstance.dropdown.show();
-    suggestInstance.open($.Event('open'));
-    assertFalse(openTriggered);
-
-    suggestInstance.dropdown.hide();
-    suggestInstance.open($.Event('open'));
-    assertTrue(openTriggered);
-    assertTrue(suggestInstance.dropdown.is(':visible'));
-};
-SuggestTest.prototype.testClose = function() {
-    var closeTriggered = false,
-        suggestInstance = this.suggestCreate();
-
-    suggestInstance.element.val('test');
-    suggestInstance._renderedContext = 'test';
-    suggestInstance.dropdown.show().append('<div class="test"></div>');
-
-    this.suggestElement.on('suggestclose', function() {
-        closeTriggered = true;
-    });
-
-    suggestInstance.close($.Event('close'));
-    assertNull(suggestInstance._renderedContext);
-    assertTrue(suggestInstance.dropdown.is(':hidden'));
-    assertFalse(suggestInstance.dropdown.children().length > 0);
-    assertTrue(closeTriggered);
-};
-SuggestTest.prototype.testSetTemplate = function() {
-    /*:DOC += <script type="text/template" id="test-template"><div><%= data.test %></div></script>*/
-    var suggestInstance = this.suggestCreate({template: '<div><%= data.test %></div>'}),
-        tmpl,
-        html;
-
-    tmpl = suggestInstance.templates[suggestInstance.templateName]
-
-    html = jQuery('<div />').append(tmpl({
-        data: {
-            test: 'test'
-        }
-    })).html();
-
-    assertEquals(html, '<div>test</div>');
-
-    suggestInstance = this.suggestCreate({
-        template: '#test-template'
-    });
-
-    tmpl = suggestInstance.templates[suggestInstance.templateName];
-
-    html = jQuery('<div />').append(tmpl({
-        data: {
-            test: 'test'
-        }
-    })).html();
-
-    assertEquals(html, '<div>test</div>');
-};
-SuggestTest.prototype.testSearch = function() {
-    var searchTriggered = false,
-        seachPropagationStopped = true,
-        suggestInstance = this.suggestCreate();
-
-    this.suggestElement
-        .on('suggestsearch', function() {
-            searchTriggered = true;
-        })
-        .parent()
-        .on('suggestsearch', function() {
-            seachPropagationStopped = false;
-        });
-
-    suggestInstance._term = suggestInstance._value();
-    suggestInstance._selectedItem = null;
-
-    suggestInstance.preventBlur = true;
-    suggestInstance.search($.Event('search'));
-
-    assertNull(suggestInstance._selectedItem);
-    assertFalse(searchTriggered);
-    suggestInstance.preventBlur = false;
-
-    this.suggestElement.val('test');
-    suggestInstance.search($.Event('search'));
-
-    assertEquals(suggestInstance._term, suggestInstance._value());
-    assertTrue(searchTriggered);
-    assertFalse(seachPropagationStopped);
-
-    searchTriggered = false;
-    seachPropagationStopped = true;
-    suggestInstance._selectedItem = null;
-    suggestInstance.options.minLength = 10;
-    this.suggestElement.val('testtest');
-
-    suggestInstance.search($.Event('search'));
-
-    assertEquals(suggestInstance._selectedItem, suggestInstance._nonSelectedItem);
-    assertEquals(suggestInstance.valueField.val(), suggestInstance._selectedItem.id);
-    assertFalse(searchTriggered);
-
-    searchTriggered = false;
-    seachPropagationStopped = true;
-    suggestInstance._selectedItem = null;
-    suggestInstance.options.minLength = 1;
-    this.suggestElement.val('test');
-
-    this.suggestElement
-        .on('suggestsearch.returnfalse', function() {
-            return false;
-        });
-
-    suggestInstance.search($.Event('search'));
-
-    assertEquals(suggestInstance._term, suggestInstance._value());
-    assertTrue(searchTriggered);
-    assertTrue(seachPropagationStopped);
-};
-SuggestTest.prototype.testUderscoreSearch = function() {
-    var sourceLaunched = false,
-        sorceTerm = null,
-        responceExists = false,
-        suggestOptions = {
-            source: function(term, response){
-                sourceLaunched = true;
-                sorceTerm = term;
-                responceExists = (response && jQuery.type(response) === 'function');
-            },
-            delay: null
-        },
-        suggestInstance = this.suggestCreate(suggestOptions);
-
-    suggestInstance._search($.Event('search'), 'test', {});
-    assertTrue(sourceLaunched);
-    assertEquals(sorceTerm, 'test');
-    assertTrue(responceExists);
-    assertTrue(this.suggestElement.hasClass(suggestInstance.options.loadingClass));
-    assertUndefined(suggestInstance._searchTimeout);
-
-    suggestInstance.options.delay = 100;
-    suggestInstance._search($.Event('search'), 'test', {});
-    assertNotUndefined(suggestInstance._searchTimeout);
-};
-SuggestTest.prototype.testPrepareDropdownContext = function() {
-    var suggestInstance = this.suggestCreate();
-
-    suggestInstance._items = [this.uiHash.item];
-    suggestInstance._term = 'test';
-    suggestInstance._selectedItem = this.uiHash.item;
-
-    var context = suggestInstance._prepareDropdownContext({});
-
-    assertEquals(context.items, suggestInstance._items);
-    assertEquals(context.term, suggestInstance._term);
-    assertEquals(context.optionData(this.uiHash.item),
-        'data-suggest-option="' + JSON.stringify(this.uiHash.item).replace(/"/g, '&quot;') + '"');
-    assertTrue(context.itemSelected(this.uiHash.item));
-    assertNotUndefined(context.noRecordsText);
-    assertFalse(context.recentShown());
-    assertNotUndefined(context.recentTitle);
-    assertNotUndefined(context.showAllTitle);
-    assertFalse(context.allShown());
-};
-SuggestTest.prototype.testIsItemSelected = function() {
-    var suggestInstance = this.suggestCreate();
-    assertFalse(suggestInstance._isItemSelected(this.uiHash.item));
-    suggestInstance._selectedItem = this.uiHash.item;
-    assertTrue(suggestInstance._isItemSelected(this.uiHash.item));
-    this.suggestDestroy();
-
-    suggestInstance = this.suggestCreate({multiselect: true});
-    assertFalse(suggestInstance._isItemSelected(this.uiHash.item));
-    suggestInstance.valueField.append('<option value="1">Test Label1</option>');
-    assertTrue(suggestInstance._isItemSelected(this.uiHash.item));
-};
-SuggestTest.prototype.testRenderDropdown = function() {
-    var testContext = {
-            test: 'test'
-        },
-        contentUpdatedTriggered = false,
-        suggestOptions = {
-            template: '<div><%= data.test %></div>'
-        },
-        suggestInstance = this.suggestCreate(suggestOptions);
-
-    suggestInstance.dropdown.on('contentUpdated', function() {
-        contentUpdatedTriggered = true;
-    });
-    suggestInstance.element.addClass(suggestInstance.options.loadingClass);
-
-    suggestInstance._renderDropdown(null, [this.uiHash.item], testContext);
-
-    assertEquals(suggestInstance._items, [this.uiHash.item]);
-    assertEquals(suggestInstance.dropdown.html(), '<div>test</div>');
-    assertTrue(contentUpdatedTriggered);
-    assertEquals(suggestInstance._renderedContext, suggestInstance._prepareDropdownContext(testContext));
-    assertFalse(suggestInstance.element.hasClass(suggestInstance.options.loadingClass));
-    assertTrue(suggestInstance.dropdown.is(':visible'));
-};
-SuggestTest.prototype.testProcessResponse = function() {
-    var testContext = {
-            test: 'test'
-        },
-        responseTriggered = false,
-        suggestOptions = {
-            template: '<div><%= data.test %></div>'
-        },
-        responcePropagationStopped = true,
-        rendererExists,
-        responseData,
-        suggestInstance = this.suggestCreate(suggestOptions);
-
-    this.suggestElement
-        .on('suggestresponse', function(e, data, renderer) {
-            responseTriggered = true;
-            rendererExists = (renderer && jQuery.type(renderer) === 'function');
-            responseData = data;
-        })
-        .parent()
-        .on('suggestresponse', function() {
-            responcePropagationStopped = false;
-        });
-    suggestInstance._processResponse($.Event('response'), [this.uiHash.item], testContext);
-
-    assertTrue(responseTriggered);
-    assertTrue(rendererExists);
-    assertEquals(responseData, [this.uiHash.item]);
-    assertFalse(responcePropagationStopped);
-    assertEquals(suggestInstance.dropdown.html(), '<div>test</div>');
-
-    suggestInstance.dropdown.empty();
-    this.suggestElement
-        .on('suggestresponse.returnfalse', function() {
-            return false;
-        });
-    responcePropagationStopped = true;
-
-    suggestInstance._processResponse($.Event('response'), [this.uiHash.item], testContext);
-
-    assertTrue(responcePropagationStopped);
-    assertFalse(suggestInstance.dropdown.children().tength > 0);
-};
-SuggestTest.prototype.testSource = function() {
-    var sourceArray = [this.uiHash.item],
-        sourceUrl = 'www.test.url',
-        sourceFuncExecuted = false,
-        responseExecuted = false,
-        responseItems = null,
-        sourceFuncTerm = "",
-        sourceFuncResponse = null,
-        ajaxData = '',
-        ajaxUrl = '',
-        sourceFunc = function(term, response) {
-            sourceFuncExecuted = true;
-            sourceFuncTerm = term;
-            sourceFuncResponse = (response && jQuery.type(response) === 'function');
-        },
-        response = function (items) {
-            responseExecuted = true;
-            responseItems = items;
-        };
-
-    var suggestInstance = this.suggestCreate({
-        source: sourceArray
-    });
-
-    suggestInstance._source('test', response);
-
-    assertTrue(responseExecuted);
-    assertEquals(responseItems, sourceArray);
-    this.suggestDestroy();
-
-    responseExecuted = false;
-    responseItems = null;
-
-    suggestInstance = this.suggestCreate({
-        source: sourceUrl,
-        ajaxOptions: {
-            beforeSend: function(xhr, settings) {
-                xhr.abort();
-                ajaxData = settings.data;
-                ajaxUrl = settings.url;
-                settings.success(sourceArray);
-            }
-        },
-        termAjaxArgument: 'test'
-    });
-    suggestInstance._source('test', response);
-
-    assertTrue(responseExecuted);
-    assertEquals(responseItems, sourceArray);
-    assertEquals(ajaxData, 'test=test');
-    assertEquals(ajaxUrl, sourceUrl);
-    this.suggestDestroy();
-
-    responseExecuted = false;
-    responseItems = null;
-
-    suggestInstance = this.suggestCreate({
-        source: sourceFunc
-    });
-    suggestInstance._source('test', response);
-
-    assertTrue(sourceFuncExecuted);
-    assertEquals(sourceFuncTerm, 'test');
-    assertTrue(sourceFuncResponse);
-};
-SuggestTest.prototype.testAbortSearch = function() {
-    var searchAborted = false,
-        suggestInstance = this.suggestCreate();
-
-    this.suggestElement.addClass(suggestInstance.options.loadingClass);
-    suggestInstance._xhr = {
-        abort: function() {
-            searchAborted = true;
-        }
-    };
-
-    suggestInstance._abortSearch();
-
-    assertFalse(this.suggestElement.hasClass(suggestInstance.options.loadingClass));
-    assertTrue(searchAborted);
-};
-SuggestTest.prototype.testShowAll = function() {
-    var searchAborted,
-        showAllTerm,
-        showAllContext,
-        suggestInstance = this.suggestCreate();
-    suggestInstance._abortSearch = function() {
-        searchAborted = true;
-    };
-    suggestInstance._search = function(e, term, context) {
-        showAllTerm = term;
-        showAllContext = context;
-    };
-
-    suggestInstance._showAll(jQuery.Event('showAll'));
-
-    assertTrue(searchAborted);
-    assertEquals(showAllTerm, '');
-    assertEquals(showAllContext, {_allShown: true});
-};
-SuggestTest.prototype.testAddRecent = function() {
-    var recentItems = [
-            {id: 2, label: 'Test Label 2'},
-            {id: 3, label: 'Test Label 3'}
-        ],
-        suggestInstance = this.suggestCreate();
-
-    suggestInstance._recentItems = recentItems;
-    suggestInstance.options.storageKey = 'jsTestDriver-test-suggest-recent';
-    suggestInstance._addRecent(this.uiHash.item);
-
-    recentItems.unshift(this.uiHash.item);
-    assertEquals(recentItems, suggestInstance._recentItems);
-    if(window.localStorage) {
-        assertEquals(localStorage.getItem(suggestInstance.options.storageKey), JSON.stringify(recentItems));
-    }
-
-    suggestInstance._addRecent(this.uiHash.item);
-    assertEquals(recentItems, suggestInstance._recentItems);
-    if(window.localStorage) {
-        assertEquals(localStorage.getItem(suggestInstance.options.storageKey), JSON.stringify(recentItems));
-    }
-
-    suggestInstance.options.storageLimit = 1;
-    var newRecentItem = {id: 4, label: 'Test Label 4'};
-    suggestInstance._addRecent(newRecentItem);
-
-    assertEquals([newRecentItem], suggestInstance._recentItems);
-    if(window.localStorage) {
-        assertEquals(localStorage.getItem(suggestInstance.options.storageKey), JSON.stringify([newRecentItem]));
-        localStorage.removeItem(suggestInstance.options.storageKey);
-    }
-};
-SuggestTest.prototype.testRenderMultiselect = function() {
-    var suggestOptions = {
-            multiselect: true,
-            multiSuggestWrapper: '<div id="test-multisuggest-wrapper" data-role="parent-choice-element"></div>'
-        },
-        suggestInstance = this.suggestCreate(suggestOptions);
-
-    assertTrue(this.suggestElement.closest('[data-role="parent-choice-element"]').is('#test-multisuggest-wrapper'));
-    assertTrue(suggestInstance.elementWrapper.is('#test-multisuggest-wrapper'));
-};
-SuggestTest.prototype.testGetOptions = function() {
-    var suggestInstance = this.suggestCreate();
-
-    assertFalse(suggestInstance._getOptions().length > 0);
-
-    var option = jQuery('<option></option>');
-    suggestInstance.valueField.append(option);
-    assertTrue(suggestInstance._getOptions().is(option));
-};
-SuggestTest.prototype.testFilterSelected = function() {
-    var items = [this.uiHash.item, {id: 2, label: 'Test Label2'}],
-        suggestInstance = this.suggestCreate();
-
-    suggestInstance.valueField.append('<option value="2">Test Label2</option>');
-    assertEquals(suggestInstance._filterSelected(items), [this.uiHash.item]);
-};
-SuggestTest.prototype.testCreateOption = function() {
-    var suggestInstance = this.suggestCreate();
-
-    var option = suggestInstance._createOption(this.uiHash.item);
-    assertEquals(option.val(), "1");
-    assertEquals(option.prop('selected'), true);
-    assertEquals(option.text(), "Test Label");
-    assertNotUndefined(option.data('renderedOption'));
-};
-SuggestTest.prototype.testAddOption = function() {
-    var selectTarget = jQuery('<div />'),
-        event = jQuery.Event('add'),
-        suggestInstance = this.suggestCreate();
-
-    event.target = selectTarget[0];
-    suggestInstance._addOption(event, this.uiHash.item);
-
-    var option = suggestInstance.valueField.find('option[value=' + this.uiHash.item.id + ']');
-    assertTrue(option.length > 0);
-    assertTrue(option.data('selectTarget').is(selectTarget));
-};
-SuggestTest.prototype.testGetOption = function() {
-    var suggestInstance = this.suggestCreate();
-
-    assertFalse(suggestInstance._getOption(this.uiHash.item).length > 0);
-
-    var option = jQuery('<option value="1">Test Label</option>');
-    suggestInstance.valueField.append(option);
-    assertTrue(suggestInstance._getOption(this.uiHash.item).length > 0);
-    assertTrue(suggestInstance._getOption(option).length > 0);
-};
-SuggestTest.prototype.testRemoveLastAdded = function() {
-    var suggestInstance = this.suggestCreate({multiselect: true});
-
-    suggestInstance._addOption({}, this.uiHash.item);
-    assertTrue(suggestInstance.valueField.find('option').length > 0);
-    suggestInstance._removeLastAdded();
-    assertFalse(suggestInstance.valueField.find('option').length > 0);
-};
-SuggestTest.prototype.testRemoveOption = function() {
-    var selectTarget = jQuery('<div />'),
-        event = jQuery.Event('select'),
-        suggestInstance = this.suggestCreate({multiselect: true});
-
-    selectTarget.addClass(suggestInstance.options.selectedClass);
-    event.target = selectTarget[0];
-
-    suggestInstance._addOption(event, this.uiHash.item);
-    assertTrue(suggestInstance.valueField.find('option').length > 0);
-    suggestInstance.removeOption(event, this.uiHash.item);
-    assertFalse(suggestInstance.valueField.find('option').length > 0);
-    assertFalse(selectTarget.hasClass(suggestInstance.options.selectedClass));
-};
-SuggestTest.prototype.testRenderOption = function() {
-    var suggestInstance = this.suggestCreate(),
-        choiceTmpl;
-
-    suggestInstance.elementWrapper = jQuery('<div />').appendTo('body');
-
-    choiceTmpl = mageTemplate(suggestInstance.options.choiceTemplate, {
-        text: this.uiHash.item.label
-    });
-
-    var testOption = jQuery(choiceTmpl),
-        option = suggestInstance._renderOption(this.uiHash.item);
-
-    assertTrue(option.next().is(suggestInstance.elementWrapper));
-    assertEquals(jQuery('<div />').append(testOption).html(), jQuery('<div />').append(option).html());
-};
diff --git a/dev/tests/js/JsTestDriver/testsuite/mage/suggest/tree-suggest-test.js b/dev/tests/js/JsTestDriver/testsuite/mage/suggest/tree-suggest-test.js
deleted file mode 100644
index 2a63c6953ef87c493357894a38a1643509dd5751..0000000000000000000000000000000000000000
--- a/dev/tests/js/JsTestDriver/testsuite/mage/suggest/tree-suggest-test.js
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
-
-TreeSuggestTest = TestCase('TreeSuggestTest');
-TreeSuggestTest.prototype.setUp = function() {
-    /*:DOC += <input name="test-suggest" id="tree-suggest" />*/
-    this.suggestElement = jQuery('#tree-suggest');
-};
-TreeSuggestTest.prototype.tearDown = function() {
-    this.treeSuggestDestroy();
-};
-TreeSuggestTest.prototype.treeSuggestDestroy = function() {
-    if(this.suggestElement.data('treeSuggest')) {
-        this.suggestElement.treeSuggest('destroy');
-    }
-};
-TreeSuggestTest.prototype.treeSuggestCreate = function(options, element) {
-    return (element || this.suggestElement).treeSuggest(options || {} ).data('treeSuggest');
-};
-TreeSuggestTest.prototype.uiHash = {
-    item: {
-        id: 1,
-        label: 'Test Label'
-    }
-};
-TreeSuggestTest.prototype.stub = function(instance, methodName, retVal) {
-    var d = $.Deferred();
-    if(instance && instance[methodName]) {
-        instance[methodName] = function() {
-            d.resolve(arguments);
-            if(retVal) {
-                return retVal;
-            }
-        };
-    }
-    return d.promise();
-};
-
-TreeSuggestTest.prototype.testInit = function() {
-    var treeSuggestInstance = this.treeSuggestCreate();
-    assertTrue(this.suggestElement.is(':mage-treeSuggest'));
-    assertEquals(treeSuggestInstance.widgetEventPrefix, 'suggest');
-};
-
-TreeSuggestTest.prototype.testClose = function() {
-    var treeSuggestInstance = this.treeSuggestCreate(),
-        elementFocused = false;
-    treeSuggestInstance.element.on('focus', function() {
-        elementFocused = true;
-    });
-    treeSuggestInstance.dropdown.text('test').show();
-    treeSuggestInstance.close();
-    assertEquals(treeSuggestInstance.dropdown.text(), '');
-    assertTrue(treeSuggestInstance.dropdown.is(':hidden'));
-
-    treeSuggestInstance.dropdown.text('test').show();
-    treeSuggestInstance.close(jQuery.Event('select'));
-    assertEquals(treeSuggestInstance.dropdown.text(), '');
-    assertTrue(treeSuggestInstance.dropdown.is(':hidden'));
-
-    treeSuggestInstance.dropdown.text('test').show();
-    treeSuggestInstance.close(jQuery.Event('select_tree_node'));
-    assertEquals(treeSuggestInstance.dropdown.text(), 'test');
-    assertTrue(treeSuggestInstance.dropdown.is(':visible'));
-};
-TreeSuggestTest.prototype.testFilterSelected = function() {
-    var treeSuggestInstance = this.treeSuggestCreate();
-    assertEquals(treeSuggestInstance._filterSelected([this.uiHash.item], {_allShown: true}), [this.uiHash.item]);
-};
diff --git a/dev/tests/js/jasmine/tests/lib/mage/backend/suggest.test.js b/dev/tests/js/jasmine/tests/lib/mage/backend/suggest.test.js
new file mode 100644
index 0000000000000000000000000000000000000000..9460bcaa5636e42bb8e853533ee5aaaf82d50daa
--- /dev/null
+++ b/dev/tests/js/jasmine/tests/lib/mage/backend/suggest.test.js
@@ -0,0 +1,461 @@
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+/* eslint-disable max-nested-callbacks */
+define([
+    'jquery',
+    'mage/backend/suggest'
+], function ($) {
+    'use strict';
+
+    describe('mage/backend/suggest', function () {
+        var suggestSelector = '#suggest';
+
+        beforeEach(function () {
+            var $suggest = $('<input name="test-suggest" id="suggest" />');
+
+            $('body').append($suggest);
+        });
+
+        afterEach(function () {
+            $(suggestSelector).remove();
+            $(suggestSelector).suggest('destroy');
+        });
+
+        it('Check that suggest inited', function () {
+            var $suggest = $(suggestSelector).suggest();
+
+            expect($suggest.is(':mage-suggest')).toBe(true);
+        });
+
+        it('Check suggest create', function () {
+            var options = {
+                    controls: {
+                        selector: '.test',
+                        eventsMap: {
+                            focus: ['testfocus'],
+                            blur: ['testblur'],
+                            select: ['testselect']
+                        }
+                    },
+                    showRecent: true,
+                    storageKey: 'test-suggest-recent',
+                    multiselect: true
+                },
+                recentItems = [{
+                        id: '1',
+                        label: 'TestLabel1'
+                    },
+                    {
+                        id: '2',
+                        label: 'TestLabel2'
+                    }
+                ],
+                nonSelectedItem = {
+                    id: '',
+                    label: ''
+                },
+                suggestInstance;
+
+            if (window.localStorage) {
+                localStorage.setItem(options.storageKey, JSON.stringify(recentItems));
+            }
+
+            suggestInstance = $(suggestSelector).suggest(options).data('mage-suggest');
+
+            expect(suggestInstance._term).toBe(null);
+            expect(suggestInstance._nonSelectedItem).toEqual(nonSelectedItem);
+            expect(suggestInstance._renderedContext).toBe(null);
+            expect(suggestInstance._selectedItem).toEqual(nonSelectedItem);
+            expect(suggestInstance._control).toEqual(suggestInstance.options.controls);
+            expect(suggestInstance._recentItems).toEqual(window.localStorage ? recentItems : []);
+            expect(suggestInstance.valueField.is(':hidden')).toBe(true);
+
+            if (window.localStorage) {
+                localStorage.removeItem(options.storageKey);
+            }
+        });
+
+        it('Check suggest render', function () {
+            var options = {
+                    dropdownWrapper: '<div class="wrapper-test"></div>',
+                    className: 'test-suggest',
+                    inputWrapper: '<div class="test-input-wrapper"></div>'
+                },
+                suggestInstance = $(suggestSelector).suggest(options).data('mage-suggest');
+
+            suggestInstance._render();
+
+            expect(suggestInstance.dropdown.hasClass('wrapper-test')).toBe(true);
+            expect(suggestInstance.dropdown.is(':hidden')).toBe(true);
+            expect(suggestInstance.element.closest('.test-input-wrapper').size()).toBeGreaterThan(0);
+            expect(suggestInstance.element.closest('.' + options.className).size()).toBeGreaterThan(0);
+            expect(suggestInstance.element.attr('autocomplete')).toBe('off');
+
+            options.appendMethod = 'before';
+            $(suggestSelector).suggest('destroy');
+            suggestInstance = $(suggestSelector).suggest(options).data('mage-suggest');
+            suggestInstance._render();
+            expect(suggestInstance.element.prev().is(suggestInstance.dropdown)).toBe(true);
+
+            options.appendMethod = 'after';
+            $(suggestSelector).suggest('destroy');
+            suggestInstance = $(suggestSelector).suggest(options).data('mage-suggest');
+            suggestInstance._render();
+            expect(suggestInstance.element.next().is(suggestInstance.dropdown)).toBe(true);
+        });
+
+        it('Check suggest createValueField', function () {
+            var suggestInstance = $(suggestSelector).suggest().data('mage-suggest'),
+                valueField = suggestInstance._createValueField();
+
+            expect(valueField.is('input')).toBe(true);
+            expect(valueField.is(':hidden')).toBe(true);
+
+            $(suggestSelector).suggest('destroy');
+            suggestInstance = $(suggestSelector).suggest({
+                multiselect: true
+            }).data('mage-suggest');
+            valueField = suggestInstance._createValueField();
+
+            expect(valueField.is('select')).toBe(true);
+            expect(valueField.is(':hidden')).toBe(true);
+            expect(valueField.attr('multiple')).toBe('multiple');
+        });
+
+        it('Check suggest prepareValueField', function () {
+            var $suggest = $(suggestSelector).suggest(),
+                suggestInstance = $suggest.data('mage-suggest'),
+                suggestName = $suggest.attr('name');
+
+            suggestInstance._prepareValueField();
+
+            expect(suggestInstance.valueField).not.toBe(true);
+            expect(suggestInstance.element.prev().is(suggestInstance.valueField)).toBe(true);
+            expect(suggestInstance.element.attr('name')).toBe(undefined);
+            expect(suggestInstance.valueField.attr('name')).toBe(suggestName);
+        });
+
+        it('Check suggest destroy', function () {
+            var options = {
+                    inputWrapper: '<div class="test-input-wrapper"></div>',
+                    valueField: null
+                },
+                $suggest = $(suggestSelector).suggest(options),
+                suggestInstance = $suggest.data('mage-suggest'),
+                suggestName = $suggest.attr('name');
+
+            expect(suggestInstance.dropdown).not.toBe(undefined);
+            expect(suggestInstance.valueField).not.toBe(undefined);
+            expect(suggestName).toBe(undefined);
+
+            $suggest.suggest('destroy');
+
+            expect($suggest.closest('.test-input-wrapper').length).toBe(0);
+            expect($suggest.attr('autocomplete')).toBe(undefined);
+            expect($suggest.attr('name')).toBe(suggestInstance.valueField.attr('name'));
+            expect(suggestInstance.valueField.parents('html').length).not.toBeGreaterThan(0);
+            expect(suggestInstance.dropdown.parents('html').length).not.toBeGreaterThan(0);
+        });
+
+        it('Check suggest value', function () {
+            var value = 'test-value',
+                suggestInstance, suggestDivInstance;
+
+            $(suggestSelector).val(value);
+            $('body').append('<div id="suggest-div">' + value + '</div>');
+
+            suggestInstance = $(suggestSelector).suggest().data('mage-suggest');
+            suggestDivInstance = $('#suggest-div').suggest().data('mage-suggest');
+
+            expect(suggestInstance._value()).toBe(value);
+            expect(suggestDivInstance._value()).toBe(value);
+            $('#suggest-div').remove();
+        });
+
+        it('Check suggest bind', function () {
+            var eventIsBinded = false,
+                options = {
+                    events: {
+                        /** Stub function */
+                        click: function () {
+                            eventIsBinded = true;
+                        }
+                    }
+                },
+                $suggest = $(suggestSelector).suggest(options);
+
+            $suggest.trigger('click');
+            expect(eventIsBinded).toBe(true);
+        });
+
+        it('Check suggest focus/blur', function () {
+            var suggestInstance = $(suggestSelector).suggest().data('mage-suggest'),
+                uiHash = {
+                    item: {
+                        id: 1,
+                        label: 'Test Label'
+                    }
+                };
+
+            expect(suggestInstance._focused).toBe(undefined);
+            expect(suggestInstance.element.val()).toBe('');
+
+            suggestInstance._focusItem($.Event('focus'), uiHash);
+
+            expect(suggestInstance._focused).toEqual(uiHash.item);
+            expect(suggestInstance.element.val()).toBe(uiHash.item.label);
+
+            suggestInstance._blurItem();
+
+            expect(suggestInstance._focused).toBe(null);
+            expect(suggestInstance.element.val()).toBe('');
+        });
+
+        it('Check suggest select', function () {
+            var suggestInstance = $(suggestSelector).suggest().data('mage-suggest'),
+                uiHash = {
+                    item: {
+                        id: 1,
+                        label: 'Test Label'
+                    }
+                };
+
+            suggestInstance._focused = suggestInstance._term = suggestInstance._selectedItem = null;
+            suggestInstance.valueField.val('');
+            suggestInstance._selectItem($.Event('select'));
+
+            expect(suggestInstance._selectedItem).toBe(null);
+            expect(suggestInstance._term).toBe(null);
+            expect(suggestInstance.valueField.val()).toBe('');
+            expect(suggestInstance.dropdown.is(':hidden')).toBe(true);
+
+            suggestInstance._focused = uiHash.item;
+            suggestInstance._selectItem($.Event('select'));
+
+            expect(suggestInstance._selectedItem).toEqual(suggestInstance._focused);
+            expect(suggestInstance._term).toBe(suggestInstance._focused.label);
+            expect(suggestInstance.valueField.val()).toBe(suggestInstance._focused.id.toString());
+            expect(suggestInstance.dropdown.is(':hidden')).toBe(true);
+        });
+
+        it('Check suggest multiselect', function () {
+            var suggestInstance = $(suggestSelector).suggest({
+                    multiselect: true
+                }).data('mage-suggest'),
+                uiHash = {
+                    item: {
+                        id: 1,
+                        label: 'Test Label'
+                    }
+                },
+                event = $.Event('select'),
+                selectedElement = $('<div/>');
+
+            event.target = selectedElement[0];
+            suggestInstance._focused = suggestInstance._term = suggestInstance._selectedItem = null;
+            suggestInstance.valueField.val('');
+            suggestInstance._selectItem(event);
+
+            expect(suggestInstance._selectedItem).toBe(null);
+            expect(suggestInstance._term).toBe(null);
+            expect(suggestInstance.valueField.find('option').length).not.toBeGreaterThan(0);
+            expect(suggestInstance.dropdown.is(':hidden')).toBe(true);
+
+            suggestInstance._focused = uiHash.item;
+            suggestInstance._selectItem(event);
+
+            expect(suggestInstance._selectedItem).toEqual(suggestInstance._focused);
+            expect(suggestInstance._term).toBe('');
+            expect(suggestInstance._getOption(suggestInstance._focused).length).toBeGreaterThan(0);
+            expect(selectedElement.hasClass(suggestInstance.options.selectedClass)).toBe(true);
+            expect(suggestInstance.dropdown.is(':hidden')).toBe(true);
+
+            suggestInstance._selectItem(event);
+            expect(suggestInstance._selectedItem).toEqual(suggestInstance._nonSelectedItem);
+            expect(suggestInstance._term).toBe('');
+            expect(suggestInstance._getOption(suggestInstance._focused).length).not.toBeGreaterThan(0);
+            expect(selectedElement.hasClass(suggestInstance.options.selectedClass)).toBe(false);
+            expect(suggestInstance.dropdown.is(':hidden')).toBe(true);
+        });
+
+        it('Check suggest reset value', function () {
+            var suggestInstance = $(suggestSelector).suggest().data('mage-suggest');
+
+            suggestInstance.valueField.val('test');
+            expect(suggestInstance.valueField.val()).toBe('test');
+            suggestInstance._resetSuggestValue();
+            expect(suggestInstance.valueField.val()).toBe(suggestInstance._nonSelectedItem.id);
+        });
+
+        it('Check suggest reset multiselect value', function () {
+            var suggestInstance = $(suggestSelector).suggest({
+                    multiselect: true
+                }).data('mage-suggest'),
+                uiHash = {
+                    item: {
+                        id: 1,
+                        label: 'Test Label'
+                    }
+                },
+                event = $.Event('select');
+
+            event.target = $('<div/>')[0];
+            suggestInstance._focused = uiHash.item;
+
+            suggestInstance._selectItem(event);
+            suggestInstance._resetSuggestValue();
+
+            expect(suggestInstance.valueField.val() instanceof Array).toBe(true);
+            expect(suggestInstance.valueField.val()[0]).not.toBe(undefined);
+            expect(suggestInstance.valueField.val()[0]).toBe(uiHash.item.id.toString());
+        });
+
+        it('Check suggest read item data', function () {
+            var suggestInstance = $(suggestSelector).suggest().data('mage-suggest'),
+                testElement = $('<div/>');
+
+            expect(suggestInstance._readItemData(testElement)).toEqual(suggestInstance._nonSelectedItem);
+            testElement.data('suggestOption', 'test');
+            expect(suggestInstance._readItemData(testElement)).toEqual('test');
+        });
+
+        it('Check suggest template', function () {
+            var suggestInstance = $(suggestSelector).suggest({
+                    template: '<div><%= data.test %></div>'
+                }).data('mage-suggest'),
+                tmpl = suggestInstance.templates[suggestInstance.templateName],
+                html = $('<div/>').append(tmpl({
+                    data: {
+                        test: 'test'
+                    }
+                })).html();
+
+            expect(html).toEqual('<div>test</div>');
+            suggestInstance.destroy();
+            $('body').append('<script type="text/template" id="test-template">' +
+                '<div><%= data.test %></div>' +
+                '</script>');
+
+            suggestInstance = $(suggestSelector).suggest({
+                template: '#test-template'
+            }).data('mage-suggest');
+            tmpl = suggestInstance.templates[suggestInstance.templateName];
+            html = $('<div />').append(tmpl({
+                data: {
+                    test: 'test'
+                }
+            })).html();
+
+            expect(html).toEqual('<div>test</div>');
+            $('#test-template').remove();
+        });
+
+        it('Check suggest dropdown visibility', function () {
+            var suggestInstance = $(suggestSelector).suggest().data('mage-suggest');
+
+            suggestInstance.dropdown.hide();
+            expect(suggestInstance.isDropdownShown()).toBe(false);
+            expect(suggestInstance.dropdown.is(':hidden')).toBe(true);
+
+            suggestInstance.dropdown.show();
+            expect(suggestInstance.isDropdownShown()).toBe(true);
+            expect(suggestInstance.dropdown.is(':visible')).toBe(true);
+        });
+
+        it('Check suggest create option', function () {
+            var suggestInstance = $(suggestSelector).suggest().data('mage-suggest'),
+                uiHash = {
+                    item: {
+                        id: 1,
+                        label: 'Test Label'
+                    }
+                },
+                option = suggestInstance._createOption(uiHash.item);
+
+            expect(option.val()).toBe('1');
+            expect(option.prop('selected')).toBe(true);
+            expect(option.text()).toBe('Test Label');
+            expect(option.data('renderedOption')).not.toBe(undefined);
+        });
+
+        it('Check suggest add option', function () {
+            var suggestInstance = $(suggestSelector).suggest().data('mage-suggest'),
+                uiHash = {
+                    item: {
+                        id: 1,
+                        label: 'Test Label'
+                    }
+                },
+                selectTarget = $('<div/>'),
+                event = $.Event('add'),
+                option;
+
+            event.target = selectTarget[0];
+            suggestInstance._addOption(event, uiHash.item);
+            option = suggestInstance.valueField.find('option[value=' + uiHash.item.id + ']');
+
+            expect(option.length).toBeGreaterThan(0);
+            expect(option.data('selectTarget').is(selectTarget)).toBe(true);
+        });
+
+        it('Check suggest get option', function () {
+            var suggestInstance = $(suggestSelector).suggest().data('mage-suggest'),
+                uiHash = {
+                    item: {
+                        id: 1,
+                        label: 'Test Label'
+                    }
+                },
+                option = $('<option value="1">Test Label</option>');
+
+            expect(suggestInstance._getOption(uiHash.item).length).not.toBeGreaterThan(0);
+
+            suggestInstance.valueField.append(option);
+            expect(suggestInstance._getOption(uiHash.item).length).toBeGreaterThan(0);
+            expect(suggestInstance._getOption(option).length).toBeGreaterThan(0);
+        });
+
+        it('Check suggest last added', function () {
+            var suggestInstance = $(suggestSelector).suggest({
+                    multiselect: true
+                }).data('mage-suggest'),
+                uiHash = {
+                    item: {
+                        id: 1,
+                        label: 'Test Label'
+                    }
+                };
+
+            suggestInstance._addOption({}, uiHash.item);
+            expect(suggestInstance.valueField.find('option').length).toBeGreaterThan(0);
+            suggestInstance._removeLastAdded();
+            expect(suggestInstance.valueField.find('option').length).not.toBeGreaterThan(0);
+        });
+
+        it('Check suggest remove option', function () {
+            var suggestInstance = $(suggestSelector).suggest({
+                    multiselect: true
+                }).data('mage-suggest'),
+                uiHash = {
+                    item: {
+                        id: 1,
+                        label: 'Test Label'
+                    }
+                },
+                selectTarget = $('<div/>'),
+                event = $.Event('select');
+
+            selectTarget.addClass(suggestInstance.options.selectedClass);
+            event.target = selectTarget[0];
+
+            suggestInstance._addOption(event, uiHash.item);
+            expect(suggestInstance.valueField.find('option').length).toBeGreaterThan(0);
+            suggestInstance.removeOption(event, uiHash.item);
+            expect(suggestInstance.valueField.find('option').length).not.toBeGreaterThan(0);
+            expect(selectTarget.hasClass(suggestInstance.options.selectedClass)).toBe(false);
+        });
+    });
+});
diff --git a/dev/tests/js/jasmine/tests/lib/mage/backend/tree-suggest.test.js b/dev/tests/js/jasmine/tests/lib/mage/backend/tree-suggest.test.js
new file mode 100644
index 0000000000000000000000000000000000000000..b116fc70588088d88b3ddd9cebbd6719531762a8
--- /dev/null
+++ b/dev/tests/js/jasmine/tests/lib/mage/backend/tree-suggest.test.js
@@ -0,0 +1,52 @@
+/**
+ * Copyright © Magento, Inc. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+/* eslint-disable max-nested-callbacks */
+define([
+    'jquery',
+    'mage/backend/tree-suggest'
+], function ($) {
+    'use strict';
+
+    describe('mage/backend/tree-suggest', function () {
+        var treeSuggestSelector = '#tree-suggest';
+
+        beforeEach(function () {
+            var $treeSuggest = $('<input name="test-tree-suggest" id="tree-suggest" />');
+
+            $('body').append($treeSuggest);
+        });
+
+        afterEach(function () {
+            $(treeSuggestSelector).remove();
+            $(treeSuggestSelector).treeSuggest('destroy');
+        });
+
+        it('Check that treeSuggest inited', function () {
+            var $treeSuggest = $(treeSuggestSelector).treeSuggest(),
+                treeSuggestInstance = $treeSuggest.data('mage-treeSuggest');
+
+            expect($treeSuggest.is(':mage-treeSuggest')).toBe(true);
+            expect(treeSuggestInstance.widgetEventPrefix).toBe('suggest');
+        });
+
+        it('Check treeSuggest filter', function () {
+            var treeSuggestInstance = $(treeSuggestSelector).treeSuggest().data('mage-treeSuggest'),
+                uiHash = {
+                    item: {
+                        id: 1,
+                        label: 'Test Label'
+                    }
+                };
+
+            expect(treeSuggestInstance._filterSelected(
+                [uiHash.item],
+                {
+                    _allShown: true
+                }
+            )).toEqual([uiHash.item]);
+        });
+    });
+});