switch-channel.test.js 3.18 KB
/*
 *
 * ADOBE CONFIDENTIAL
 * __________________
 *
 *  Copyright 2016 Adobe Systems Incorporated
 *  All Rights Reserved.
 *
 * NOTICE:  All information contained herein is, and remains
 * the property of Adobe Systems Incorporated and its suppliers,
 * if any.  The intellectual and technical concepts contained
 * herein are proprietary to Adobe Systems Incorporated and its
 * suppliers and are protected by trade secret or copyright law.
 * Dissemination of this information or reproduction of this material
 * is strictly forbidden unless prior written permission is obtained
 * from Adobe Systems Incorporated.
 */

/* globals describe, it, beforeEach, afterEach, expect, sinon */
/* eslint max-nested-callbacks: 0 */
define([
    'screens/player/shared/serviceadmin',
    'screens/player/shared/test-helper/stub-service-interface',
    'screens/player/shared/test-helper/service',
    'screens/player/shared/test-helper/command-handler',
    'screens/player/firmware/core/firmware/firmware',
    'screens/player/runtime/player',
    'screens/player/command/command',
    'screens/player/command/switch-channel'
], function(ServiceAdmin, stubServiceInterface, serviceTestHelper, commandHandlerTestHelper, FirmwareSvc, Player, PlayerCommand, switchChannelCmd) {
    'use strict';

    describe('screens/player/command/switch-channel', function() {

        var stubFirmwareService;

        var stubPlayer;

        beforeEach(function() {
            stubPlayer = {
                EVENTS: {
                    SWITCH_CHANNEL: 'switch-channel'
                },
                emit: function() {
                }
            };
            sinon.stub(stubPlayer, 'emit');

            stubFirmwareService = stubServiceInterface(ServiceAdmin, FirmwareSvc, {
                'getPlayer': function() {
                    return stubPlayer;
                }
            });
        });

        afterEach(function() {
            stubFirmwareService.restore();
        });

        serviceTestHelper.runDefaultTests(switchChannelCmd, PlayerCommand.serviceName);
        commandHandlerTestHelper.runDefaultTests(switchChannelCmd, 'switch-channel');

        it('should emit the SWITCH_CHANNEL event', function() {
            switchChannelCmd.handleCommand('switch-channel', {role: 'test-role'});
            expect(stubPlayer.emit).to.have.been.calledWith(stubPlayer.EVENTS.SWITCH_CHANNEL, 'test-role', true);
        });

        it('throws an error if the Firmware service is not available', function() {
            ServiceAdmin.getService.withArgs(FirmwareSvc.serviceName).returns(null);
            expect(function() {
                switchChannelCmd.handleCommand('switch-channel');
            }).to.throw();
            ServiceAdmin.getService.restore();
        });

        it('throws an error if the payload does not have a role property', function() {
            expect(function() {
                switchChannelCmd.handleCommand('switch-channel', {sole: 'test-role'});
            }).to.throw();
        });

        it('throws an error if the payload is missing', function() {
            expect(function() {
                switchChannelCmd.handleCommand('switch-channel');
            }).to.throw();
        });

    });
});