diff --git a/public/assets/tests/core.js b/public/assets/tests/core.js
index 57a4f28a7..14b854771 100644
--- a/public/assets/tests/core.js
+++ b/public/assets/tests/core.js
@@ -1,808 +1,646 @@
window.onload = function() {
-// ajax
-App.Ajax.request({
- type: 'GET',
- url: '/assets/tests/ajax-test.json',
- success: function (data) {
- test( "ajax get 200", function() {
- ok( true, "File found!")
- equal(data.success, true, "content parsable and ok!")
- equal(data.success2, undefined, "content parsable and ok!")
- });
- },
- error: function (data) {
- test( "ajax", function() {
- ok( false, "Failed!")
- });
- }
-});
-
-// ajax queueing
-App.Ajax.request({
- type: 'GET',
- url: '/tests/wait/2',
- queue: true,
- success: function (data) {
- test( "ajax - queue - ajax get 200 1/2", function() {
-
- // check queue
- ok( !window.testAjax, 'ajax - queue - check queue')
- window.testAjax = true;
- equal(data.success, true, "ajax - queue - content parsable and ok!")
- equal(data.success2, undefined, "ajax - queue - content parsable and ok!")
- });
- },
- error: function (data) {
- test( "ajax", function() {
- ok( false, "Failed!")
- });
- }
-});
-App.Ajax.request({
- type: 'GET',
- url: '/tests/wait/1',
- queue: true,
- success: function (data) {
- test( "ajax - queue - ajax get 200 2/2", function() {
- // check queue
- ok( window.testAjax, 'ajax - queue - check queue')
- window.testAjax = undefined;
-
- equal(data.success, true, "content parsable and ok!")
- equal(data.success2, undefined, "content parsable and ok!")
- });
- },
- error: function (data) {
- test( "ajax", function() {
- ok( false, "Failed!")
- });
- }
-});
-
-// ajax parallel
-App.Ajax.request({
- type: 'GET',
- url: '/tests/wait/3',
- success: function (data) {
- test( "ajax - parallel - ajax get 200 1/2", function() {
-
- // check queue
- ok( window.testAjaxQ, 'ajax - parallel - check queue')
- window.testAjaxQ = undefined;
- equal(data.success, true, "ajax - parallel - content parsable and ok!")
- equal(data.success2, undefined, "ajax - parallel - content parsable and ok!")
- });
- },
- error: function (data) {
- test( "ajax", function() {
- ok( false, "Failed!")
- });
- }
-});
-App.Ajax.request({
- type: 'GET',
- url: '/tests/wait/1',
- success: function (data) {
- test( "ajax - parallel - ajax get 200 2/2", function() {
- // check queue
- ok( !window.testAjaxQ, 'ajax - parallel - check queue')
- window.testAjaxQ = true;
-
- equal(data.success, true, "content parsable and ok!")
- equal(data.success2, undefined, "content parsable and ok!")
- });
- },
- error: function (data) {
- test( "ajax", function() {
- ok( false, "Failed!")
- });
- }
-});
-
-// delay
-window.testDelay1 = false
-App.Delay.set(function() {
- test('delay - test 1 - 1/3 - should not be executed, will be reset by next set()', function() {
-
- // check
- ok(false, 'delay - test 1 - 1/3 - should not be executed, will be reset by next set()')
- window.testDelay1 = true;
- });
- },
- 1000,
- 'delay-test1',
- 'level'
-);
-App.Delay.set(function() {
- test('delay - test 1 - 2/3', function() {
-
- // check
- ok(!window.testDelay1, 'delay - test 1 - 2/3')
- window.testDelay1 = 1;
- });
- },
- 2000,
- 'delay-test1',
- 'level'
-);
-App.Delay.set(function() {
- test('delay - test 1 - 2/3', function() {
-
- // check
- ok(window.testDelay1, 'delay - test 1 - 2/3')
- window.testDelay1 = false;
- });
- },
- 3000,
- 'delay-test1-verify',
- 'level'
-);
-
-App.Delay.set(function() {
- test('delay - test 2 - 1/3', function() {
-
- // check
- ok(!window.testDelay2, 'delay - test 2 - 1/3')
- window.testDelay2 = 1;
- });
- },
- 2000
-);
-App.Delay.set(function() {
- test('delay - test 2 - 2/3', function() {
-
- // check
- ok(!window.testDelay2, 'delay - test 2 - 2/3')
- });
- },
- 1000
-);
-App.Delay.set(function() {
- test('delay - test 2 - 3/3', function() {
-
- // check
- ok(window.testDelay2, 'delay - test 2 - 3/3')
- });
- },
- 3000
-);
-
-window.testDelay3 = 1;
-App.Delay.set(function() {
- test('delay - test 3 - 1/1', function() {
-
- // check
- ok(false, 'delay - test 3 - 1/1')
- });
- },
- 1000,
- 'delay3'
-);
-App.Delay.clear('delay3')
-
-App.Delay.set(function() {
- test('delay - test 4 - 1/1', function() {
-
- // check
- ok(false, 'delay - test 4 - 1/1')
- });
- },
- 1000,
- undefined,
- 'Page'
-);
-App.Delay.clearLevel('Page')
-
-
-// interval 1
-window.testInterval1 = 1
-App.Interval.set(function() {
- window.testInterval1 += 1;
- },
- 2000,
- 'interval-test1'
-);
-App.Delay.set(function() {
- test('interval - test 1 - 1/2', function() {
-
- // check
- equal(window.testInterval1, 4, 'interval - test 1')
- App.Interval.clear('interval-test1')
- });
- },
- 5200
-);
-App.Delay.set(function() {
- test('interval - test 1 - 2/2', function() {
-
- // check
- equal(window.testInterval1, 4, 'interval - test after clear')
- });
- },
- 6500
-);
-
-
-// interval 2
-window.testInterval2 = 1
-App.Interval.set(function() {
- window.testInterval2 += 1;
- },
- 2000,
- undefined,
- 'someLevel'
-);
-App.Delay.set(function() {
- test('interval - test 2 - 1/2', function() {
-
- // check
- equal(window.testInterval2, 4, 'interval - test 2')
- App.Interval.clearLevel('someLevel')
- });
- },
- 5200
-);
-App.Delay.set(function() {
- test('interval - test 2 - 2/2', function() {
-
- // check
- equal(window.testInterval2, 4, 'interval - test 2 - after clear')
- });
- },
- 6900
-);
-
-
-// i18n
-test('i18n', function() {
-
- // de
- App.i18n.set('de-de')
- var translated = App.i18n.translateContent('yes')
- equal(translated, 'ja', 'de-de - yes / ja translated correctly')
-
- translated = App.i18n.translatePlain('yes')
- equal(translated, 'ja', 'de-de - yes / ja translated correctly')
-
- translated = App.i18n.translateInline('yes')
- equal(translated, 'ja', 'de-de - yes / ja translated correctly')
-
- translated = App.i18n.translateContent('%s ago', 123);
- equal(translated, 'vor 123', 'de-de - %s')
-
- translated = App.i18n.translateContent('%s ago', 'quote')
- equal(translated, 'vor <b>quote</b>', 'de-de - %s - quote')
-
- translated = App.i18n.translateContent('%s %s test', 123, 'xxx |B|')
- equal(translated, '123 xxx |B| test', 'de-de - %s %s')
-
- translated = App.i18n.translateContent('|%s| %s test', 123, 'xxx')
- equal(translated, '123 xxx test', 'de-de - *%s* %s')
-
- translated = App.i18n.translateContent('||%s|| %s test', 123, 'xxx')
- equal(translated, '123 xxx test', 'de-de - *%s* %s')
-
- translated = App.i18n.translateContent('_%s_ %s test', 123, 'xxx')
- equal(translated, '123 xxx test', 'de-de - _%s_ %s')
-
- translated = App.i18n.translateContent('§%s§ %s test', 123, 'xxx')
- equal(translated, '123 xxx test', 'de-de - §%s§ %s')
-
- translated = App.i18n.translateContent('//%s// %s test', 123, 'xxx')
- equal(translated, '123 xxx test', 'de-de - //%s// %s')
-
- translated = App.i18n.translateContent('\'%s\' %s test', 123, 'xxx')
- equal(translated, ''123' xxx test', 'de-de - \'%s\' %s')
-
- translated = App.i18n.translateContent('//*äöüß')
- equal(translated, '<test&now>//*äöüß', 'de - //*äöüß')
-
- translated = App.i18n.translateContent('some link [to what ever](http://lalala)')
- equal(translated, 'some link to what ever', 'de-de - link')
-
- translated = App.i18n.translateContent('some link [to what ever](%s)', 'http://lalala')
- equal(translated, 'some link to what ever', 'de-de - link')
-
- translated = App.i18n.translateContent('Enables user authentication via %s. Register your app first at [%s](%s).', 'XXX', 'YYY', 'http://lalala')
- equal(translated, 'Aktivieren der Benutzeranmeldung über XXX. Registriere Deine Anwendung zuerst über YYY.', 'en-us - link')
-
- var time_local = new Date();
- var offset = time_local.getTimezoneOffset();
- var timestamp = App.i18n.translateTimestamp('2012-11-06T21:07:24Z', offset);
- equal(timestamp, '06.11.2012 21:07', 'de-de - timestamp translated correctly')
-
- timestamp = App.i18n.translateTimestamp('', offset);
- equal(timestamp, '', 'de-de - timestamp translated correctly')
-
- timestamp = App.i18n.translateTimestamp(null, offset);
- equal(timestamp, null, 'de-de - timestamp translated correctly')
-
- timestamp = App.i18n.translateTimestamp(undefined, offset);
- equal(timestamp, undefined, 'de-de - timestamp translated correctly')
-
- var date = App.i18n.translateDate('2012-11-06', 0)
- equal(date, '06.11.2012', 'de-de - date translated correctly')
-
- date = App.i18n.translateDate('', 0)
- equal(date, '', 'de-de - date translated correctly')
-
- date = App.i18n.translateDate(null, 0)
- equal(date, null, 'de-de - date translated correctly')
-
- date = App.i18n.translateDate(undefined, 0)
- equal(date, undefined, 'de-de - date translated correctly')
-
- // en
- App.i18n.set('en-us')
- translated = App.i18n.translateContent('yes')
- equal(translated, 'yes', 'en-us - yes translated correctly')
-
- translated = App.i18n.translatePlain('yes')
- equal(translated, 'yes', 'en-us - yes translated correctly')
-
- translated = App.i18n.translateInline('yes')
- equal(translated, 'yes', 'en-us - yes translated correctly')
-
- translated = App.i18n.translateContent('%s ago', 123);
- equal(translated, '123 ago', 'en-us - %s')
-
- translated = App.i18n.translateContent('%s ago', 'quote')
- equal(translated, '<b>quote</b> ago', 'en-us - %s - qupte')
-
- translated = App.i18n.translateContent('%s %s test', 123, 'xxx')
- equal(translated, '123 xxx test', 'en-us - %s %s')
-
- translated = App.i18n.translateContent('|%s| %s test', 123, 'xxx |B|')
- equal(translated, '123 xxx |B| test', 'en-us - *%s* %s')
-
- translated = App.i18n.translateContent('||%s|| %s test', 123, 'xxx')
- equal(translated, '123 xxx test', 'en-us - *%s* %s')
-
- translated = App.i18n.translateContent('_%s_ %s test', 123, 'xxx')
- equal(translated, '123 xxx test', 'en-us - _%s_ %s')
-
- translated = App.i18n.translateContent('§%s§ %s test', 123, 'xxx')
- equal(translated, '123 xxx test', 'en-us - §%s§ %s')
-
- translated = App.i18n.translateContent('Here you can search for tickets, customers and organizations. Use the wildcard §*§ to find everything. E. g. §smi*§ or §rosent*l§. You also can use ||double quotes|| for searching phrases §"some phrase"§.')
- equal(translated, 'Here you can search for tickets, customers and organizations. Use the wildcard * to find everything. E. g. smi* or rosent*l. You also can use double quotes for searching phrases "some phrase".', 'en-us - §§ §§ §§ || §§')
-
- translated = App.i18n.translateContent('//%s// %s test', 123, 'xxx')
- equal(translated, '123 xxx test', 'en-us - //%s// %s')
-
- translated = App.i18n.translateContent('\'%s\' %s test', 123, 'xxx')
- equal(translated, ''123' xxx test', 'en-us - \'%s\' %s')
-
- translated = App.i18n.translateContent('')
- equal(translated, '<test&now>', 'en-us - ')
-
- translated = App.i18n.translateContent('some link [to what ever](http://lalala)')
- equal(translated, 'some link to what ever', 'en-us - link')
-
- translated = App.i18n.translateContent('some link [to what ever](%s)', 'http://lalala')
- equal(translated, 'some link to what ever', 'en-us - link')
-
- translated = App.i18n.translateContent('Enables user authentication via %s. Register your app first at [%s](%s).', 'XXX', 'YYY', 'http://lalala')
- equal(translated, 'Enables user authentication via XXX. Register your app first at YYY.', 'en-us - link')
-
- timestamp = App.i18n.translateTimestamp('2012-11-06T21:07:24Z', offset)
- equal(timestamp, '11/06/2012 21:07', 'en - timestamp translated correctly')
-
- timestamp = App.i18n.translateTimestamp('', offset);
- equal(timestamp, '', 'en - timestamp translated correctly')
-
- timestamp = App.i18n.translateTimestamp(null, offset);
- equal(timestamp, null, 'en - timestamp translated correctly')
-
- timestamp = App.i18n.translateTimestamp(undefined, offset);
- equal(timestamp, undefined, 'en - timestamp translated correctly')
-
- date = App.i18n.translateDate('2012-11-06', 0)
- equal(date, '11/06/2012', 'en - date translated correctly')
-
- date = App.i18n.translateDate('', 0)
- equal(date, '', 'en - date translated correctly')
-
- date = App.i18n.translateDate(null, 0)
- equal(date, null, 'en - date translated correctly')
-
- date = App.i18n.translateDate(undefined, 0)
- equal(date, undefined, 'en - date translated correctly')
-
- // locale alias test
- // de
- App.i18n.set('de')
- var translated = App.i18n.translateContent('yes')
- equal(translated, 'ja', 'de - yes / ja translated correctly')
-
- // locale detection test
- // de-ch
- App.i18n.set('de-ch')
- var translated = App.i18n.translateContent('yes')
- equal(translated, 'ja', 'de - yes / ja translated correctly')
-});
-
-// events
-test('events simple', function() {
-
- // single bind
- App.Event.bind('test1', function(data) {
- ok(true, 'event received - single bind')
- equal(data.success, true, 'event received - data ok - single bind')
- });
- App.Event.bind('test2', function(data) {
- ok(false, 'should not be triggered - single bind')
- });
- App.Event.trigger('test1', { success: true })
-
- App.Event.unbind('test1')
- App.Event.bind('test1', function(data) {
- ok(false, 'should not be triggered - single bind')
- });
- App.Event.unbind('test1')
- App.Event.trigger('test1', { success: true })
-
- // multi bind
- App.Event.bind('test1-1 test1-2', function(data) {
- ok(true, 'event received - multi bind')
- equal(data.success, true, 'event received - data ok - multi bind')
- });
- App.Event.bind('test1-3', function(data) {
- ok(false, 'should not be triggered - multi bind')
- });
- App.Event.trigger('test1-2', { success: true })
-
- App.Event.unbind('test1-1')
- App.Event.bind('test1-1', function(data) {
- ok(false, 'should not be triggered - multi bind')
- });
- App.Event.trigger('test1-2', { success: true })
-});
-
-test('events level', function() {
-
- // bind with level
- App.Event.bind('test3', function(data) {
- ok(false, 'should not be triggered!')
- }, 'test-level')
-
- // unbind with level
- App.Event.unbindLevel( 'test-level')
-
- // bind with level
- App.Event.bind('test3', function(data) {
- ok(true, 'event received')
- equal(data.success, true, 'event received - data ok - level bind')
- }, 'test-level')
- App.Event.trigger('test3', { success: true})
-
-});
-
-// session store
-test('session store', function() {
-
- var tests = [
- 'some 123äöüßadajsdaiosjdiaoidj',
- { key: 123 },
- { key1: { key1: [1,2,3,4] }, key2: [1,2,'äöüß'] },
- ];
-
- // write/get
- App.SessionStorage.clear()
- _.each(tests, function(test) {
- App.SessionStorage.set('test1', test)
- var item = App.SessionStorage.get('test1')
- deepEqual(test, item, 'write/get - compare stored and actual data')
- });
-
- // undefined/get
- App.SessionStorage.clear()
- _.each(tests, function(test) {
- var item = App.SessionStorage.get('test1')
- deepEqual(undefined, item, 'undefined/get - compare not existing data and actual data')
- });
-
- // write/get/delete
- var tests = [
- { key: 'test1', value: 'some 123äöüßadajsdaiosjdiaoidj' },
- { key: 123, value: { a: 123, b: 'sdaad' } },
- { key: '123äöüß', value: { key1: [1,2,3,4] }, key2: [1,2,'äöüß'] },
- ];
-
- App.SessionStorage.clear()
- _.each(tests, function(test) {
- App.SessionStorage.set(test.key, test.value)
- });
-
- _.each(tests, function(test) {
- var item = App.SessionStorage.get(test.key)
- deepEqual(test.value, item, 'write/get/delete - compare stored and actual data')
- App.SessionStorage.delete( test.key)
- item = App.SessionStorage.get(test.key)
- deepEqual(undefined, item, 'write/get/delete - compare deleted data')
- });
-
-});
-
-// config
-test('config', function() {
-
- // simple
- var tests = [
- { key: 'test1', value: 'some 123äöüßadajsdaiosjdiaoidj' },
- { key: 123, value: { a: 123, b: 'sdaad' } },
- { key: '123äöüß', value: { key1: [1,2,3,4] }, key2: [1,2,'äöüß'] },
- ];
-
- _.each(tests, function(test) {
- App.Config.set(test.key, test.value )
- });
-
- _.each(tests, function(test) {
- var item = App.Config.get(test.key )
- deepEqual(item, test.value, 'set/get tests')
- });
-
- // group
- var test_groups = [
- { key: 'test2', value: [ 'some 123äöüßadajsdaiosjdiaoidj' ] },
- { key: 1234, value: { a: 123, b: 'sdaad' } },
- { key: '123äöüß', value: { key1: [1,2,3,4,5,6] }, key2: [1,2,'äöüß'] },
- ];
- var group = {};
- _.each(test_groups, function(test) {
- App.Config.set(test.key, test.value, 'group1')
- group[test.key] = test.value
- });
-
- // verify whole group
- var item = App.Config.get('group1')
- deepEqual(item, group, 'group - verify group hash')
-
- // verify each setting
- _.each(test_groups, function(test) {
- var item = App.Config.get(test.key, 'group1')
- deepEqual(item, test.value, 'group set/get tests')
- });
-});
-
-
-// clone
-test('clone', function() {
-
- // simple
- var tests = [
- {
- key1: 123,
- key2: 1234
- },
- {
- key1: 123,
- key2: '1234'
- },
- [1,2,4,5,6],
- 'some string äöü',
- {
- key1: 123,
- key2: null,
- },
- {
- key1: 123,
- key2: undefined,
- },
- {
- key1: 123,
- key2: undefined,
- key3: {
- keya: 'some',
- keyb: undefined,
+ callback = function() {
+ // ajax
+ App.Ajax.request({
+ type: 'GET',
+ url: '/assets/tests/ajax-test.json',
+ success: function (data) {
+ test( "ajax get 200", function() {
+ ok( true, "File found!")
+ equal(data.success, true, "content parsable and ok!")
+ equal(data.success2, undefined, "content parsable and ok!")
+ });
},
- key4: ['a', 'b', null, false, true, undefined],
- },
- undefined,
- false,
- true,
- null,
- {
- key1: 123,
- key2: undefined,
- key3: {
- keya: 'some',
- keyb: undefined,
+ error: function (data) {
+ test( "ajax", function() {
+ ok( false, "Failed!")
+ });
+ }
+ });
+
+ // ajax queueing
+ App.Ajax.request({
+ type: 'GET',
+ url: '/tests/wait/2',
+ queue: true,
+ success: function (data) {
+ test( "ajax - queue - ajax get 200 1/2", function() {
+
+ // check queue
+ ok( !window.testAjax, 'ajax - queue - check queue')
+ window.testAjax = true;
+ equal(data.success, true, "ajax - queue - content parsable and ok!")
+ equal(data.success2, undefined, "ajax - queue - content parsable and ok!")
+ });
},
- key4: ['a', 'b', {
- a: 123,
- b: [1,5,7,8,1213,1231321]
- }],
- },
- ];
+ error: function (data) {
+ test( "ajax", function() {
+ ok( false, "Failed!")
+ });
+ }
+ });
+ App.Ajax.request({
+ type: 'GET',
+ url: '/tests/wait/1',
+ queue: true,
+ success: function (data) {
+ test( "ajax - queue - ajax get 200 2/2", function() {
+ // check queue
+ ok( window.testAjax, 'ajax - queue - check queue')
+ window.testAjax = undefined;
- _.each(tests, function(test) {
- var item = clone( test )
- deepEqual(item, test, 'clone')
- });
+ equal(data.success, true, "content parsable and ok!")
+ equal(data.success2, undefined, "content parsable and ok!")
+ });
+ },
+ error: function (data) {
+ test( "ajax", function() {
+ ok( false, "Failed!")
+ });
+ }
+ });
- // complex test
- var source = [
- { name: 'some name' },
- { name: 'some name2' },
- { fn: function() { return 'test' } },
- ]
- var reference = [
- { name: 'some name' },
- { name: 'some name2' },
- { fn: undefined },
- ]
- var result = clone( source )
+ // ajax parallel
+ App.Ajax.request({
+ type: 'GET',
+ url: '/tests/wait/3',
+ success: function (data) {
+ test( "ajax - parallel - ajax get 200 1/2", function() {
- // modify source later, should not have any result
- source[0].name = 'some new name'
+ // check queue
+ ok( window.testAjaxQ, 'ajax - parallel - check queue')
+ window.testAjaxQ = undefined;
+ equal(data.success, true, "ajax - parallel - content parsable and ok!")
+ equal(data.success2, undefined, "ajax - parallel - content parsable and ok!")
+ });
+ },
+ error: function (data) {
+ test( "ajax", function() {
+ ok( false, "Failed!")
+ });
+ }
+ });
+ App.Ajax.request({
+ type: 'GET',
+ url: '/tests/wait/1',
+ success: function (data) {
+ test( "ajax - parallel - ajax get 200 2/2", function() {
+ // check queue
+ ok( !window.testAjaxQ, 'ajax - parallel - check queue')
+ window.testAjaxQ = true;
- deepEqual(result, reference, 'clone')
+ equal(data.success, true, "content parsable and ok!")
+ equal(data.success2, undefined, "content parsable and ok!")
+ });
+ },
+ error: function (data) {
+ test( "ajax", function() {
+ ok( false, "Failed!")
+ });
+ }
+ });
- // full test
- var source = [
- { name: 'some name' },
- { name: 'some name2' },
- { fn: function a() { return 'test' } },
- ]
- var reference = [
- { name: 'some name' },
- { name: 'some name2' },
- { fn: function a() { return 'test' } },
- ]
- var result = clone( source, true )
+ // delay
+ window.testDelay1 = false
+ App.Delay.set(function() {
+ test('delay - test 1 - 1/3 - should not be executed, will be reset by next set()', function() {
- // modify source later, should not have any result
- source[0].name = 'some new name'
- source[2].fn = 'some new name'
+ // check
+ ok(false, 'delay - test 1 - 1/3 - should not be executed, will be reset by next set()')
+ window.testDelay1 = true;
+ });
+ },
+ 1000,
+ 'delay-test1',
+ 'level'
+ );
+ App.Delay.set(function() {
+ test('delay - test 1 - 2/3', function() {
- deepEqual(result[0], reference[0], 'clone full')
- deepEqual(result[1], reference[1], 'clone full')
+ // check
+ ok(!window.testDelay1, 'delay - test 1 - 2/3')
+ window.testDelay1 = 1;
+ });
+ },
+ 2000,
+ 'delay-test1',
+ 'level'
+ );
+ App.Delay.set(function() {
+ test('delay - test 1 - 2/3', function() {
- equal(typeof reference[2].fn, 'function')
- equal(typeof result[2].fn, 'function')
+ // check
+ ok(window.testDelay1, 'delay - test 1 - 2/3')
+ window.testDelay1 = false;
+ });
+ },
+ 3000,
+ 'delay-test1-verify',
+ 'level'
+ );
- equal(reference[2].fn(), 'test')
- equal(result[2].fn(), 'test')
+ App.Delay.set(function() {
+ test('delay - test 2 - 1/3', function() {
-});
+ // check
+ ok(!window.testDelay2, 'delay - test 2 - 1/3')
+ window.testDelay2 = 1;
+ });
+ },
+ 2000
+ );
+ App.Delay.set(function() {
+ test('delay - test 2 - 2/3', function() {
-// diff
-test('difference', function() {
+ // check
+ ok(!window.testDelay2, 'delay - test 2 - 2/3')
+ });
+ },
+ 1000
+ );
+ App.Delay.set(function() {
+ test('delay - test 2 - 3/3', function() {
- // simple
- var object1 = {
- key1: 123,
- key2: 1234
- }
- var object2 = {
- key1: 123,
- key2: 1235
- }
- var result = {
- key2: 1235
- }
- var item = difference(object1, object2)
- deepEqual(item, result)
+ // check
+ ok(window.testDelay2, 'delay - test 2 - 3/3')
+ });
+ },
+ 3000
+ );
- object1 = {
- key1: 123,
- key2: 123
- }
- object2 = {
- key1: 123,
- key2: 123
- }
- result = {}
- item = difference(object1, object2)
- deepEqual(item, result)
+ window.testDelay3 = 1;
+ App.Delay.set(function() {
+ test('delay - test 3 - 1/1', function() {
- object1 = {
- key1: 123,
- key2: [1,3,5]
- }
- object2 = {
- key1: 123,
- key2: 123
- }
- result = {
- key2: 123
- }
- item = difference(object1, object2)
- deepEqual(item, result)
+ // check
+ ok(false, 'delay - test 3 - 1/1')
+ });
+ },
+ 1000,
+ 'delay3'
+ );
+ App.Delay.clear('delay3')
- object1 = {
- key1: 123,
- key2: [1,3,5]
- }
- object2 = {
- key1: 123,
- }
- result = {}
- item = difference(object1, object2)
- deepEqual(item, result)
+ App.Delay.set(function() {
+ test('delay - test 4 - 1/1', function() {
- object1 = {
- key1: 123,
- }
- object2 = {
- key1: 123,
- key2: 124
- }
- result = {}
- item = difference(object1, object2)
- deepEqual(item, result)
+ // check
+ ok(false, 'delay - test 4 - 1/1')
+ });
+ },
+ 1000,
+ undefined,
+ 'Page'
+ );
+ App.Delay.clearLevel('Page')
- object1 = {
- customer_id: 1,
- organization_id: 2,
- }
- object2 = {
- customer_id: 1,
- organization_id: null,
- }
- result = {
- organization_id: null,
- }
- item = difference(object1, object2)
- deepEqual(item, result)
- object1 = {
- customer_id: 1,
- organization_id: null,
- }
- object2 = {
- customer_id: 1,
- organization_id: 2,
- }
- result = {
- organization_id: 2,
- }
- item = difference(object1, object2)
- deepEqual(item, result)
+ // interval 1
+ window.testInterval1 = 1
+ App.Interval.set(function() {
+ window.testInterval1 += 1;
+ },
+ 2000,
+ 'interval-test1'
+ );
+ App.Delay.set(function() {
+ test('interval - test 1 - 1/2', function() {
-});
+ // check
+ equal(window.testInterval1, 4, 'interval - test 1')
+ App.Interval.clear('interval-test1')
+ });
+ },
+ 5200
+ );
+ App.Delay.set(function() {
+ test('interval - test 1 - 2/2', function() {
-// auth
-App.Auth.login({
- data: {
- username: 'not_existing',
- password: 'not_existing',
- },
- success: function(data) {
- test('auth - not existing user', function() {
- ok(false, 'ok')
- })
- },
- error: function() {
- test('auth - not existing user', function() {
- ok(true, 'ok')
- authWithSession()
- })
- }
-});
+ // check
+ equal(window.testInterval1, 4, 'interval - test after clear')
+ });
+ },
+ 6500
+ );
-var authWithSession = function() {
- App.Auth.login({
- data: {
- username: 'master@example.com',
- password: 'test',
- },
- success: function(data) {
- test('auth - existing user', function() {
- ok(true, 'authenticated')
- var user = App.Session.get('login')
- equal('master@example.com', user, 'session login')
- })
- },
- error: function() {
- test('auth - existing user', function() {
- ok(false, 'not authenticated')
- })
+
+ // interval 2
+ window.testInterval2 = 1
+ App.Interval.set(function() {
+ window.testInterval2 += 1;
+ },
+ 2000,
+ undefined,
+ 'someLevel'
+ );
+ App.Delay.set(function() {
+ test('interval - test 2 - 1/2', function() {
+
+ // check
+ equal(window.testInterval2, 4, 'interval - test 2')
+ App.Interval.clearLevel('someLevel')
+ });
+ },
+ 5200
+ );
+ App.Delay.set(function() {
+ test('interval - test 2 - 2/2', function() {
+
+ // check
+ equal(window.testInterval2, 4, 'interval - test 2 - after clear')
+ });
+ },
+ 6900
+ );
+
+
+ // events
+ test('events simple', function() {
+
+ // single bind
+ App.Event.bind('test1', function(data) {
+ ok(true, 'event received - single bind')
+ equal(data.success, true, 'event received - data ok - single bind')
+ });
+ App.Event.bind('test2', function(data) {
+ ok(false, 'should not be triggered - single bind')
+ });
+ App.Event.trigger('test1', { success: true })
+
+ App.Event.unbind('test1')
+ App.Event.bind('test1', function(data) {
+ ok(false, 'should not be triggered - single bind')
+ });
+ App.Event.unbind('test1')
+ App.Event.trigger('test1', { success: true })
+
+ // multi bind
+ App.Event.bind('test1-1 test1-2', function(data) {
+ ok(true, 'event received - multi bind')
+ equal(data.success, true, 'event received - data ok - multi bind')
+ });
+ App.Event.bind('test1-3', function(data) {
+ ok(false, 'should not be triggered - multi bind')
+ });
+ App.Event.trigger('test1-2', { success: true })
+
+ App.Event.unbind('test1-1')
+ App.Event.bind('test1-1', function(data) {
+ ok(false, 'should not be triggered - multi bind')
+ });
+ App.Event.trigger('test1-2', { success: true })
+ });
+
+ test('events level', function() {
+
+ // bind with level
+ App.Event.bind('test3', function(data) {
+ ok(false, 'should not be triggered!')
+ }, 'test-level')
+
+ // unbind with level
+ App.Event.unbindLevel( 'test-level')
+
+ // bind with level
+ App.Event.bind('test3', function(data) {
+ ok(true, 'event received')
+ equal(data.success, true, 'event received - data ok - level bind')
+ }, 'test-level')
+ App.Event.trigger('test3', { success: true})
+
+ });
+
+ // session store
+ test('session store', function() {
+
+ var tests = [
+ 'some 123äöüßadajsdaiosjdiaoidj',
+ { key: 123 },
+ { key1: { key1: [1,2,3,4] }, key2: [1,2,'äöüß'] },
+ ];
+
+ // write/get
+ App.SessionStorage.clear()
+ _.each(tests, function(test) {
+ App.SessionStorage.set('test1', test)
+ var item = App.SessionStorage.get('test1')
+ deepEqual(test, item, 'write/get - compare stored and actual data')
+ });
+
+ // undefined/get
+ App.SessionStorage.clear()
+ _.each(tests, function(test) {
+ var item = App.SessionStorage.get('test1')
+ deepEqual(undefined, item, 'undefined/get - compare not existing data and actual data')
+ });
+
+ // write/get/delete
+ var tests = [
+ { key: 'test1', value: 'some 123äöüßadajsdaiosjdiaoidj' },
+ { key: 123, value: { a: 123, b: 'sdaad' } },
+ { key: '123äöüß', value: { key1: [1,2,3,4] }, key2: [1,2,'äöüß'] },
+ ];
+
+ App.SessionStorage.clear()
+ _.each(tests, function(test) {
+ App.SessionStorage.set(test.key, test.value)
+ });
+
+ _.each(tests, function(test) {
+ var item = App.SessionStorage.get(test.key)
+ deepEqual(test.value, item, 'write/get/delete - compare stored and actual data')
+ App.SessionStorage.delete( test.key)
+ item = App.SessionStorage.get(test.key)
+ deepEqual(undefined, item, 'write/get/delete - compare deleted data')
+ });
+
+ });
+
+ // config
+ test('config', function() {
+
+ // simple
+ var tests = [
+ { key: 'test1', value: 'some 123äöüßadajsdaiosjdiaoidj' },
+ { key: 123, value: { a: 123, b: 'sdaad' } },
+ { key: '123äöüß', value: { key1: [1,2,3,4] }, key2: [1,2,'äöüß'] },
+ ];
+
+ _.each(tests, function(test) {
+ App.Config.set(test.key, test.value )
+ });
+
+ _.each(tests, function(test) {
+ var item = App.Config.get(test.key )
+ deepEqual(item, test.value, 'set/get tests')
+ });
+
+ // group
+ var test_groups = [
+ { key: 'test2', value: [ 'some 123äöüßadajsdaiosjdiaoidj' ] },
+ { key: 1234, value: { a: 123, b: 'sdaad' } },
+ { key: '123äöüß', value: { key1: [1,2,3,4,5,6] }, key2: [1,2,'äöüß'] },
+ ];
+ var group = {};
+ _.each(test_groups, function(test) {
+ App.Config.set(test.key, test.value, 'group1')
+ group[test.key] = test.value
+ });
+
+ // verify whole group
+ var item = App.Config.get('group1')
+ deepEqual(item, group, 'group - verify group hash')
+
+ // verify each setting
+ _.each(test_groups, function(test) {
+ var item = App.Config.get(test.key, 'group1')
+ deepEqual(item, test.value, 'group set/get tests')
+ });
+ });
+
+
+ // clone
+ test('clone', function() {
+
+ // simple
+ var tests = [
+ {
+ key1: 123,
+ key2: 1234
+ },
+ {
+ key1: 123,
+ key2: '1234'
+ },
+ [1,2,4,5,6],
+ 'some string äöü',
+ {
+ key1: 123,
+ key2: null,
+ },
+ {
+ key1: 123,
+ key2: undefined,
+ },
+ {
+ key1: 123,
+ key2: undefined,
+ key3: {
+ keya: 'some',
+ keyb: undefined,
+ },
+ key4: ['a', 'b', null, false, true, undefined],
+ },
+ undefined,
+ false,
+ true,
+ null,
+ {
+ key1: 123,
+ key2: undefined,
+ key3: {
+ keya: 'some',
+ keyb: undefined,
+ },
+ key4: ['a', 'b', {
+ a: 123,
+ b: [1,5,7,8,1213,1231321]
+ }],
+ },
+ ];
+
+ _.each(tests, function(test) {
+ var item = clone( test )
+ deepEqual(item, test, 'clone')
+ });
+
+ // complex test
+ var source = [
+ { name: 'some name' },
+ { name: 'some name2' },
+ { fn: function() { return 'test' } },
+ ]
+ var reference = [
+ { name: 'some name' },
+ { name: 'some name2' },
+ { fn: undefined },
+ ]
+ var result = clone( source )
+
+ // modify source later, should not have any result
+ source[0].name = 'some new name'
+
+ deepEqual(result, reference, 'clone')
+
+ // full test
+ var source = [
+ { name: 'some name' },
+ { name: 'some name2' },
+ { fn: function a() { return 'test' } },
+ ]
+ var reference = [
+ { name: 'some name' },
+ { name: 'some name2' },
+ { fn: function a() { return 'test' } },
+ ]
+ var result = clone( source, true )
+
+ // modify source later, should not have any result
+ source[0].name = 'some new name'
+ source[2].fn = 'some new name'
+
+ deepEqual(result[0], reference[0], 'clone full')
+ deepEqual(result[1], reference[1], 'clone full')
+
+ equal(typeof reference[2].fn, 'function')
+ equal(typeof result[2].fn, 'function')
+
+ equal(reference[2].fn(), 'test')
+ equal(result[2].fn(), 'test')
+
+ });
+
+ // diff
+ test('difference', function() {
+
+ // simple
+ var object1 = {
+ key1: 123,
+ key2: 1234
+ }
+ var object2 = {
+ key1: 123,
+ key2: 1235
+ }
+ var result = {
+ key2: 1235
+ }
+ var item = difference(object1, object2)
+ deepEqual(item, result)
+
+ object1 = {
+ key1: 123,
+ key2: 123
+ }
+ object2 = {
+ key1: 123,
+ key2: 123
+ }
+ result = {}
+ item = difference(object1, object2)
+ deepEqual(item, result)
+
+ object1 = {
+ key1: 123,
+ key2: [1,3,5]
+ }
+ object2 = {
+ key1: 123,
+ key2: 123
+ }
+ result = {
+ key2: 123
+ }
+ item = difference(object1, object2)
+ deepEqual(item, result)
+
+ object1 = {
+ key1: 123,
+ key2: [1,3,5]
+ }
+ object2 = {
+ key1: 123,
+ }
+ result = {}
+ item = difference(object1, object2)
+ deepEqual(item, result)
+
+ object1 = {
+ key1: 123,
+ }
+ object2 = {
+ key1: 123,
+ key2: 124
+ }
+ result = {}
+ item = difference(object1, object2)
+ deepEqual(item, result)
+
+ object1 = {
+ customer_id: 1,
+ organization_id: 2,
+ }
+ object2 = {
+ customer_id: 1,
+ organization_id: null,
+ }
+ result = {
+ organization_id: null,
+ }
+ item = difference(object1, object2)
+ deepEqual(item, result)
+
+ object1 = {
+ customer_id: 1,
+ organization_id: null,
+ }
+ object2 = {
+ customer_id: 1,
+ organization_id: 2,
+ }
+ result = {
+ organization_id: 2,
+ }
+ item = difference(object1, object2)
+ deepEqual(item, result)
+
+ });
+
+ // auth
+ App.Auth.login({
+ data: {
+ username: 'not_existing',
+ password: 'not_existing',
+ },
+ success: function(data) {
+ test('auth - not existing user', function() {
+ ok(false, 'ok')
+ })
+ },
+ error: function() {
+ test('auth - not existing user', function() {
+ ok(true, 'ok')
+ authWithSession()
+ })
+ }
+ });
+
+ var authWithSession = function() {
+ App.Auth.login({
+ data: {
+ username: 'master@example.com',
+ password: 'test',
+ },
+ success: function(data) {
+ test('auth - existing user', function() {
+ ok(true, 'authenticated')
+ var user = App.Session.get('login')
+ equal('master@example.com', user, 'session login')
+ })
+ },
+ error: function() {
+ test('auth - existing user', function() {
+ ok(false, 'not authenticated')
+ })
+ }
+ });
}
- });
-}
+ }
+
+ // run tests after the app has been initialized to avoid race condition
+ // between interval (timing) checks that may delayed by JS parsing
+ // and App initialization
+ App.Event.bind("app:ready", callback)
}
diff --git a/public/assets/tests/i18n.js b/public/assets/tests/i18n.js
index a4fdb2419..6fc3c10a4 100644
--- a/public/assets/tests/i18n.js
+++ b/public/assets/tests/i18n.js
@@ -55,4 +55,173 @@ test('i18n .detectBrowserLocale', function() {
equal(App.i18n.detectBrowserLocale(), 'lt')
reset()
+
+ // i18n
+ test('i18n', function() {
+
+ // de
+ App.i18n.set('de-de')
+ var translated = App.i18n.translateContent('yes')
+ equal(translated, 'ja', 'de-de - yes / ja translated correctly')
+
+ translated = App.i18n.translatePlain('yes')
+ equal(translated, 'ja', 'de-de - yes / ja translated correctly')
+
+ translated = App.i18n.translateInline('yes')
+ equal(translated, 'ja', 'de-de - yes / ja translated correctly')
+
+ translated = App.i18n.translateContent('%s ago', 123);
+ equal(translated, 'vor 123', 'de-de - %s')
+
+ translated = App.i18n.translateContent('%s ago', 'quote')
+ equal(translated, 'vor <b>quote</b>', 'de-de - %s - quote')
+
+ translated = App.i18n.translateContent('%s %s test', 123, 'xxx |B|')
+ equal(translated, '123 xxx |B| test', 'de-de - %s %s')
+
+ translated = App.i18n.translateContent('|%s| %s test', 123, 'xxx')
+ equal(translated, '123 xxx test', 'de-de - *%s* %s')
+
+ translated = App.i18n.translateContent('||%s|| %s test', 123, 'xxx')
+ equal(translated, '123 xxx test', 'de-de - *%s* %s')
+
+ translated = App.i18n.translateContent('_%s_ %s test', 123, 'xxx')
+ equal(translated, '123 xxx test', 'de-de - _%s_ %s')
+
+ translated = App.i18n.translateContent('§%s§ %s test', 123, 'xxx')
+ equal(translated, '123 xxx test', 'de-de - §%s§ %s')
+
+ translated = App.i18n.translateContent('//%s// %s test', 123, 'xxx')
+ equal(translated, '123 xxx test', 'de-de - //%s// %s')
+
+ translated = App.i18n.translateContent('\'%s\' %s test', 123, 'xxx')
+ equal(translated, ''123' xxx test', 'de-de - \'%s\' %s')
+
+ translated = App.i18n.translateContent('//*äöüß')
+ equal(translated, '<test&now>//*äöüß', 'de - //*äöüß')
+
+ translated = App.i18n.translateContent('some link [to what ever](http://lalala)')
+ equal(translated, 'some link to what ever', 'de-de - link')
+
+ translated = App.i18n.translateContent('some link [to what ever](%s)', 'http://lalala')
+ equal(translated, 'some link to what ever', 'de-de - link')
+
+ translated = App.i18n.translateContent('Enables user authentication via %s. Register your app first at [%s](%s).', 'XXX', 'YYY', 'http://lalala')
+ equal(translated, 'Aktivieren der Benutzeranmeldung über XXX. Registriere Deine Anwendung zuerst über YYY.', 'en-us - link')
+
+ var time_local = new Date();
+ var offset = time_local.getTimezoneOffset();
+ var timestamp = App.i18n.translateTimestamp('2012-11-06T21:07:24Z', offset);
+ equal(timestamp, '06.11.2012 21:07', 'de-de - timestamp translated correctly')
+
+ timestamp = App.i18n.translateTimestamp('', offset);
+ equal(timestamp, '', 'de-de - timestamp translated correctly')
+
+ timestamp = App.i18n.translateTimestamp(null, offset);
+ equal(timestamp, null, 'de-de - timestamp translated correctly')
+
+ timestamp = App.i18n.translateTimestamp(undefined, offset);
+ equal(timestamp, undefined, 'de-de - timestamp translated correctly')
+
+ var date = App.i18n.translateDate('2012-11-06', 0)
+ equal(date, '06.11.2012', 'de-de - date translated correctly')
+
+ date = App.i18n.translateDate('', 0)
+ equal(date, '', 'de-de - date translated correctly')
+
+ date = App.i18n.translateDate(null, 0)
+ equal(date, null, 'de-de - date translated correctly')
+
+ date = App.i18n.translateDate(undefined, 0)
+ equal(date, undefined, 'de-de - date translated correctly')
+
+ // en
+ App.i18n.set('en-us')
+ translated = App.i18n.translateContent('yes')
+ equal(translated, 'yes', 'en-us - yes translated correctly')
+
+ translated = App.i18n.translatePlain('yes')
+ equal(translated, 'yes', 'en-us - yes translated correctly')
+
+ translated = App.i18n.translateInline('yes')
+ equal(translated, 'yes', 'en-us - yes translated correctly')
+
+ translated = App.i18n.translateContent('%s ago', 123);
+ equal(translated, '123 ago', 'en-us - %s')
+
+ translated = App.i18n.translateContent('%s ago', 'quote')
+ equal(translated, '<b>quote</b> ago', 'en-us - %s - qupte')
+
+ translated = App.i18n.translateContent('%s %s test', 123, 'xxx')
+ equal(translated, '123 xxx test', 'en-us - %s %s')
+
+ translated = App.i18n.translateContent('|%s| %s test', 123, 'xxx |B|')
+ equal(translated, '123 xxx |B| test', 'en-us - *%s* %s')
+
+ translated = App.i18n.translateContent('||%s|| %s test', 123, 'xxx')
+ equal(translated, '123 xxx test', 'en-us - *%s* %s')
+
+ translated = App.i18n.translateContent('_%s_ %s test', 123, 'xxx')
+ equal(translated, '123 xxx test', 'en-us - _%s_ %s')
+
+ translated = App.i18n.translateContent('§%s§ %s test', 123, 'xxx')
+ equal(translated, '123 xxx test', 'en-us - §%s§ %s')
+
+ translated = App.i18n.translateContent('Here you can search for tickets, customers and organizations. Use the wildcard §*§ to find everything. E. g. §smi*§ or §rosent*l§. You also can use ||double quotes|| for searching phrases §"some phrase"§.')
+ equal(translated, 'Here you can search for tickets, customers and organizations. Use the wildcard * to find everything. E. g. smi* or rosent*l. You also can use double quotes for searching phrases "some phrase".', 'en-us - §§ §§ §§ || §§')
+
+ translated = App.i18n.translateContent('//%s// %s test', 123, 'xxx')
+ equal(translated, '123 xxx test', 'en-us - //%s// %s')
+
+ translated = App.i18n.translateContent('\'%s\' %s test', 123, 'xxx')
+ equal(translated, ''123' xxx test', 'en-us - \'%s\' %s')
+
+ translated = App.i18n.translateContent('')
+ equal(translated, '<test&now>', 'en-us - ')
+
+ translated = App.i18n.translateContent('some link [to what ever](http://lalala)')
+ equal(translated, 'some link to what ever', 'en-us - link')
+
+ translated = App.i18n.translateContent('some link [to what ever](%s)', 'http://lalala')
+ equal(translated, 'some link to what ever', 'en-us - link')
+
+ translated = App.i18n.translateContent('Enables user authentication via %s. Register your app first at [%s](%s).', 'XXX', 'YYY', 'http://lalala')
+ equal(translated, 'Enables user authentication via XXX. Register your app first at YYY.', 'en-us - link')
+
+ timestamp = App.i18n.translateTimestamp('2012-11-06T21:07:24Z', offset)
+ equal(timestamp, '11/06/2012 21:07', 'en - timestamp translated correctly')
+
+ timestamp = App.i18n.translateTimestamp('', offset);
+ equal(timestamp, '', 'en - timestamp translated correctly')
+
+ timestamp = App.i18n.translateTimestamp(null, offset);
+ equal(timestamp, null, 'en - timestamp translated correctly')
+
+ timestamp = App.i18n.translateTimestamp(undefined, offset);
+ equal(timestamp, undefined, 'en - timestamp translated correctly')
+
+ date = App.i18n.translateDate('2012-11-06', 0)
+ equal(date, '11/06/2012', 'en - date translated correctly')
+
+ date = App.i18n.translateDate('', 0)
+ equal(date, '', 'en - date translated correctly')
+
+ date = App.i18n.translateDate(null, 0)
+ equal(date, null, 'en - date translated correctly')
+
+ date = App.i18n.translateDate(undefined, 0)
+ equal(date, undefined, 'en - date translated correctly')
+
+ // locale alias test
+ // de
+ App.i18n.set('de')
+ var translated = App.i18n.translateContent('yes')
+ equal(translated, 'ja', 'de - yes / ja translated correctly')
+
+ // locale detection test
+ // de-ch
+ App.i18n.set('de-ch')
+ var translated = App.i18n.translateContent('yes')
+ equal(translated, 'ja', 'de - yes / ja translated correctly')
+ });
})