https://github.com/angular/angular
Raw File
Tip revision: 5942fb843fcc9ba92de9ca30726b6e11afb112f1 authored by Joey Perrott on 09 December 2020, 19:57:55 UTC
release: cut the v11.1.0-next.2 release
Tip revision: 5942fb8
simple-creation.3.spec.ts
import { docRegionEvent } from './simple-creation.3';

describe('simple-creation.3', () => {
  let triggerMousemove;
  let mockConsole;
  let input;
  let mockDocument;

  beforeEach(() => {
    mockConsole = {log: jasmine.createSpy('log')};
    input = {
      addEventListener: jasmine
        .createSpy('addEventListener')
        .and.callFake((eventName, cb) => {
          if (eventName === 'mousemove') {
            triggerMousemove = cb;
          }
        }),
      removeEventListener: jasmine.createSpy('removeEventListener'),
    };
    mockDocument = { getElementById: () => input };
  });

  it('should log coords when subscribing', () => {
    docRegionEvent(mockConsole, mockDocument);

    expect(mockConsole.log).not.toHaveBeenCalled();

    triggerMousemove({ clientX: 50, clientY: 50 });
    triggerMousemove({ clientX: 30, clientY: 50 });
    triggerMousemove({ clientX: 50, clientY: 30 });
    expect(mockConsole.log).toHaveBeenCalledTimes(3);
    expect(mockConsole.log.calls.allArgs()).toEqual([
      ['Coords: 50 X 50'],
      ['Coords: 30 X 50'],
      ['Coords: 50 X 30']
    ]);
  });

  it('should call unsubscribe when clientX and clientY are below < 40 ', () => {
    docRegionEvent(mockConsole, mockDocument);

    expect(mockConsole.log).not.toHaveBeenCalled();

    // Ensure that we have unsubscribed.
    triggerMousemove({ clientX: 30, clientY: 30 });
    expect(input.removeEventListener).toHaveBeenCalledWith('mousemove', triggerMousemove, undefined);
    mockConsole.log.calls.reset();

    triggerMousemove({ clientX: 50, clientY: 50 });
    expect(mockConsole.log).not.toHaveBeenCalled();
  });
});
back to top