UNPKG

videogular2

Version:

Videogular is a video application framework for desktop and mobile powered by Angular 2.0

100 lines 15 kB
"use strict"; var vg_controls_1 = require("./vg-controls"); var vg_controls_hidden_1 = require('./../core/services/vg-controls-hidden'); var vg_api_1 = require("../core/services/vg-api"); var Observable_1 = require("rxjs/Observable"); require('rxjs/add/observable/fromEvent'); var vg_states_1 = require('../core/states/vg-states'); describe('Controls Bar', function () { var controls; var ref; var api; var hidden; beforeEach(function () { jasmine.clock().uninstall(); jasmine.clock().install(); api = new vg_api_1.VgAPI(); hidden = new vg_controls_hidden_1.VgControlsHidden(); ref = { nativeElement: { getAttribute: function (name) { return name; } } }; controls = new vg_controls_1.VgControls(api, ref, hidden); }); afterEach(function () { jasmine.clock().uninstall(); }); it('Should have been defined', function () { expect(controls).toBeTruthy(); }); it('Should listen for mouseenter and mouseleave events', function () { spyOn(Observable_1.Observable, 'fromEvent').and.callThrough(); var vgElem = document.createElement('vg-player'); api.registerElement(vgElem); controls.ngOnInit(); expect(Observable_1.Observable.fromEvent).toHaveBeenCalledWith(api.videogularElement, 'mousemove'); expect(Observable_1.Observable.fromEvent).toHaveBeenCalledWith(api.videogularElement, 'touchstart'); }); it('Should hide controls after view init', function () { spyOn(controls, 'hide').and.callFake(function () { }); controls.vgAutohide = true; controls.ngAfterViewInit(); expect(controls.hide).toHaveBeenCalled(); }); it('Should show controls after view init', function () { spyOn(controls, 'show').and.callFake(function () { }); controls.vgAutohide = false; controls.ngAfterViewInit(); expect(controls.show).toHaveBeenCalled(); }); it('Should show controls', function () { spyOn(window, 'clearTimeout').and.callFake(function () { }); spyOn(hidden, 'state').and.callFake(function () { }); controls.show(); expect(window.clearTimeout).toHaveBeenCalled(); expect(controls.hideControls).toBe(false); expect(hidden.state).toHaveBeenCalledWith(false); }); it('Should hide controls when is playing', function () { spyOn(hidden, 'state').and.callFake(function () { }); controls.vgAutohide = true; api.medias = [{ state: vg_states_1.VgStates.VG_PLAYING }]; controls.hide(); jasmine.clock().tick(3100); expect(controls.hideControls).toBe(true); expect(hidden.state).toHaveBeenCalledWith(true); }); it('Should not hide controls if player is paused', function () { controls.hideControls = false; controls.vgAutohide = false; controls.vgAutohide = true; api.medias = [{ state: vg_states_1.VgStates.VG_PAUSED }]; controls.hide(); jasmine.clock().tick(3100); expect(controls.hideControls).toBe(false); }); it('Should not hide controls if autohide is false', function () { controls.hideControls = false; controls.vgAutohide = false; controls.hide(); jasmine.clock().tick(3100); expect(controls.hideControls).toBe(false); }); it('Should start hiding controls if media is playing', function () { spyOn(controls, 'hide').and.callFake(function () { }); controls.vgAutohide = true; controls.onPlay(); expect(controls.hide).toHaveBeenCalled(); }); it('Should show controls if media is paused', function () { spyOn(hidden, 'state').and.callFake(function () { }); controls.vgAutohide = true; controls.onPause(); expect(controls.hideControls).toBe(false); expect(hidden.state).toHaveBeenCalledWith(false); }); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmctY29udHJvbHMuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInZnLWNvbnRyb2xzLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDRCQUF5QixlQUFlLENBQUMsQ0FBQTtBQUN6QyxtQ0FBK0IsdUNBQXVDLENBQUMsQ0FBQTtBQUV2RSx1QkFBb0IseUJBQXlCLENBQUMsQ0FBQTtBQUM5QywyQkFBeUIsaUJBQWlCLENBQUMsQ0FBQTtBQUUzQyxRQUFPLCtCQUErQixDQUFDLENBQUE7QUFDdkMsMEJBQXlCLDBCQUEwQixDQUFDLENBQUE7QUFFcEQsUUFBUSxDQUFDLGNBQWMsRUFBRTtJQUNyQixJQUFJLFFBQW1CLENBQUM7SUFDeEIsSUFBSSxHQUFjLENBQUM7SUFDbkIsSUFBSSxHQUFTLENBQUM7SUFDZCxJQUFJLE1BQXdCLENBQUM7SUFFN0IsVUFBVSxDQUFDO1FBQ1AsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzVCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUUxQixHQUFHLEdBQUcsSUFBSSxjQUFLLEVBQUUsQ0FBQztRQUNsQixNQUFNLEdBQUcsSUFBSSxxQ0FBZ0IsRUFBRSxDQUFDO1FBRWhDLEdBQUcsR0FBRztZQUNGLGFBQWEsRUFBRTtnQkFDWCxZQUFZLEVBQUUsVUFBQyxJQUFJO29CQUNmLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ2hCLENBQUM7YUFDSjtTQUNKLENBQUM7UUFFRixRQUFRLEdBQUcsSUFBSSx3QkFBVSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEQsQ0FBQyxDQUFDLENBQUM7SUFFSCxTQUFTLENBQUM7UUFDTixPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDaEMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsMEJBQTBCLEVBQUU7UUFDM0IsTUFBTSxD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QUMsTUFBTSxFQUFFLENBQUM7UUFFbEIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzdDLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHlDQUF5QyxFQUFFO1FBQzFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxjQUFPLENBQUMsQ0FBQyxDQUFDO1FBRTlDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBRTNCLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUVuQixNQUFNLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JELENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1ZnQ29udHJvbHN9IGZyb20gXCIuL3ZnLWNvbnRyb2xzXCI7XG5pbXBvcnQge1ZnQ29udHJvbHNIaWRkZW59IGZyb20gJy4vLi4vY29yZS9zZXJ2aWNlcy92Zy1jb250cm9scy1oaWRkZW4nO1xuaW1wb3J0IHtFbGVtZW50UmVmfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtWZ0FQSX0gZnJvbSBcIi4uL2NvcmUvc2VydmljZXMvdmctYXBpXCI7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gXCJyeGpzL09ic2VydmFibGVcIjtcblxuaW1wb3J0ICdyeGpzL2FkZC9vYnNlcnZhYmxlL2Zyb21FdmVudCc7XG5pbXBvcnQgeyBWZ1N0YXRlcyB9IGZyb20gJy4uL2NvcmUvc3RhdGVzL3ZnLXN0YXRlcyc7XG5cbmRlc2NyaWJlKCdDb250cm9scyBCYXInLCAoKSA9PiB7XG4gICAgbGV0IGNvbnRyb2xzOlZnQ29udHJvbHM7XG4gICAgbGV0IHJlZjpFbGVtZW50UmVmO1xuICAgIGxldCBhcGk6VmdBUEk7XG4gICAgbGV0IGhpZGRlbjogVmdDb250cm9sc0hpZGRlbjtcblxuICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgICBqYXNtaW5lLmNsb2NrKCkudW5pbnN0YWxsKCk7XG4gICAgICAgIGphc21pbmUuY2xvY2soKS5pbnN0YWxsKCk7XG5cbiAgICAgICAgYXBpID0gbmV3IFZnQVBJKCk7XG4gICAgICAgIGhpZGRlbiA9IG5ldyBWZ0NvbnRyb2xzSGlkZGVuKCk7XG5cbiAgICAgICAgcmVmID0ge1xuICAgICAgICAgICAgbmF0aXZlRWxlbWVudDoge1xuICAgICAgICAgICAgICAgIGdldEF0dHJpYnV0ZTogKG5hbWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5hbWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnRyb2xzID0gbmV3IFZnQ29udHJvbHMoYXBpLCByZWYsIGhpZGRlbik7XG4gICAgfSk7XG5cbiAgICBhZnRlckVhY2goKCkgPT4ge1xuICAgICAgICBqYXNtaW5lLmNsb2NrKCkudW5pbnN0YWxsKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnU2hvdWxkIGhhdmUgYmVlbiBkZWZpbmVkJywgKCkgPT4ge1xuICAgICAgICBleHBlY3QoY29udHJvbHMpLnRvQmVUcnV0aHkoKTtcbiAgICB9KTtcblxuICAgIGl0KCdTaG91bGQgbGlzdGVuIGZvciBtb3VzZWVudGVyIGFuZCBtb3VzZWxlYXZlIGV2ZW50cycsICgpID0+IHtcbiAgICAgICAgc3B5T24oT2JzZXJ2YWJsZSwgJ2Zyb21FdmVudCcpLmFuZC5jYWxsVGhyb3VnaCgpO1xuXG4gICAgICAgIGxldCB2Z0VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd2Zy1wbGF5ZXInKTtcblxuICAgICAgICBhcGkucmVnaXN0ZXJFbGVtZW50KHZnRWxlbSk7XG5cbiAgICAgICAgY29udHJvbHMubmdPbkluaXQoKTtcblxuICAgICAgICBleHBlY3QoT2JzZXJ2YWJsZS5mcm9tRXZlbnQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGFwaS52aWRlb2d1bGFyRWxlbWVudCwgJ21vdXNlbW92ZScpO1xuICAgICAgICBleHBlY3QoT2JzZXJ2YWJsZS5mcm9tRXZlbnQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGFwaS52aWRlb2d1bGFyRWxlbWVudCwgJ3RvdWNoc3RhcnQnKTtcbiAgICB9KTtcblxuICAgIGl0KCdTaG91bGQgaGlkZSBjb250cm9scyBhZnRlciB2aWV3IGluaXQnLCAoKSA9PiB7XG4gICAgICAgIHNweU9uKGNvbnRyb2xzLCAnaGlkZScpLmFuZC5jYWxsRmFrZSgoKSA9PiB7fSk7XG5cbiAgICAgICAgY29udHJvbHMudmdBdXRvaGlkZSA9IHRydWU7XG5cbiAgICAgICAgY29udHJvbHMubmdBZnRlclZpZXdJbml0KCk7XG5cbiAgICAgICAgZXhwZWN0KGNvbnRyb2xzLmhpZGUpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdTaG91bGQgc2hvdyBjb250cm9scyBhZnRlciB2aWV3IGluaXQnLCAoKSA9PiB7XG4gICAgICAgIHNweU9uKGNvbnRyb2xzLCAnc2hvdycpLmFuZC5jYWxsRmFrZSgoKSA9PiB7fSk7XG5cbiAgICAgICAgY29udHJvbHMudmdBdXRvaGlkZSA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnRyb2xzLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuXG4gICAgICAgIGV4cGVjdChjb250cm9scy5zaG93KS50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnU2hvdWxkIHNob3cgY29udHJvbHMnLCAoKSA9PiB7XG4gICAgICAgIHNweU9uKHdpbmRvdywgJ2NsZWFyVGltZW91dCcpLmFuZC5jYWxsRmFrZSgoKSA9PiB7fSk7XG4gICAgICAgIHNweU9uKGhpZGRlbiwgJ3N0YXRlJykuYW5kLmNhbGxGYWtlKCgpID0+IHt9KTtcblxuICAgICAgICBjb250cm9scy5zaG93KCk7XG5cbiAgICAgICAgZXhwZWN0KHdpbmRvdy5jbGVhclRpbWVvdXQpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICAgICAgZXhwZWN0KGNvbnRyb2xzLmhpZGVDb250cm9scykudG9CZShmYWxzZSk7XG4gICAgICAgIGV4cGVjdChoaWRkZW4uc3RhdGUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdTaG91bGQgaGlkZSBjb250cm9scyB3aGVuIGlzIHBsYXlpbmcnLCAoKSA9PiB7XG4gICAgICAgIHNweU9uKGhpZGRlbiwgJ3N0YXRlJykuYW5kLmNhbGxGYWtlKCgpID0+IHt9KTtcblxuICAgICAgICBjb250cm9scy52Z0F1dG9oaWRlID0gdHJ1ZTtcbiAgICAgICAgYXBpLm1lZGlhcyA9IFt7c3RhdGU6IFZnU3RhdGVzLlZHX1BMQVlJTkd9XTtcblxuICAgICAgICBjb250cm9scy5oaWRlKCk7XG5cbiAgICAgICAgamFzbWluZS5jbG9jaygpLnRpY2soMzEwMCk7XG4gICAgICAgIGV4cGVjdChjb250cm9scy5oaWRlQ29udHJvbHMpLnRvQmUodHJ1ZSk7XG4gICAgICAgIGV4cGVjdChoaWRkZW4uc3RhdGUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ1Nob3VsZCBub3QgaGlkZSBjb250cm9scyBpZiBwbGF5ZXIgaXMgcGF1c2VkJywgKCkgPT4ge1xuICAgICAgICBjb250cm9scy5oaWRlQ29udHJvbHMgPSBmYWxzZTtcbiAgICAgICAgY29udHJvbHMudmdBdXRvaGlkZSA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnRyb2xzLnZnQXV0b2hpZGUgPSB0cnVlO1xuICAgICAgICBhcGkubWVkaWFzID0gW3tzdGF0ZTogVmdTdGF0ZXMuVkdfUEFVU0VEfV07XG5cbiAgICAgICAgY29udHJvbHMuaGlkZSgpO1xuXG4gICAgICAgIGphc21pbmUuY2xvY2soKS50aWNrKDMxMDApO1xuICAgICAgICBleHBlY3QoY29udHJvbHMuaGlkZUNvbnRyb2xzKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdTaG91bGQgbm90IGhpZGUgY29udHJvbHMgaWYgYXV0b2hpZGUgaXMgZmFsc2UnLCAoKSA9PiB7XG4gICAgICAgIGNvbnRyb2xzLmhpZGVDb250cm9scyA9IGZhbHNlO1xuICAgICAgICBjb250cm9scy52Z0F1dG9oaWRlID0gZmFsc2U7XG5cbiAgICAgICAgY29udHJvbHMuaGlkZSgpO1xuXG4gICAgICAgIGphc21pbmUuY2xvY2soKS50aWNrKDMxMDApO1xuICAgICAgICBleHBlY3QoY29udHJvbHMuaGlkZUNvbnRyb2xzKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdTaG91bGQgc3RhcnQgaGlkaW5nIGNvbnRyb2xzIGlmIG1lZGlhIGlzIHBsYXlpbmcnLCAoKSA9PiB7XG4gICAgICAgIHNweU9uKGNvbnRyb2xzLCAnaGlkZScpLmFuZC5jYWxsRmFrZSgoKSA9PiB7fSk7XG5cbiAgICAgICAgY29udHJvbHMudmdBdXRvaGlkZSA9IHRydWU7XG5cbiAgICAgICAgY29udHJvbHMub25QbGF5KCk7XG5cbiAgICAgICAgZXhwZWN0KGNvbnRyb2xzLmhpZGUpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdTaG91bGQgc2hvdyBjb250cm9scyBpZiBtZWRpYSBpcyBwYXVzZWQnLCAoKSA9PiB7XG4gICAgICAgIHNweU9uKGhpZGRlbiwgJ3N0YXRlJykuYW5kLmNhbGxGYWtlKCgpID0+IHt9KTtcblxuICAgICAgICBjb250cm9scy52Z0F1dG9oaWRlID0gdHJ1ZTtcblxuICAgICAgICBjb250cm9scy5vblBhdXNlKCk7XG5cbiAgICAgICAgZXhwZWN0KGNvbnRyb2xzLmhpZGVDb250cm9scykudG9CZShmYWxzZSk7XG4gICAgICAgIGV4cGVjdChoaWRkZW4uc3RhdGUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGZhbHNlKTtcbiAgICB9KTtcbn0pO1xuXG5pbnRlcmZhY2UgRGVjb3JhdG9ySW52b2NhdGlvbiB7XG4gIHR5cGU6IEZ1bmN0aW9uO1xuICBhcmdzPzogYW55W107XG59XG4iXX0=