UNPKG

lithium-sdk

Version:
111 lines (96 loc) 3.19 kB
'use strict'; var chai = require('chai'); var expect = chai.expect; var rewire = require('rewire'); var path = require('path'); var gutil = require('gulp-util'); var fs = require('fs'); var testRoot = path.resolve(__dirname) + '/..'; var gulp = require('gulp'); describe('test skin object creation', function() { var skinLib; before(function() { var fixResSkinsDir = function(dir) { if (dir === 'res/skins') { dir = testRoot + '/lib/skins/' + dir; } else if (dir === 'coreplugin') { dir = testRoot + '/lib/' + dir; } return dir; }; var fsMock = { statSync: function(path) { return fs.statSync(fixResSkinsDir(path)); }, readFileSync: function(path) { return fs.readFileSync(fixResSkinsDir(path)); }, readdirSync: function(path) { return fs.readdirSync(fixResSkinsDir(path)); }, existsSync: function (path) { return fs.existsSync(fixResSkinsDir(path)); } }; var pathMock = { resolve: function(dir, file) { return path.resolve(fixResSkinsDir(dir), file); }, basename: path.basename }; skinLib = rewire(testRoot + '/../lib/skin.js'); skinLib.__set__({ fs: fsMock, path: pathMock }); var serverConfPath = path.join('lib', 'test.server.conf.json'); gutil.env.serverConfig = path.join('test', serverConfPath); skinLib = skinLib(gulp, gutil); }); it('should not allow you to create a skin with invalid constructor values', function(done) { var skinId = 'my_responsive_skin'; var skinDir = testRoot + '/lib/skins/res/skins/' + skinId; var errMsg = ''; try { skinLib.Skin(null, skinDir); } catch (err) { errMsg = err.message; } expect(errMsg).to.equal('id must be a string!'); try { skinLib.Skin(skinId, null); } catch (err) { errMsg = err.message; } expect(errMsg).to.equal('dir must be a string!'); done(); }); it('should create a new local responsive skin object', function(done) { var skinId = 'my_responsive_skin'; var skinDir = testRoot + '/lib/skins/res/skins/' + skinId; var skin = new skinLib.Skin(skinId, skinDir); expect(skin.getId()).to.equal(skinId); expect(skin.getDir()).to.equal(skinDir); expect(skin.isLocal()).to.be.true; expect(skin.getParentId()).to.equal('my_responsive_base_skin'); expect(skin.isResponsive()).to.be.true; expect(skin.getResponsiveCoreId()).to.equal('responsive_peak'); var parentSkin = skin.getParent(); expect(parentSkin).to.not.be.null; expect(parentSkin.isResponsive()).to.be.true; expect(parentSkin.getResponsiveCoreId()).to.equal('responsive_peak'); done(); }); it('should return all the responsive skins', function(done) { var responsiveSkinIds = skinLib.getResponsiveSkinIds(); var responsiveSkins = skinLib.getResponsiveSkins(); console.log(JSON.stringify(responsiveSkins)); expect(responsiveSkinIds).to.deep.equal(responsiveSkins .filter(function(){ return true; }).map(function(skin) { return skin.getId(); })); done(); }); });