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);
+ });
+ });
});
+