Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.10.2015, 22:41
Новичок на форуме
Отправить личное сообщение для StCom Посмотреть профиль Найти все сообщения от StCom
 
Регистрация: 29.10.2015
Сообщений: 1

Помогите с юнит тестом директивы
Есть след директива:
angular.module( 'myDirectives', [] )

.directive('inline', ['$http', function ($http) {
  return {
    template: '<span ng-switch on="edit" >' +
              '<span ng-switch-default>{{value}}  <small><span class="glyphicon glyphicon-pencil"></span></small></span>' +
              '<input ng-switch-when="true" type="text" ng-model="$parent.value"/>' +
              '</span>',
    restrict: 'A',
    scope: {
      inline: '='
    },
    link: function (scope, element, attribs) {
      scope.value = scope.inline;

      /* watch for changes from the controller */
      scope.$watch('inline', function (val) {
        scope.value = val;
      });
console.log(element);
      /* enable inline editing functionality */
      var enablingEditing = function () {
        scope.edit = true;

        setTimeout(function () {
          element.children().children('input')[0].focus();
          element.children().children('input').bind('blur', function (e) {
            scope.$apply(function () {
              disablingEditing();
            });
          });
        }, 100);
      };


      /* disable inline editing functionality */
      var disablingEditing = function () {
        scope.edit = false;
        scope.inline = scope.value;
        console.log(scope.inline);
        if (scope.inline){
            $http.put("api.php", scope.inline).success(function (data, status, headers, config) {  })
        }
      };


      /* set up the default */
      disablingEditing();


      /* when the element with the inline attribute is clicked, enable editing */
      element.bind('click', function (e) {

        if ((e.target.nodeName.toLowerCase() === 'span') || (e.target.nodeName.toLowerCase() === 'img')) {
          scope.$apply(function () { // bind to scope
            enablingEditing();
          });
        }
      });

      /* allow editing to be disabled by pressing the enter key */
      element.bind('keypress', function (e) {

        if (e.target.nodeName.toLowerCase() != 'input') return;

        var keyCode = (window.event) ? e.keyCode : e.which;

        if (keyCode === 13) {
          scope.$apply(function () { 
            disablingEditing();
          });
        }
      });
    }
  }
}]);


Суть ее в создании инлайн редактируемой строки <span inline="value"></span> и отправки PUT-запроса при ее изменении

Никак не выходит написать юнит тест для нее, помогите пож покрыть код
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста с тестом!!! Kryloff Ваши сайты и скрипты 4 29.12.2014 01:19
Кто как оформляет юнит тесты kobezzza Общие вопросы Javascript 6 26.11.2012 00:31
Помогите пожалуйста с тестом alex-chrono Общие вопросы Javascript 0 14.11.2012 19:23
Помогите с тестом ! Владимир01 Общие вопросы Javascript 36 14.02.2011 23:12
Помогите! Многоуровневые вкладки! sergeeeeee Элементы интерфейса 2 02.08.2010 23:50