filesystem-service.test.js 4.25 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]*/

/* globals describe, it, expect, beforeEach, afterEach */
define([
    'screens/player/shared/serviceadmin',
    'screens/player/shared/test-helper/service',
    'screens/player/shared/test-helper/stub-service-interface',
    'screens/player/firmware/filesystem/filesystem',
    'screens/player/firmware/filesystem/spi/filesystem',
    'screens/player/firmware/filesystem/impl/filesystem-service'
], function(ServiceAdmin, serviceTestHelper, stubServiceInterface, Filesystem, FilesystemSpi, FilesystemService) {
    'use strict';

    var USER_DATA_PATH = '/user/data/path';

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

        var stubFilesystemSpiService;

        beforeEach(function() {
            stubFilesystemSpiService = stubServiceInterface(ServiceAdmin, FilesystemSpi);
        });

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

        serviceTestHelper.runDefaultTests(FilesystemService, Filesystem.serviceName);

        describe('API', function() {

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

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

            describe('joinPath', function() {

                it('calls SPIs joinPath with whatever is passed to joinPath', function() {
                    var paths = ['/a', '/b'];
                    FilesystemService.joinPath(paths);
                    expect(stubFilesystemSpiService.api.joinPath).calledWithExactly(paths);
                });

                it('returns whatever the SPIs joinPath returns', function() {
                    stubFilesystemSpiService.api.joinPath.returns('/a/b');
                    expect(FilesystemService.joinPath()).to.equal('/a/b');
                });

            });

            describe('getUserDataPath', function() {

                it('calls SPIs getUserDataPath without any arguments', function() {
                    stubFilesystemSpiService.api.getUserDataPath.returns(Promise.resolve(USER_DATA_PATH));
                    return FilesystemService.getUserDataPath().then(function() {
                        expect(stubFilesystemSpiService.api.getUserDataPath).calledWithExactly();
                    });
                });

                it('returns whatever the SPIs getUserDataPath returns', function() {
                    stubFilesystemSpiService.api.getUserDataPath.returns(Promise.resolve(USER_DATA_PATH));
                    return FilesystemService.getUserDataPath().then(function(path) {
                        expect(path).to.equal(USER_DATA_PATH);
                    });
                });

            });

            describe('readFileAsText', function() {

                it('calls SPIs readFileAsText with a path', function() {
                    stubFilesystemSpiService.api.readFileAsText.returns(Promise.resolve('Some Text'));
                    return FilesystemService.readFileAsText('/some/path').then(function() {
                        expect(stubFilesystemSpiService.api.readFileAsText).calledWithExactly('/some/path');
                    });
                });

                it('returns whatever the SPIs readFileAsText returns', function() {
                    var TEXT = 'Some Text';
                    stubFilesystemSpiService.api.readFileAsText.returns(Promise.resolve(TEXT));
                    return FilesystemService.readFileAsText().then(function(text) {
                        expect(text).to.equal(TEXT);
                    });
                });

            });

        });

    });
});