diff options
Diffstat (limited to 'core/js/tests/specs/coreSpec.js')
-rw-r--r-- | core/js/tests/specs/coreSpec.js | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/core/js/tests/specs/coreSpec.js b/core/js/tests/specs/coreSpec.js new file mode 100644 index 00000000000..28c20a0642e --- /dev/null +++ b/core/js/tests/specs/coreSpec.js @@ -0,0 +1,107 @@ +/** +* ownCloud +* +* @author Vincent Petry +* @copyright 2014 Vincent Petry <pvince81@owncloud.com> +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE +* License as published by the Free Software Foundation; either +* version 3 of the License, or any later version. +* +* This library is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU AFFERO GENERAL PUBLIC LICENSE for more details. +* +* You should have received a copy of the GNU Affero General Public +* License along with this library. If not, see <http://www.gnu.org/licenses/>. +* +*/ +describe('Core base tests', function() { + describe('Base values', function() { + it('Sets webroots', function() { + expect(OC.webroot).toBeDefined(); + expect(OC.appswebroots).toBeDefined(); + }); + }); + describe('Link functions', function() { + var TESTAPP = 'testapp'; + var TESTAPP_ROOT = OC.webroot + '/appsx/testapp'; + + beforeEach(function() { + OC.appswebroots[TESTAPP] = TESTAPP_ROOT; + }); + afterEach(function() { + // restore original array + delete OC.appswebroots[TESTAPP]; + }); + it('Generates correct links for core apps', function() { + expect(OC.linkTo('core', 'somefile.php')).toEqual(OC.webroot + '/core/somefile.php'); + expect(OC.linkTo('admin', 'somefile.php')).toEqual(OC.webroot + '/admin/somefile.php'); + }); + it('Generates correct links for regular apps', function() { + expect(OC.linkTo(TESTAPP, 'somefile.php')).toEqual(OC.webroot + '/index.php/apps/' + TESTAPP + '/somefile.php'); + }); + it('Generates correct remote links', function() { + expect(OC.linkToRemote('webdav')).toEqual(window.location.protocol + '//' + window.location.host + OC.webroot + '/remote.php/webdav'); + }); + describe('Images', function() { + it('Generates image path with given extension', function() { + var svgSupportStub = sinon.stub(window, 'SVGSupport', function() { return true; }); + expect(OC.imagePath('core', 'somefile.jpg')).toEqual(OC.webroot + '/core/img/somefile.jpg'); + expect(OC.imagePath(TESTAPP, 'somefile.jpg')).toEqual(TESTAPP_ROOT + '/img/somefile.jpg'); + svgSupportStub.restore(); + }); + it('Generates image path with svg extension when svg support exists', function() { + var svgSupportStub = sinon.stub(window, 'SVGSupport', function() { return true; }); + expect(OC.imagePath('core', 'somefile')).toEqual(OC.webroot + '/core/img/somefile.svg'); + expect(OC.imagePath(TESTAPP, 'somefile')).toEqual(TESTAPP_ROOT + '/img/somefile.svg'); + svgSupportStub.restore(); + }); + it('Generates image path with png ext when svg support is not available', function() { + var svgSupportStub = sinon.stub(window, 'SVGSupport', function() { return false; }); + expect(OC.imagePath('core', 'somefile')).toEqual(OC.webroot + '/core/img/somefile.png'); + expect(OC.imagePath(TESTAPP, 'somefile')).toEqual(TESTAPP_ROOT + '/img/somefile.png'); + svgSupportStub.restore(); + }); + }); + }); + describe('Query string building', function() { + it('Returns empty string when empty params', function() { + expect(OC.buildQueryString()).toEqual(''); + expect(OC.buildQueryString({})).toEqual(''); + }); + it('Encodes regular query strings', function() { + expect(OC.buildQueryString({ + a: 'abc', + b: 'def' + })).toEqual('a=abc&b=def'); + }); + it('Encodes special characters', function() { + expect(OC.buildQueryString({ + unicode: '汉字', + })).toEqual('unicode=%E6%B1%89%E5%AD%97'); + expect(OC.buildQueryString({ + b: 'spaace value', + 'space key': 'normalvalue', + 'slash/this': 'amp&ersand' + })).toEqual('b=spaace%20value&space%20key=normalvalue&slash%2Fthis=amp%26ersand'); + }); + it('Encodes data types and empty values', function() { + expect(OC.buildQueryString({ + 'keywithemptystring': '', + 'keywithnull': null, + 'keywithundefined': null, + something: 'else' + })).toEqual('keywithemptystring=&keywithnull&keywithundefined&something=else'); + expect(OC.buildQueryString({ + 'booleanfalse': false, + 'booleantrue': true + })).toEqual('booleanfalse=false&booleantrue=true'); + expect(OC.buildQueryString({ + 'number': 123, + })).toEqual('number=123'); + }); + }); +}); |