Browse Source

Init version of js unit testing.

Martin Edenhofer 12 years ago
parent
commit
f1d146f3bb

+ 1 - 1
app/assets/javascripts/app/lib/app_init/config.js.coffee

@@ -7,7 +7,7 @@ class App.Config
   @get: ( key, group ) ->
     if _instance == undefined
       _instance ?= new _Singleton
-    _instance.get( key )
+    _instance.get( key, group )
 
   @set: ( key, value, group ) ->
     if _instance == undefined

+ 7 - 7
app/assets/javascripts/app/lib/app_post/auth.js.coffee

@@ -24,10 +24,10 @@ class App.Auth
   @loginCheck: ->
     App.Log.log 'Auth', 'notice', 'loginCheck'
     App.Com.ajax(
-      id:    'login_check',
-      async: false,
-      type:  'GET',
-      url:   '/signshow',
+      id:    'login_check'
+      async: false
+      type:  'GET'
+      url:   '/signshow'
       success: (data, status, xhr) =>
         App.Log.log 'Auth', 'notice', 'logincheck:success', data
 
@@ -87,9 +87,9 @@ class App.Auth
   @logout: ->
     App.Log.log 'Auth', 'notice', 'logout'
     App.Com.ajax(
-      id:   'logout',
-      type: 'DELETE',
-      url:  '/signout',
+      id:   'logout'
+      type: 'DELETE'
+      url:  '/signout'
       success: =>
 
         # update websocked auth info

+ 9 - 4
app/assets/javascripts/app/lib/app_post/i18n.js.coffee

@@ -21,15 +21,18 @@ class App.i18n
       _instance ?= new _Singleton
     _instance.timestamp( args )
 
+  @set: ( args ) ->
+    if _instance == undefined
+      _instance ?= new _Singleton
+    _instance.set( args )
+
 class _Singleton extends Spine.Module
   @include App.Log
 
   constructor: ->
-    @locale = 'de'
-    @timestampFormat = 'yyyy-mm-dd HH:MM'
-    @set( @locale )
+    @map = {}
 
-#    $('.translation [contenteditable]')
+    # observe if text has been translated
     $('body')
       .delegate '.translation', 'focus', (e) =>
         $this = $(e.target)
@@ -76,6 +79,8 @@ class _Singleton extends Spine.Module
         return $this
 
   set: ( locale ) ->
+    @locale = locale
+    @timestampFormat = 'yyyy-mm-dd HH:MM'
     @map = {}
     App.Com.ajax(
       id:    'i18n-set-' + locale,

+ 17 - 0
app/controllers/tests_controller.rb

@@ -0,0 +1,17 @@
+class TestsController < ApplicationController
+
+  # GET /test
+  def index
+    respond_to do |format|
+      format.html # index.html.erb
+    end
+  end
+
+  # GET /test/wait
+  def wait
+    sleep params[:sec].to_i
+    result = { :success => true }
+    render :json => result
+  end
+
+end

+ 7 - 1
app/controllers/translations_controller.rb

@@ -15,9 +15,15 @@ class TranslationsController < ApplicationController
       list.push data
     }
 
+    timestamp_map_default = 'yyyy-mm-dd HH:MM'
+    timestamp_map = {
+      :de => 'dd.mm.yyyy HH:MM',
+    }
+    timestamp = timestamp_map[ params[:locale].to_sym ] || timestamp_map_default
+
     render :json => {
       :list            => list,
-      :timestampFormat => 'dd.mm.yyyy HH:MM',
+      :timestampFormat => timestamp,
     }
   end
 

+ 15 - 0
app/views/tests/index.html.erb

@@ -0,0 +1,15 @@
+
+<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>
+
+<style type="text/css">
+body {
+  padding-top: 0px;
+}
+</style>
+
+<script type="text/javascript">
+</script>
+
+<div id="qunit"></div>

+ 9 - 0
config/routes/test.rb

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

+ 2 - 0
db/seeds.rb

@@ -1824,6 +1824,8 @@ Translation.create( :locale => 'de', :source => "Create your first Ticket", :tar
 Translation.create( :locale => 'de', :source => "You have not created a Ticket yet.", :target => "Sie haben noch kein Ticket erstellt.", :updated_by_id => 1, :created_by_id => 1  )
 Translation.create( :locale => 'de', :source => "The way to communicate with us is this thing called \"Ticket\".", :target => "Der Weg um mit uns zu kommunizieren ist das sogenannte \"Ticket\".", :updated_by_id => 1, :created_by_id => 1  )
 Translation.create( :locale => 'de', :source => "or", :target => "oder", :updated_by_id => 1, :created_by_id => 1  )
+Translation.create( :locale => 'de', :source => "yes", :target => "ja", :updated_by_id => 1, :created_by_id => 1  )
+Translation.create( :locale => 'de', :source => "no", :target => "nein", :updated_by_id => 1, :created_by_id => 1  )
 
 
 #Translation.create( :locale => 'de', :source => "", :target => "", :updated_by_id => 1, :created_by_id => 1  )

+ 1 - 0
public/assets/tests/ajax-test.json

@@ -0,0 +1 @@
+{ "success": true }

+ 235 - 0
public/assets/tests/qunit-1.10.0.css

@@ -0,0 +1,235 @@
+/**
+ * QUnit v1.10.0 - A JavaScript Unit Testing Framework
+ *
+ * http://qunitjs.com
+ *
+ * Copyright 2012 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+/** Font Family and Sizes */
+
+#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult {
+	font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif;
+}
+
+#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
+#qunit-tests { font-size: smaller; }
+
+
+/** Resets */
+
+#qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult, #qunit-modulefilter {
+	margin: 0;
+	padding: 0;
+}
+
+
+/** Header */
+
+#qunit-header {
+	padding: 0.5em 0 0.5em 1em;
+
+	color: #8699a4;
+	background-color: #0d3349;
+
+	font-size: 1.5em;
+	line-height: 1em;
+	font-weight: normal;
+
+	border-radius: 5px 5px 0 0;
+	-moz-border-radius: 5px 5px 0 0;
+	-webkit-border-top-right-radius: 5px;
+	-webkit-border-top-left-radius: 5px;
+}
+
+#qunit-header a {
+	text-decoration: none;
+	color: #c2ccd1;
+}
+
+#qunit-header a:hover,
+#qunit-header a:focus {
+	color: #fff;
+}
+
+#qunit-testrunner-toolbar label {
+	display: inline-block;
+	padding: 0 .5em 0 .1em;
+}
+
+#qunit-banner {
+	height: 5px;
+}
+
+#qunit-testrunner-toolbar {
+	padding: 0.5em 0 0.5em 2em;
+	color: #5E740B;
+	background-color: #eee;
+	overflow: hidden;
+}
+
+#qunit-userAgent {
+	padding: 0.5em 0 0.5em 2.5em;
+	background-color: #2b81af;
+	color: #fff;
+	text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
+}
+
+#qunit-modulefilter-container {
+	float: right;
+}
+
+/** Tests: Pass/Fail */
+
+#qunit-tests {
+	list-style-position: inside;
+}
+
+#qunit-tests li {
+	padding: 0.4em 0.5em 0.4em 2.5em;
+	border-bottom: 1px solid #fff;
+	list-style-position: inside;
+}
+
+#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running  {
+	display: none;
+}
+
+#qunit-tests li strong {
+	cursor: pointer;
+}
+
+#qunit-tests li a {
+	padding: 0.5em;
+	color: #c2ccd1;
+	text-decoration: none;
+}
+#qunit-tests li a:hover,
+#qunit-tests li a:focus {
+	color: #000;
+}
+
+#qunit-tests ol {
+	margin-top: 0.5em;
+	padding: 0.5em;
+
+	background-color: #fff;
+
+	border-radius: 5px;
+	-moz-border-radius: 5px;
+	-webkit-border-radius: 5px;
+}
+
+#qunit-tests table {
+	border-collapse: collapse;
+	margin-top: .2em;
+}
+
+#qunit-tests th {
+	text-align: right;
+	vertical-align: top;
+	padding: 0 .5em 0 0;
+}
+
+#qunit-tests td {
+	vertical-align: top;
+}
+
+#qunit-tests pre {
+	margin: 0;
+	white-space: pre-wrap;
+	word-wrap: break-word;
+}
+
+#qunit-tests del {
+	background-color: #e0f2be;
+	color: #374e0c;
+	text-decoration: none;
+}
+
+#qunit-tests ins {
+	background-color: #ffcaca;
+	color: #500;
+	text-decoration: none;
+}
+
+/*** Test Counts */
+
+#qunit-tests b.counts                       { color: black; }
+#qunit-tests b.passed                       { color: #5E740B; }
+#qunit-tests b.failed                       { color: #710909; }
+
+#qunit-tests li li {
+	padding: 5px;
+	background-color: #fff;
+	border-bottom: none;
+	list-style-position: inside;
+}
+
+/*** Passing Styles */
+
+#qunit-tests li li.pass {
+	color: #3c510c;
+	background-color: #fff;
+	border-left: 10px solid #C6E746;
+}
+
+#qunit-tests .pass                          { color: #528CE0; background-color: #D2E0E6; }
+#qunit-tests .pass .test-name               { color: #366097; }
+
+#qunit-tests .pass .test-actual,
+#qunit-tests .pass .test-expected           { color: #999999; }
+
+#qunit-banner.qunit-pass                    { background-color: #C6E746; }
+
+/*** Failing Styles */
+
+#qunit-tests li li.fail {
+	color: #710909;
+	background-color: #fff;
+	border-left: 10px solid #EE5757;
+	white-space: pre;
+}
+
+#qunit-tests > li:last-child {
+	border-radius: 0 0 5px 5px;
+	-moz-border-radius: 0 0 5px 5px;
+	-webkit-border-bottom-right-radius: 5px;
+	-webkit-border-bottom-left-radius: 5px;
+}
+
+#qunit-tests .fail                          { color: #000000; background-color: #EE5757; }
+#qunit-tests .fail .test-name,
+#qunit-tests .fail .module-name             { color: #000000; }
+
+#qunit-tests .fail .test-actual             { color: #EE5757; }
+#qunit-tests .fail .test-expected           { color: green;   }
+
+#qunit-banner.qunit-fail                    { background-color: #EE5757; }
+
+
+/** Result */
+
+#qunit-testresult {
+	padding: 0.5em 0.5em 0.5em 2.5em;
+
+	color: #2b81af;
+	background-color: #D2E0E6;
+
+	border-bottom: 1px solid white;
+}
+#qunit-testresult .module-name {
+	font-weight: bold;
+}
+
+/** Fixture */
+
+#qunit-fixture {
+	position: absolute;
+	top: -10000px;
+	left: -10000px;
+	width: 1000px;
+	height: 1000px;
+}

Some files were not shown because too many files changed in this diff