Browse Source

Split of qunit tests.

Martin Edenhofer 11 years ago
parent
commit
91db999bf9

+ 9 - 2
app/controllers/tests_controller.rb

@@ -2,8 +2,15 @@
 
 class TestsController < ApplicationController
 
-  # GET /test
-  def index
+  # GET /tests/core
+  def core
+    respond_to do |format|
+      format.html # index.html.erb
+    end
+  end
+
+  # GET /tests/from
+  def form
     respond_to do |format|
       format.html # index.html.erb
     end

+ 16 - 0
app/views/tests/core.html.erb

@@ -0,0 +1,16 @@
+
+<link rel="stylesheet" href="/assets/tests/qunit-1.10.0.css">
+<script src="/assets/tests/qunit-1.10.0.js"></script>
+<script src="/assets/tests/core.js"></script>
+
+<style type="text/css">
+body {
+  padding-top: 0px;
+}
+</style>
+
+<script type="text/javascript">
+</script>
+
+<div id="qunit"></div>
+

+ 1 - 1
app/views/tests/index.html.erb → app/views/tests/form.html.erb

@@ -1,7 +1,7 @@
 
 <link rel="stylesheet" href="/assets/tests/qunit-1.10.0.css">
 <script src="/assets/tests/qunit-1.10.0.js"></script>
