Example #1
0
    it('should not coalesque text nodes', () => {
      var el1 = el('<div>a</div>');
      var el2 = el('<div>b</div>');
      DOM.appendChild(el2, DOM.firstChild(el1));
      expect(DOM.childNodes(el2).length).toBe(2);

      var el2Clone = DOM.clone(el2);
      expect(DOM.childNodes(el2Clone).length).toBe(2);
    });
    it('should support from styles', inject([AnimationBuilder], animate => {
         var animateCss = animate.css();
         animateCss.setFromStyles({'backgroundColor': 'blue'});
         expect(animateCss.data.fromStyles).toBeDefined();

         var element = el('<div></div>');
         animateCss.start(element);

         expect(element.style.getPropertyValue('background-color')).toEqual('blue');
       }));
Example #3
0
    it('should select by attr name only once if the value is from the DOM', () => {
      matcher.addSelectables(s1 = CssSelector.parse('[some-decor]'), 1);

      var elementSelector = new CssSelector();
      var element = el('<div attr></div>');
      var empty = DOM.getAttribute(element, 'attr');
      elementSelector.addAttribute('some-decor', empty);
      matcher.match(elementSelector, selectableCollector);
      expect(matched).toEqual([s1[0], 1]);
    });
    it('should add classes', inject([AnimationBuilder], (animate) => {
         var animateCss = animate.css().addClass('one').addClass('two');
         var element = el('<div></div>');
         var runner = animateCss.start(element);

         expect(element).not.toHaveCssClass('one');
         expect(element).not.toHaveCssClass('two');

         runner.flush();

         expect(element).toHaveCssClass('one');
         expect(element).toHaveCssClass('two');
       }));
    it('should support duration and delay defined in CSS', inject([AnimationBuilder], (animate) => {
         var animateCss = animate.css();
         var element =
             el(`<div style="${DOM.getAnimationPrefix()}transition: 0.5s ease 250ms;"></div>`);
         var runner = animateCss.start(element);
         runner.flush();

         if (DOM.supportsAnimation()) {
           expect(runner.computedDelay).toBe(250);
           expect(runner.computedDuration).toBe(500);
         } else {
           expect(runner.computedDelay).toEqual(0);
           expect(runner.computedDuration).toEqual(0);
         }
       }));
    it('should support duration and delay', inject([AnimationBuilder], (animate) => {
         var animateCss = animate.css();
         animateCss.setDelay(100).setDuration(200);
         expect(animateCss.data.duration).toBe(200);
         expect(animateCss.data.delay).toBe(100);

         var element = el('<div></div>');
         var runner = animateCss.start(element);
         runner.flush();

         if (DOM.supportsAnimation()) {
           expect(runner.computedDelay).toBe(100);
           expect(runner.computedDuration).toBe(200);
         } else {
           expect(runner.computedDelay).toBe(0);
           expect(runner.computedDuration).toBe(0);
         }
       }));
Example #7
0
    it('should clone correctly', () => {
      var el1 = el('<div x="y">a<span>b</span></div>');
      var clone = DOM.clone(el1);

      expect(clone).not.toBe(el1);
      DOM.setAttribute(clone, 'test', '1');
      expect(stringifyElement(clone)).toEqual('<div test="1" x="y">a<span>b</span></div>');
      expect(DOM.getAttribute(el1, 'test')).toBeFalsy();

      var cNodes = DOM.childNodes(clone);
      var firstChild = cNodes[0];
      var secondChild = cNodes[1];
      expect(DOM.parentElement(firstChild)).toBe(clone);
      expect(DOM.nextSibling(firstChild)).toBe(secondChild);
      expect(DOM.isTextNode(firstChild)).toBe(true);

      expect(DOM.parentElement(secondChild)).toBe(clone);
      expect(DOM.nextSibling(secondChild)).toBeFalsy();
      expect(DOM.isElementNode(secondChild)).toBe(true);

    });
       inject([AnimationBuilder], (animate) => {
         var spyObject = new SpyObject();
         var callback = spyObject.spy('animationFinished');
         var runner = animate.css()
                          .addClass('one')
                          .addClass('two')
                          .setDuration(100)
                          .start(el('<div></div>'))
                          .onComplete(callback);

         expect(callback).not.toHaveBeenCalled();

         runner.flush();

         if (DOM.supportsAnimation()) {
           expect(callback).not.toHaveBeenCalled();

           runner.handleAnimationCompleted();

           expect(callback).toHaveBeenCalled();
         } else {
           expect(callback).toHaveBeenCalled();
         }
       }));