screenshot-service.test.js 3.47 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/stub-service-interface',
    'screens/player/firmware/screenshot/screenshot',
    'screens/player/firmware/screenshot/impl/screenshot-service',
    'screens/player/firmware/screenshot/spi/screenshot'
], function(ServiceAdmin, serviceTestHelper, stubServiceInterface, Screenshot, ScreenshotService, ScreenshotSpi) {
    'use strict';

    describe('screens/player/firmware/screenshot/impl/screenshot-service', function() {

        var screenshotService;
        var stubScreenshotSpiService;

        beforeEach(function() {
            stubScreenshotSpiService = stubServiceInterface(ServiceAdmin, ScreenshotSpi);
            screenshotService = new ScreenshotService();
        });

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

        serviceTestHelper.runDefaultTests(new ScreenshotService(), Screenshot.serviceName);

        describe('API', function() {

            beforeEach(function() {
                return screenshotService.activate();
            });

            afterEach(function() {
                return screenshotService.deactivate();
            });

            describe('captureScreenshotAsURI()', function() {
                it('calls the captureScreenshotAsURI method on the SPI', function() {
                    screenshotService.captureScreenshotAsURI();
                    expect(stubScreenshotSpiService.api.captureScreenshotAsURI).to.have.been.calledWithExactly();
                });

                it('returns a Promise that rejects with an error when the Promise on the SPI rejects with an error', function(done) {
                    var errMsg = 'Error message';
                    var error = new Error(errMsg);
                    stubScreenshotSpiService.api.captureScreenshotAsURI.returns(Promise.reject(error));
                    return screenshotService.captureScreenshotAsURI()
                        .catch(function(err) {
                            expect(err.message).to.equal(errMsg);
                            done();
                        });
                });

                it('returns a Promise that resolves with a string when the Promise on the SPI that resolves with a string', function() {
                    var contents = 'data:image/svg+xml;utf8,';
                    stubScreenshotSpiService.api.captureScreenshotAsURI.returns(Promise.resolve(contents));
                    return screenshotService.captureScreenshotAsURI()
                        .then(function(screenshot) {
                            expect(screenshot).to.equal(contents);
                        });
                });
            });

        });
    });
});