-<script src="/assets/tests/tests.js"></script>
+<script src="/assets/tests/form.js"></script>
 
 <style type="text/css">
 body {

+ 3 - 2
config/routes/test.rb

@@ -1,8 +1,9 @@
 module ExtraRoutes
   def add(map)
 
-    map.match '/test',            :to => 'tests#index', :via => :get
-    map.match '/test/wait/:sec',  :to => 'tests#wait',  :via => :get
+    map.match '/tests-core',      :to => 'tests#core',  :via => :get
+    map.match '/tests-form',      :to => 'tests#form',  :via => :get
+    map.match '/tests/wait/:sec', :to => 'tests#wait',  :via => :get
 
   end
   module_function :add

+ 453 - 0
public/assets/tests/core.js

@@ -0,0 +1,453 @@
+
+// ajax
+App.Com.ajax({
+  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.Com.ajax({
+  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.Com.ajax({
+  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.Com.ajax({
+  type:  'GET',
+  url:   '/tests/wait/2',
+  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.Com.ajax({
+  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
+App.Delay.set( function() {
+    test( "delay - test 1 - 1/2", function() {
+
+      // check
+      ok( !window.testDelay1, 'delay - test 1 - 1/2' );
+      window.testDelay1 = true;
+    });
+  },
+  1000,
+  'delay-test1',
+  'level'
+);
+App.Delay.set( function() {
+    test( "delay - test 1 - 2/2", function() {
+
+      // check
+      ok( window.testDelay1, 'delay - test 1 - 2/2' );
+      window.testDelay1 = 1;
+    });
+  },
+  2000,
+  'delay-test1',
+  '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;
+  },
+  500,
+  'interval-test1'
+);
+App.Delay.set( function() {
+    test( "interval - test 1 - 1/1", function() {
+
+      // check
+      equal( window.testInterval1, 6, 'interval - test 1' );
+      App.Interval.clear('interval-test1')
+    });
+  },
+  2500
+);
+App.Delay.set( function() {
+    test( "interval - test 1 - 1/1", function() {
+
+      // check
+      equal( window.testInterval1, 6, 'interval - test after clear' );
+    });
+  },
+  3500
+);
+
+
+// interval 2
+window.testInterval2 = 1
+App.Interval.set( function() {
+    window.testInterval2 += 1;
+  },
+  500,
+  undefined,
+  'page'
+);
+App.Delay.set( function() {
+    test( "interval - test 2 - 1/1", function() {
+
+      // check
+      equal( window.testInterval2, 6, 'interval - test 2' );
+      App.Interval.clearLevel('page')
+    });
+  },
+  2500
+);
+App.Delay.set( function() {
+    test( "interval - test 2 - 1/1", function() {
+
+      // check
+      equal( window.testInterval2, 6, 'interval - test 2 - after clear' );
+    });
+  },
+  3500
+);
+
+
+// i18n
+test( "i18n", function() {
+
+  // de
+  App.i18n.set('de');
+  var translated = App.i18n.translateContent('yes');
+  equal( translated, 'ja', 'de - yes / ja translated correctly' );
+
+  translated = App.i18n.translateContent('<test&now>//*äöüß');
+  equal( translated, '&lt;test&amp;now&gt;//*äöüß', 'de - <test&now>//*äöüß' );
+
+  var timestamp = App.i18n.translateTimestamp('2012-11-06T21:07:24Z');
+  equal( timestamp, '06.11.2012 22:07', 'de - timestamp translated correctly' );
+
+  // en
+  App.i18n.set('en');
+  translated = App.i18n.translateContent('yes');
+  equal( translated, 'yes', 'en - yes translated correctly' );
+
+  translated = App.i18n.translateContent('<test&now>');
+  equal( translated, '&lt;test&amp;now&gt;', 'en - <test&now>' );
+
+  timestamp = App.i18n.translateTimestamp('2012-11-06T21:07:24Z');
+  equal( timestamp, '2012-11-06 22:07', 'en - timestamp 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} );
+
+});
+
+// local store
+test( "local store", function() {
+
+  var tests = [
+    'some 123äöüßadajsdaiosjdiaoidj',
+    { key: 123 },
+    { key1: { key1: [1,2,3,4] }, key2: [1,2,'äöüß'] },
+  ];
+
+  // write/get
+  App.Store.clear()
+  _.each(tests, function(test) {
+    App.Store.write( 'test1', test );
+    var item = App.Store.get( 'test1' );
+    deepEqual( test, item, 'write/get - compare stored and actual data' )
+  });
+
+  // undefined/get
+  App.Store.clear()
+  _.each(tests, function(test) {
+    var item = App.Store.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.Store.clear()
+  _.each(tests, function(test) {
+    App.Store.write( test.key, test.value );
+  });
+
+  _.each(tests, function(test) {
+    var item = App.Store.get( test.key );
+    deepEqual( test.value, item, 'write/get/delete - compare stored and actual data' );
+    App.Store.delete( test.key );
+    item = App.Store.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' );
+  });
+});
+
+
+// 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: 'nicole.braun@zammad.org',
+      password: 'test'
+    },
+    success: function(data) {
+      test( "auth - existing user", function() {
+        ok( true, 'authenticated')
+        var user = App.Session.get('login');
+        equal( 'nicole.braun@zammad.org', user, 'session login')
+      })
+    },
+    error: function() {
+      test( "auth - existing user", function() {
+        ok( false, 'not authenticated')
+      })
+    }
+  });
+}
+

+ 6 - 455
public/assets/tests/tests.js → public/assets/tests/form.js

@@ -1,456 +1,4 @@
 
-// ajax
-App.Com.ajax({
-  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.Com.ajax({
-  type:  'GET',
-  url:   '/test/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.Com.ajax({
-  type:  'GET',
-  url:   '/test/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.Com.ajax({
-  type:  'GET',
-  url:   '/test/wait/2',
-  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.Com.ajax({
-  type:  'GET',
-  url:   '/test/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
-App.Delay.set( function() {
-    test( "delay - test 1 - 1/2", function() {
-
-      // check
-      ok( !window.testDelay1, 'delay - test 1 - 1/2' );
-      window.testDelay1 = true;
-    });
-  },
-  1000,
-  'delay-test1',
-  'level'
-);
-App.Delay.set( function() {
-    test( "delay - test 1 - 2/2", function() {
-
-      // check
-      ok( window.testDelay1, 'delay - test 1 - 2/2' );
-      window.testDelay1 = 1;
-    });
-  },
-  2000,
-  'delay-test1',
-  '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;
-  },
-  500,
-  'interval-test1'
-);
-App.Delay.set( function() {
-    test( "interval - test 1 - 1/1", function() {
-
-      // check
-      equal( window.testInterval1, 6, 'interval - test 1' );
-      App.Interval.clear('interval-test1')
-    });
-  },
-  2500
-);
-App.Delay.set( function() {
-    test( "interval - test 1 - 1/1", function() {
-
-      // check
-      equal( window.testInterval1, 6, 'interval - test after clear' );
-    });
-  },
-  3500
-);
-
-
-// interval 2
-window.testInterval2 = 1
-App.Interval.set( function() {
-    window.testInterval2 += 1;
-  },
-  500,
-  undefined,
-  'page'
-);
-App.Delay.set( function() {
-    test( "interval - test 2 - 1/1", function() {
-
-      // check
-      equal( window.testInterval2, 6, 'interval - test 2' );
-      App.Interval.clearLevel('page')
-    });
-  },
-  2500
-);
-App.Delay.set( function() {
-    test( "interval - test 2 - 1/1", function() {
-
-      // check
-      equal( window.testInterval2, 6, 'interval - test 2 - after clear' );
-    });
-  },
-  3500
-);
-
-
-// i18n
-test( "i18n", function() {
-
-  // de
-  App.i18n.set('de');
-  var translated = App.i18n.translateContent('yes');
-  equal( translated, 'ja', 'de - yes / ja translated correctly' );
-
-  translated = App.i18n.translateContent('<test&now>//*äöüß');
-  equal( translated, '&lt;test&amp;now&gt;//*äöüß', 'de - <test&now>//*äöüß' );
-
-  var timestamp = App.i18n.translateTimestamp('2012-11-06T21:07:24Z');
-  equal( timestamp, '06.11.2012 22:07', 'de - timestamp translated correctly' );
-
-  // en
-  App.i18n.set('en');
-  translated = App.i18n.translateContent('yes');
-  equal( translated, 'yes', 'en - yes translated correctly' );
-
-  translated = App.i18n.translateContent('<test&now>');
-  equal( translated, '&lt;test&amp;now&gt;', 'en - <test&now>' );
-
-  timestamp = App.i18n.translateTimestamp('2012-11-06T21:07:24Z');
-  equal( timestamp, '2012-11-06 22:07', 'en - timestamp 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} );
-
-});
-
-// local store
-test( "local store", function() {
-
-  var tests = [
-    'some 123äöüßadajsdaiosjdiaoidj',
-    { key: 123 },
-    { key1: { key1: [1,2,3,4] }, key2: [1,2,'äöüß'] },
-  ];
-
-  // write/get
-  App.Store.clear()
-  _.each(tests, function(test) {
-    App.Store.write( 'test1', test );
-    var item = App.Store.get( 'test1' );
-    deepEqual( test, item, 'write/get - compare stored and actual data' )
-  });
-
-  // undefined/get
-  App.Store.clear()
-  _.each(tests, function(test) {
-    var item = App.Store.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.Store.clear()
-  _.each(tests, function(test) {
-    App.Store.write( test.key, test.value );
-  });
-
-  _.each(tests, function(test) {
-    var item = App.Store.get( test.key );
-    deepEqual( test.value, item, 'write/get/delete - compare stored and actual data' );
-    App.Store.delete( test.key );
-    item = App.Store.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' );
-  });
-});
-
-
-// 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: 'nicole.braun@zammad.org',
-      password: 'test'
-    },
-    success: function(data) {
-      test( "auth - existing user", function() {
-        ok( true, 'authenticated')
-        var user = App.Session.get('login');
-        equal( 'nicole.braun@zammad.org', user, 'session login')
-      })
-    },
-    error: function() {
-      test( "auth - existing user", function() {
-        ok( false, 'not authenticated')
-      })
-    }
-  });
-}
-
 // form
 test( "form elements check", function() {
 //    deepEqual( item, test.value, 'group set/get tests' );
@@ -465,7 +13,7 @@ test( "form elements check", function() {
     selectmulti1: false,
     selectmulti2: [ false, true ],
     selectmultioption1: false,
-    selectmultioption2: [ false, true ]
+    selectmultioption2: [ false, true ],
   }
   new App.ControllerForm({
     el:        el,
@@ -547,7 +95,9 @@ test( "form params check", function() {
     selectmulti1: false,
     selectmulti2: [ false, true ],
     selectmultioption1: false,
-    selectmultioption2: [ false, true ]
+    selectmultioption2: [ false, true ],
+    autocompletion2: 'id2',
+    autocompletion2_autocompletion_value_shown: 'value2',
   }
   new App.ControllerForm({
     el:        el,
@@ -565,7 +115,8 @@ test( "form params check", function() {
         { name: 'selectmulti2', display: 'SelectMulti2', tag: 'select', null: false, multiple: true, options: { true: 'internal', false: 'public' } },
         { name: 'selectmultioption1', display: 'SelectMultiOption1', tag: 'select', null: true, multiple: true, options: [{ value: true, name: 'internal' }, { value: false, name: 'public' }] },
         { name: 'selectmultioption2', display: 'SelectMultiOption2', tag: 'select', null: false, multiple: true, options: [{ value: true, name: 'A' }, { value: 1, name: 'B'}, { value: false, name: 'C' }] },
-
+        { name: 'autocompletion1', display: 'AutoCompletion1', tag: 'autocompletion', null: false, options: { true: 'internal', false: 'public' }, source: [ { label: "Choice1", value: "value1", id: "id1" }, { label: "Choice2", value: "value2", id: "id2" }, ], minLength: 1 },
+        { name: 'autocompletion2', display: 'AutoCompletion2', tag: 'autocompletion', null: false, options: { true: 'internal', false: 'public' }, source: [ { label: "Choice1", value: "value1", id: "id1" }, { label: "Choice2", value: "value2", id: "id2" }, ], minLength: 1 },
       ],
     },
     params: defaults,