diff --git a/Gruntfile.js b/Gruntfile.js index 4e84e6b..9bc0737 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -14,7 +14,7 @@ module.exports = function (grunt) { configFile: 'tests/config/karma.unit.js' }, single: { - singleRun: true + singleRun: false } }, diff --git a/imageditor.html b/imageditor.html new file mode 100644 index 0000000..78baec3 --- /dev/null +++ b/imageditor.html @@ -0,0 +1,16 @@ + + + + Image Editor Test + + + + + + + + + + diff --git a/js/RealUploader.js b/js/RealUploader.js index 2325732..1930727 100644 --- a/js/RealUploader.js +++ b/js/RealUploader.js @@ -133,7 +133,7 @@ define(['FileObject', 'Constants', 'Utils', 'i18n'], /** @lends RealUploader */ * condition. If this function return false then the file will not be added to the list * @constructor */ - var RealUploader = function (querySelector, config) { + var RealUploader = function (querySelector, userConfig) { this.fileList = {}; this.fileIndex = 0; this.uploadQueue = []; @@ -241,8 +241,10 @@ define(['FileObject', 'Constants', 'Utils', 'i18n'], /** @lends RealUploader */ beforeRenderFile: [] //runs before the file element is beeing rendered to the dom }; - if (this._setMainContainer(querySelector)) { - this.defineCheckersAndSetters(config); + var container = this._getMainContainer(querySelector); + if (container) { + this._setMainContainer(container); + this._defineCheckersAndSetters(userConfig); this.slots = this.config.maxConnections; new _(this.config.language); @@ -260,7 +262,7 @@ define(['FileObject', 'Constants', 'Utils', 'i18n'], /** @lends RealUploader */ * @param userSettings settings define by the user * @returns {Object} settings to be used */ - defineCheckersAndSetters: function (userSettings) { + _defineCheckersAndSetters: function (userSettings) { var me = this; //define some getters and setters for validating settings @@ -373,25 +375,26 @@ define(['FileObject', 'Constants', 'Utils', 'i18n'], /** @lends RealUploader */ } return true; }, - _setMainContainer: function (querySelector) { + _getMainContainer: function (querySelector) { + var container = null; if (querySelector instanceof HTMLElement) { - this.dom.container = querySelector; + container = querySelector; } else if (typeof querySelector === 'string') { - this.dom.container = Utils.getEl(querySelector); + container = Utils.getEl(querySelector); } - - //if no DOM element container found then raise an error and stop - if (!this.dom.container) { - console.error(querySelector + _(' not found on the DOM')); - return false; + if(!container) { + console.warn(querySelector + _(' not found on the DOM')); } + return container; + }, + _setMainContainer: function (container) { //check if the plugin has already been applied to this element - if (this.dom.container.classList.contains('ax-uploader')) { + if (container.classList.contains('ax-uploader')) { console.warn(_('Real Uploader is already bind to this element')); - return false; + } else { + this.dom.container = container; } - return true; }, _addRemoveButton: function () { var me = this; @@ -494,7 +497,7 @@ define(['FileObject', 'Constants', 'Utils', 'i18n'], /** @lends RealUploader */ dropArea = me.config.dropArea; } else if (me.config.dropArea === 'self') { dropArea = this.dom.container; - } else if (typeof dropArea === 'string') { + } else if (typeof me.config.dropArea === 'string') { dropArea = Utils.getEl(dropArea); } else if (typeof me.config.dropArea === 'function') { dropArea = me.config.dropArea.call(this); diff --git a/js/main-editor.js b/js/main-editor.js new file mode 100644 index 0000000..67a24de --- /dev/null +++ b/js/main-editor.js @@ -0,0 +1,18 @@ +requirejs.config({ + //By default load any module IDs from js/lib + baseUrl: 'js' + //except, if the module ID starts with "app", + //load it from the js/app directory. paths + //config is relative to the baseUrl, and + //never includes a ".js" extension since + //the paths config could be for a directory. + //paths: { + // app: '../app' + //} +}); +// +//start our app here +define(['AreaSelector'], function(AreaSelector) { + var imageEditor = new AreaSelector(); + return AreaSelector; +}); \ No newline at end of file diff --git a/test.jpg b/test.jpg new file mode 100644 index 0000000..f76706f Binary files /dev/null and b/test.jpg differ diff --git a/tests/config/karma.unit.js b/tests/config/karma.unit.js index 52ef603..7e5010d 100644 --- a/tests/config/karma.unit.js +++ b/tests/config/karma.unit.js @@ -32,7 +32,7 @@ module.exports = function(config) { // - Safari (only Mac) // - PhantomJS // - IE (only Windows) - browsers: [ 'PhantomJS'], + browsers: [ 'PhantomJS', 'Chrome'], colors: true, singleRun: false, autoWatch: true, diff --git a/tests/specs/RealUploader.spec.js b/tests/specs/RealUploader.spec.js index 6caee22..2cb733c 100644 --- a/tests/specs/RealUploader.spec.js +++ b/tests/specs/RealUploader.spec.js @@ -1,16 +1,103 @@ -/** - */ -describe('The game launching', function() { - var sideGamesController; - beforeEach(function() { - }); +define(['RealUploader', 'Constants'], function(RealUploader, Constants) { + console.log('1.create real uploader'); - it('is defined', function() { - }); + describe('RealUploader', function() { + var uploader; - it('sets the category', function() { - }); + beforeEach(function() { + if(document.getElementById('uploader')) { + document.body.removeChild(document.getElementById('uploader')); + } + var div = document.createElement('div'); + div.id = 'uploader'; + document.body.appendChild(div); + uploader = new RealUploader('#uploader', { + allowedExtensions: ['Jpg', 'png'] + }); + }); + + it('is defined', function() { + expect(uploader instanceof RealUploader).toBe(true); + }); + + it('default config is ok', function() { + expect(uploader.fileList).toEqual({}); + expect(uploader.fileIndex).toEqual(0); + expect(uploader.uploadQueue).toEqual([]); + expect(uploader.dom.container).toBeDefined(); + expect(uploader.totalUploadedBytes).toEqual(0); + expect(uploader.checkInterval).toEqual(false); + expect(uploader.globalStatus).toEqual(Constants.AX_IDLE); + }); + + it('_getMainContainer', function() { + expect(uploader._getMainContainer('#uploader2')).toBe(null); + expect(uploader._getMainContainer('#uploader')).not.toBe(null); + }); + + it('_defineCheckersAndSetters', function() { + expect(uploader.config.accept).toBe(''); + expect(uploader.config.allowedExtensions).toEqual(['jpg', 'png']); + expect(uploader.config.language).toEqual('en_US'); + expect(uploader.config.maxFileSize).toEqual(10485760); + expect(uploader.config.minFileSize).toEqual(0); + expect(uploader.config.listeners).toBe(null); + expect(uploader.config.enable).toBe(true); + }); + + it('checkUploadSupport', function() { + expect(uploader.checkUploadSupport()).toBe(true); + }); + it('_addRemoveButton', function() { + expect(uploader.dom.removeButton).toBeDefined(); + expect(uploader.dom.removeButton.classList.contains('ax-clear')).toBe(true); + expect(uploader.dom.removeButton.title).toBe('Remove all'); + expect(uploader.dom.removeButtonText).toBeDefined(); + expect(uploader.dom.removeButtonText.classList.contains('ax-text')).toBe(true); + expect(uploader.dom.removeButtonText.innerHTML).toBe('Remove all'); + }); + it('_addUploadButton', function() { + expect(uploader.dom.uploadButton).toBeDefined(); + expect(uploader.dom.uploadButton.classList.contains('ax-upload-all')).toBe(true); + expect(uploader.dom.uploadButton.title).toBe('Upload all files'); + expect(uploader.dom.uploadButtonText).toBeDefined(); + expect(uploader.dom.uploadButtonText.classList.contains('ax-text')).toBe(true); + expect(uploader.dom.uploadButtonText.innerHTML).toBe('Start upload'); + }); + + it('_addBrowseButton', function() { + expect(uploader.dom.browseButton).toBeDefined(); + expect(uploader.dom.browseButton.classList.contains('ax-browse-c')).toBe(true); + expect(uploader.dom.browseButton.title).toBe('Add files'); + expect(uploader.dom.browseButtonText).toBeDefined(); + expect(uploader.dom.browseButtonText.classList.contains('ax-text')).toBe(true); + expect(uploader.dom.browseButtonText.innerHTML).toBe('Add files'); + }); + + it('_setDragAndDropTitle', function() { + expect(uploader.dom.title).toBeDefined(); + expect(uploader.dom.title.classList.contains('ax-main-title')).toBe(true); + expect(uploader.dom.title.innerHTML).toBe('Select Files or Drag&Drop Files'); + }); + + it('_addBrowseInput', function() { + expect(uploader.dom.browseInput).toBeDefined(); + expect(uploader.dom.browseInput.classList.contains('ax-browse')).toBe(true); + }); + + it('renderHtml', function() { + expect(uploader.dom.fileList).toBeDefined(); + expect(uploader.dom.container).toBeDefined(); + expect(uploader.dom.fileList.classList.contains('ax-file-list')).toBe(true); + expect(uploader.dom.container.classList.contains('ax-uploader')).toBe(true); + }); + + it('_findDropArea', function() { + expect(uploader._findDropArea()).toBeDefined(uploader.dom.container); + }); + }); }); +