/*global describe, it, PreviewHelper */
/*global Search, CmsTestUtility, TestUtility, SampleData, assert*/
describe('Joomla controls', function() {
    'use strict';
    CmsTestUtility.controlSetUp();

    it('Search test', function() {

        // создаем тестовые данные
        var marginData = SampleData.getMargin();

        // создаем контрол, и добавляем ему тестовые данные. и настраиваем его любым другим способом
        var search = new Search();
        // тут заполняем контрол данными для тестирования.
        search.search.buttonPosition = 'left';
        // CSS-модель контрола можно заполнить данными с помощью TestUtility.applyCss(пример в ImageLinkCssTest)
        TestUtility.applyCss(search.search, marginData);

        //теперь можно вставить контрол в layout. для этого можно использовать default-темплейт, без лишних контролов
        var themeController = window.editor.themeController;
        themeController.addToControls("/controls/search", search);
        window.editor.templatesController.currentTemplate.BaseTemplate.body.items.push("/controls/search");

        CmsTestUtility.getPreviewAfterFullExport(function(error, previewDocument) {
            // получаем DOM-представление нашего контрола. Это уже именно HTML-код в результате выполнения PHP-кода темы
            // search.dataId в данном примере не обладает своей версткой, поэтому ищем search.search.dataId.
            // В других контролах искать корневой DOM-элемент контрола нужно в соответствии с их особенностями.
            var searchDom = $(PreviewHelper.getDataIdSelector(search.search.dataId), previewDocument);

            //тестируем DOM-модель. Например можно тестировать количество, иеархию его потомков, и аттрибутов,
            // в зависомости от значений его свойств - смотри тест ImageLinkHtmlTest
            assert.equal(1, searchDom.length); // проверяем что контрол вообще отобразился
            assert.equal(1, $('.input-prepend', searchDom).length); // проверяем результат установки buttonPosition

            //тестируем CSS-модель. Для примера смотрим  тест ImageLinkCssTest
            TestUtility.assertCssTrue(searchDom, marginData);
        });
    });
});