deviceinfo-service.test.js 2.61 KB
/*
 * ADOBE CONFIDENTIAL
 * __________________
 *
 *  Copyright 2017 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.
 */

/* eslint max-nested-callbacks: [2, 10]*/
/* eslint no-new: 0 */

/* globals Promise, describe, expect, it, beforeEach, afterEach */
define([
    'screens/player/shared/serviceadmin',
    'screens/player/shared/test-helper/service',
    'screens/player/shared/test-helper/mock-store-service',
    'screens/player/shared/test-helper/stub-service-interface',
    'screens/player/firmware/deviceinfo/spi/deviceinfo',
    'screens/player/firmware/deviceinfo/deviceinfo',
    'screens/player/firmware/deviceinfo/impl/deviceinfo-service',
    'screens/player/store/store'
], function(ServiceAdmin, serviceTestHelper, mockStoreService, stubServiceInterface, DeviceInfoSpi, DeviceInfo, DeviceInfoService, Store) {
    'use strict';

    describe('DeviceInfoService', function() {

        var mockedStore;
        var stubDeviceInfoSpi;

        beforeEach(function() {
            mockedStore = mockStoreService(stubServiceInterface(ServiceAdmin, Store));
            stubDeviceInfoSpi = stubServiceInterface(ServiceAdmin, DeviceInfoSpi);
        });

        afterEach(function() {
            mockedStore.restore();
            stubDeviceInfoSpi.restore();
        });

        serviceTestHelper.runDefaultTests(DeviceInfoService, DeviceInfo.serviceName);

        describe('activate', function() {
            it('calls DeviceInfoSpi#get', function() {
                return DeviceInfoService.activate().then(function() {
                    expect(stubDeviceInfoSpi.api.get).to.have.been.calledWith();
                });
            });
            it('calls Store#dispatch with payload what DeviceInfoSpi#get resolves', function() {
                stubDeviceInfoSpi.api.get.returns(Promise.resolve('test-payload'));
                return DeviceInfoService.activate().then(function() {
                    expect(mockedStore.api.dispatch).to.have.been.calledWith({
                        payload: 'test-payload',
                        type: DeviceInfo.ACTIONS.UPDATE
                    });
                });
            });
        });

    });
});