Maintenance: Improves QUnit tests usability

This commit is contained in:
Mantas Masalskis 2021-10-14 16:35:12 +02:00 committed by Thorsten Eckel
parent e26d3ecfd3
commit 77d147efaf
90 changed files with 12748 additions and 9860 deletions

View file

@ -4,6 +4,20 @@ class TestsController < ApplicationController
prepend_before_action -> { authentication_check_only } prepend_before_action -> { authentication_check_only }
layout 'tests', except: %i[wait raised_exception]
def show
@filename = params[:name]
if lookup_context.exists? @filename, 'tests'
render @filename
elsif @filename.starts_with? 'form'
render 'form'
else
render
end
end
# GET /test/wait # GET /test/wait
def wait def wait
sleep params[:sec].to_i sleep params[:sec].to_i

View file

@ -17,7 +17,7 @@
</head> </head>
<body> <body>
<%= yield %> <%= content_for?(:content) ? yield(:content) : yield %>
</body> </body>
</html> </html>

View file

@ -0,0 +1,22 @@
<% content_for :content do %>
<link rel="stylesheet" href="/assets/tests/qunit-2.17.2.css">
<%= javascript_include_tag "/assets/tests/qunit-2.17.2.js",
"/assets/tests/sinon-9.2.4",
"/assets/tests/syn-0.15.0",
"/assets/tests/qunit/#{@filename}.js",
nonce: true %>
<style type="text/css">
body {
padding-top: 0px;
}
#qunit {
position: initial;
}
</style>
<%= yield %>
<% end %>
<%= render template: 'layouts/application' %>

View file

@ -1,13 +0,0 @@
<link rel="stylesheet" href="/assets/tests/qunit-1.21.0.css">
<%= javascript_include_tag "/assets/tests/qunit-1.21.0.js", "/assets/tests/color_object.js", nonce: true %>
<style type="text/css">
body {
padding-top: 0px;
}
</style>
<%= javascript_tag nonce: true do -%>
<% end -%>
<div id="qunit" class="u-dontfold"></div>

View file

@ -1,14 +0,0 @@
<link rel="stylesheet" href="/assets/tests/qunit-1.21.0.css">
<%= javascript_include_tag "/assets/tests/qunit-1.21.0.js", "/assets/tests/core.js", nonce: true %>
<style type="text/css">
body {
padding-top: 0px;
}
</style>
<%= javascript_tag nonce: true do -%>
<% end -%>
<div id="qunit" class="u-dontfold"></div>

View file

@ -1,21 +1,7 @@
<link rel="stylesheet" href="/assets/tests/qunit-1.21.0.css">
<%= javascript_include_tag "/assets/tests/qunit-1.21.0.js", "/assets/tests/form.js", nonce: true %>
<style type="text/css">
body {
padding-top: 0px;
}
</style>
<%= javascript_tag nonce: true do -%>
<% end -%>
<div id="qunit" class="u-dontfold"></div> <div id="qunit" class="u-dontfold"></div>
<div> <div>
<form class="form-stacked pull-left"> <form class="form-stacked pull-left">
<div id="forms"></div> <div id="forms"></div>
<button type="submit" class="btn btn-primary submit">Submit</button>
</form> </form>
</div> </div>

View file

@ -1,21 +0,0 @@
<link rel="stylesheet" href="/assets/tests/qunit-1.21.0.css">
<%= javascript_include_tag "/assets/tests/qunit-1.21.0.js", "/assets/tests/form_autocompletion_ajax.js", nonce: true %>
<style type="text/css">
body {
padding-top: 0px;
}
</style>
<%= javascript_tag nonce: true do -%>
<% end -%>
<div id="qunit" class="u-dontfold"></div>
<div>
<form class="form-stacked pull-left">
<div id="forms"></div>
<button type="submit" class="btn btn-primary submit">Submit</button>
</form>
</div>

View file

@ -1,21 +0,0 @@
<link rel="stylesheet" href="/assets/tests/qunit-1.21.0.css">
<%= javascript_include_tag "/assets/tests/qunit-1.21.0.js", "/assets/tests/syn-0.14.1.js", "/assets/tests/form_color.js", nonce: true %>
<style type="text/css">
body {
padding-top: 0px;
}
</style>
<%= javascript_tag nonce: true do -%>
<% end -%>
<div id="qunit" class="u-dontfold"></div>
<div>
<form class="form-stacked pull-left">
<div id="forms"></div>
<button type="submit" class="btn btn-primary submit">Submit</button>
</form>
</div>

View file

@ -1,21 +0,0 @@
<link rel="stylesheet" href="/assets/tests/qunit-1.21.0.css">
<%= javascript_include_tag "/assets/tests/qunit-1.21.0.js", "/assets/tests/form_column_select.js", nonce: true %>
<style type="text/css">
body {
padding-top: 0px;
}
</style>
<%= javascript_tag nonce: true do -%>
<% end -%>
<div id="qunit" class="u-dontfold"></div>
<div>
<form class="form-stacked pull-left">
<div id="forms"></div>
<button type="submit" class="btn btn-primary submit">Submit</button>
</form>
</div>

View file

@ -1,21 +0,0 @@
<link rel="stylesheet" href="/assets/tests/qunit-1.21.0.css">
<%= javascript_include_tag "/assets/tests/qunit-1.21.0.js", "/assets/tests/form_core_workflow.js", nonce: true %>
<style type="text/css">
body {
padding-top: 0px;
}
</style>
<%= javascript_tag nonce: true do -%>
<% end -%>
<div id="qunit" class="u-dontfold"></div>
<div>
<form class="form-stacked pull-left">
<div id="forms"></div>
<button type="submit" class="btn btn-primary submit">Submit</button>
</form>
</div>

View file

@ -1,21 +0,0 @@
<link rel="stylesheet" href="/assets/tests/qunit-1.21.0.css">
<%= javascript_include_tag "/assets/tests/qunit-1.21.0.js", "/assets/tests/form_datetime.js", nonce: true %>
<style type="text/css">
body {
padding-top: 0px;
}
</style>
<%= javascript_tag nonce: true do -%>
<% end -%>
<div id="qunit" class="u-dontfold"></div>
<div>
<form class="form-stacked pull-left">
<div id="forms"></div>
<button type="submit" class="btn btn-primary submit">Submit</button>
</form>
</div>

View file

@ -1,21 +0,0 @@
<link rel="stylesheet" href="/assets/tests/qunit-1.21.0.css">
<%= javascript_include_tag "/assets/tests/qunit-1.21.0.js", "/assets/tests/form_extended.js", nonce: true %>
<style type="text/css">
body {
padding-top: 0px;
}
</style>
<%= javascript_tag nonce: true do -%>
<% end -%>
<div id="qunit" class="u-dontfold"></div>
<div>
<form class="form-stacked pull-left">
<div id="forms"></div>
<button type="submit" class="btn btn-primary submit">Submit</button>
</form>
</div>

View file

@ -1,16 +1,3 @@
<link rel="stylesheet" href="/assets/tests/qunit-1.21.0.css">
<%= javascript_include_tag "/assets/tests/qunit-1.21.0.js", "/assets/tests/form_find.js", nonce: true %>
<style type="text/css">
body {
padding-top: 0px;
}
</style>
<%= javascript_tag nonce: true do -%>
<% end -%>
<div id="qunit" class="u-dontfold"></div> <div id="qunit" class="u-dontfold"></div>
<div> <div>

View file

@ -1,21 +0,0 @@
<link rel="stylesheet" href="/assets/tests/qunit-1.21.0.css">
<%= javascript_include_tag "/assets/tests/qunit-1.21.0.js", "/assets/tests/form_searchable_select.js", nonce: true %>
<style type="text/css">
body {
padding-top: 0px;
}
</style>
<%= javascript_tag nonce: true do -%>
<% end -%>
<div id="qunit" class="u-dontfold"></div>
<div>
<form class="form-stacked pull-left">
<div id="forms"></div>
<button type="submit" class="btn btn-primary submit">Submit</button>
</form>
</div>

View file

@ -1,21 +0,0 @@
<link rel="stylesheet" href="/assets/tests/qunit-1.21.0.css">
<%= javascript_include_tag "/assets/tests/qunit-1.21.0.js", "/assets/tests/syn-0.14.1.js", "/assets/tests/form_skip_rendering.js", nonce: true %>
<style type="text/css">
body {
padding-top: 0px;
}
</style>
<%= javascript_tag nonce: true do -%>
<% end -%>
<div id="qunit" class="u-dontfold"></div>
<div>
<form class="form-stacked pull-left">
<div id="forms"></div>
<button type="submit" class="btn btn-primary submit">Submit</button>
</form>
</div>

View file

@ -1,21 +0,0 @@
<link rel="stylesheet" href="/assets/tests/qunit-1.21.0.css">
<%= javascript_include_tag "/assets/tests/qunit-1.21.0.js", "/assets/tests/syn-0.14.1.js", "/assets/tests/form_sla_times.js", nonce: true %>
<style type="text/css">
body {
padding-top: 0px;
}
</style>
<%= javascript_tag nonce: true do -%>
<% end -%>
<div id="qunit" class="u-dontfold"></div>
<div>
<form class="form-stacked pull-left">
<div id="forms"></div>
<button type="submit" class="btn btn-primary submit">Submit</button>
</form>
</div>

View file

@ -1,21 +0,0 @@
<link rel="stylesheet" href="/assets/tests/qunit-1.21.0.css">
<%= javascript_include_tag "/assets/tests/qunit-1.21.0.js", "/assets/tests/form_ticket_perform_action.js", nonce: true %>
<style type="text/css">
body {
padding-top: 0px;
}
</style>
<%= javascript_tag nonce: true do -%>
<% end -%>
<div id="qunit" class="u-dontfold"></div>
<div>
<form class="form-stacked pull-left">
<div id="forms"></div>
<button type="submit" class="btn btn-primary submit">Submit</button>
</form>
</div>

View file

@ -1,21 +0,0 @@
<link rel="stylesheet" href="/assets/tests/qunit-1.21.0.css">
<%= javascript_include_tag "/assets/tests/qunit-1.21.0.js", "/assets/tests/form_timer.js", nonce: true %>
<style type="text/css">
body {
padding-top: 0px;
}
</style>
<%= javascript_tag nonce: true do -%>
<% end -%>
<div id="qunit" class="u-dontfold"></div>
<div>
<form class="form-stacked pull-left">
<div id="forms"></div>
<button type="submit" class="btn btn-primary submit">Submit</button>
</form>
</div>

View file

@ -1,21 +0,0 @@
<link rel="stylesheet" href="/assets/tests/qunit-1.21.0.css">
<%= javascript_include_tag "/assets/tests/qunit-1.21.0.js", "/assets/tests/form_tree_select.js", nonce: true %>
<style type="text/css">
body {
padding-top: 0px;
}
</style>
<%= javascript_tag nonce: true do -%>
<% end -%>
<div id="qunit" class="u-dontfold"></div>
<div>
<form class="form-stacked pull-left">
<div id="forms"></div>
<button type="submit" class="btn btn-primary submit">Submit</button>
</form>
</div>

View file

@ -1,16 +1,3 @@
<link rel="stylesheet" href="/assets/tests/qunit-1.21.0.css">
<%= javascript_include_tag "/assets/tests/qunit-1.21.0.js", "/assets/tests/form_trim.js", nonce: true %>
<style type="text/css">
body {
padding-top: 0px;
}
</style>
<%= javascript_tag nonce: true do -%>
<% end -%>
<div id="qunit" class="u-dontfold"></div> <div id="qunit" class="u-dontfold"></div>
<div> <div>

View file

@ -1,21 +0,0 @@
<link rel="stylesheet" href="/assets/tests/qunit-1.21.0.css">
<%= javascript_include_tag "/assets/tests/qunit-1.21.0.js", "/assets/tests/form_validation.js", nonce: true %>
<style type="text/css">
body {
padding-top: 0px;
}
</style>
<%= javascript_tag nonce: true do -%>
<% end -%>
<div id="qunit" class="u-dontfold"></div>
<div>
<form class="form-stacked pull-left">
<div id="forms"></div>
<button type="submit" class="btn btn-primary submit">Submit</button>
</form>
</div>

View file

@ -1,16 +1,3 @@
<link rel="stylesheet" href="/assets/tests/qunit-1.21.0.css">
<%= javascript_include_tag "/assets/tests/qunit-1.21.0.js", "/assets/tests/html_utils.js", nonce: true %>
<style type="text/css">
body {
padding-top: 0px;
}
</style>
<%= javascript_tag nonce: true do -%>
<% end -%>
<div id="qunit" class="u-dontfold"></div> <div id="qunit" class="u-dontfold"></div>
<div id="image2data1"></div> <div id="image2data1"></div>

View file

@ -1,13 +0,0 @@
<link rel="stylesheet" href="/assets/tests/qunit-1.21.0.css">
<%= javascript_include_tag "/assets/tests/qunit-1.21.0.js", "/assets/tests/i18n.js", nonce: true %>
<style type="text/css">
body {
padding-top: 0px;
}
</style>
<%= javascript_tag nonce: true do -%>
<% end -%>
<div id="qunit" class="u-dontfold"></div>

View file

@ -1,15 +0,0 @@
<link rel="stylesheet" href="/assets/tests/qunit-1.21.0.css">
<%= javascript_include_tag "/assets/tests/qunit-1.21.0.js", "/assets/tests/image_service.js", nonce: true %>
<style type="text/css">
body {
padding-top: 0px;
}
</style>
<script type="text/javascript">
</script>
<div id="qunit" class="u-dontfold"></div>

View file

@ -1,13 +0,0 @@
<link rel="stylesheet" href="/assets/tests/qunit-1.21.0.css">
<%= javascript_include_tag "/assets/tests/qunit-1.21.0.js", "/assets/tests/kb_video_embeding.js", nonce: true %>
<style type="text/css">
body {
padding-top: 0px;
}
</style>
<%= javascript_tag nonce: true do -%>
<% end -%>
<div id="qunit" class="u-dontfold"></div>

View file

@ -1,16 +0,0 @@
<link rel="stylesheet" href="/assets/tests/qunit-1.21.0.css">
<%= javascript_include_tag "/assets/tests/qunit-1.21.0.js", "/assets/tests/local_storage.js", nonce: true %>
<style type="text/css">
body {
padding-top: 0px;
}
</style>
<%= javascript_tag nonce: true do -%>
<% end -%>
<div id="qunit" class="u-dontfold"></div>

View file

@ -1,15 +0,0 @@
<link rel="stylesheet" href="/assets/tests/qunit-1.21.0.css">
<%= javascript_include_tag "/assets/tests/qunit-1.21.0.js", "/assets/tests/model.js", nonce: true %>
<style type="text/css">
body {
padding-top: 0px;
}
</style>
<%= javascript_tag nonce: true do -%>
<% end -%>
<div id="qunit" class="u-dontfold"></div>

View file

@ -1,15 +0,0 @@
<link rel="stylesheet" href="/assets/tests/qunit-1.21.0.css">
<%= javascript_include_tag "/assets/tests/qunit-1.21.0.js", "/assets/tests/model_binding.js", nonce: true %>
<style type="text/css">
body {
padding-top: 0px;
}
</style>
<%= javascript_tag nonce: true do -%>
<% end -%>
<div id="qunit" class="u-dontfold"></div>

View file

@ -1,15 +0,0 @@
<link rel="stylesheet" href="/assets/tests/qunit-1.21.0.css">
<%= javascript_include_tag "/assets/tests/qunit-1.21.0.js", "/assets/tests/model_ticket.js", nonce: true %>
<style type="text/css">
body {
padding-top: 0px;
}
</style>
<%= javascript_tag nonce: true do -%>
<% end -%>
<div id="qunit" class="u-dontfold"></div>

View file

@ -1,14 +0,0 @@
<link rel="stylesheet" href="/assets/tests/qunit-1.21.0.css">
<%= javascript_include_tag "/assets/tests/qunit-1.21.0.js", "/assets/tests/sinon-9.2.4", "/assets/tests/model_ui.js", nonce: true %>
<style type="text/css">
body {
padding-top: 0px;
}
</style>
<%= javascript_tag nonce: true do -%>
<% end -%>
<div id="qunit" class="u-dontfold"></div>

View file

@ -1,15 +0,0 @@
<link rel="stylesheet" href="/assets/tests/qunit-1.21.0.css">
<%= javascript_include_tag "/assets/tests/qunit-1.21.0.js", "/assets/tests/session.js", nonce: true %>
<style type="text/css">
body {
padding-top: 0px;
}
</style>
<%= javascript_tag nonce: true do -%>
<% end -%>
<div id="qunit" class="u-dontfold"></div>

View file

@ -0,0 +1 @@
<div id="qunit" class="u-dontfold"></div>

View file

@ -1,16 +0,0 @@
<link rel="stylesheet" href="/assets/tests/qunit-1.21.0.css">
<%= javascript_include_tag "/assets/tests/qunit-1.21.0.js", "/assets/tests/table.js", nonce: true %>
<style type="text/css">
body {
padding-top: 0px;
}
</style>
<%= javascript_tag nonce: true do -%>
<% end -%>
<div id="qunit" class="u-dontfold"></div>
<div id="table"></div>

View file

@ -1,16 +0,0 @@
<link rel="stylesheet" href="/assets/tests/qunit-1.21.0.css">
<%= javascript_include_tag "/assets/tests/qunit-1.21.0.js", "/assets/tests/table_extended.js", nonce: true %>
<style type="text/css">
body {
padding-top: 0px;
}
</style>
<%= javascript_tag nonce: true do -%>
<% end -%>
<div id="qunit" class="u-dontfold"></div>
<div id="table"></div>

View file

@ -1,16 +0,0 @@
<link rel="stylesheet" href="/assets/tests/qunit-1.21.0.css">
<%= javascript_include_tag "/assets/tests/qunit-1.21.0.js", "/assets/tests/taskbar.js", nonce: true %>
<style type="text/css">
body {
padding-top: 0px;
}
</style>
<%= javascript_tag nonce: true do -%>
<% end -%>
<div id="qunit" class="u-dontfold"></div>
<div id="taskbars"></div>

View file

@ -1,24 +0,0 @@
<link rel="stylesheet" href="/assets/tests/qunit-1.21.0.css">
<%= javascript_include_tag "/assets/tests/qunit-1.21.0.js", "/assets/tests/text_module.js", nonce: true %>
<style type="text/css">
body {
padding-top: 0px;
}
</style>
<%= javascript_tag nonce: true do -%>
<% end -%>
<div id="qunit" class="u-dontfold"></div>
<div>
<form class="form-stacked pull-left">
<div id="forms">
<div class="js-textarea richtext-content articleNewEdit-body" contenteditable="true" data-name="body">
</div>
</div>
<button type="submit" class="btn btn-primary submit">Submit</button>
</form>
</div>

View file

@ -1,11 +0,0 @@
<link rel="stylesheet" href="/assets/tests/qunit-1.21.0.css">
<%= javascript_include_tag "/assets/tests/qunit-1.21.0.js", "/assets/tests/sinon-9.2.4", "/assets/tests/ticket_macro.js", nonce: true %>
<style type="text/css">
body {
padding-top: 0px;
}
</style>
<div id="qunit" class="u-dontfold"></div>

View file

@ -1,14 +0,0 @@
<link rel="stylesheet" href="/assets/tests/qunit-1.21.0.css">
<%= javascript_include_tag "/assets/tests/qunit-1.21.0.js", "/assets/tests/ticket_selector.js", nonce: true %>
<style type="text/css">
body {
padding-top: 0px;
}
</style>
<%= javascript_tag nonce: true do -%>
<% end -%>
<div id="qunit" class="u-dontfold"></div>

View file

@ -1,14 +0,0 @@
<link rel="stylesheet" href="/assets/tests/qunit-1.21.0.css">
<%= javascript_include_tag "/assets/tests/qunit-1.21.0.js", "/assets/tests/ui.js", nonce: true %>
<style type="text/css">
body {
padding-top: 0px;
}
</style>
<%= javascript_tag nonce: true do -%>
<% end -%>
<div id="qunit" class="u-dontfold"></div>

View file

@ -520,6 +520,26 @@
"confidence": "Medium", "confidence": "Medium",
"note": "Admin configured RegExp" "note": "Admin configured RegExp"
}, },
{
"warning_type": "Dynamic Render Path",
"warning_code": 15,
"fingerprint": "c52f57d32456c9ab6dba6dfc93bd8effa16829a87a9ce9368da83a35fc6cf1a7",
"check_name": "Render",
"message": "Render path contains parameter value",
"file": "app/controllers/tests_controller.rb",
"line": 13,
"link": "https://brakemanscanner.org/docs/warning_types/dynamic_render_path/",
"code": "render(action => params[:name], {})",
"render_path": null,
"location": {
"type": "method",
"class": "TestsController",
"method": "show"
},
"user_input": "params[:name]",
"confidence": "High",
"note": "Running QUnit tests"
},
{ {
"warning_type": "SSL Verification Bypass", "warning_type": "SSL Verification Bypass",
"warning_code": 71, "warning_code": 71,

View file

@ -1,43 +1,11 @@
# Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/ # Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/
if !Rails.env.production?
Zammad::Application.routes.draw do Zammad::Application.routes.draw do
get '/tests_:name', to: 'tests#show'
match '/tests_core', to: 'tests#core', via: :get
match '/tests_session', to: 'tests#session', via: :get
match '/tests_local_storage', to: 'tests#local_storage', via: :get
match '/tests_ui', to: 'tests#ui', via: :get
match '/tests_i18n', to: 'tests#i18n', via: :get
match '/tests_model', to: 'tests#model', via: :get
match '/tests_model_binding', to: 'tests#model_binding', via: :get
match '/tests_model_ui', to: 'tests#model_ui', via: :get
match '/tests_model_ticket', to: 'tests#model_ticket', via: :get
match '/tests_form', to: 'tests#form', via: :get
match '/tests_form_tree_select', to: 'tests#form_tree_select', via: :get
match '/tests_form_find', to: 'tests#form_find', via: :get
match '/tests_form_trim', to: 'tests#form_trim', via: :get
match '/tests_form_extended', to: 'tests#form_extended', via: :get
match '/tests_form_timer', to: 'tests#form_timer', via: :get
match '/tests_form_color', to: 'tests#form_color', via: :get
match '/tests_form_validation', to: 'tests#form_validation', via: :get
match '/tests_form_column_select', to: 'tests#form_column_select', via: :get
match '/tests_form_searchable_select', to: 'tests#form_searchable_select', via: :get
match '/tests_form_autocompletion_ajax', to: 'tests#form_autocompletion_ajax', via: :get
match '/tests_form_ticket_perform_action', to: 'tests#form_ticket_perform_action', via: :get
match '/tests_form_sla_times', to: 'tests#form_sla_times', via: :get
match '/tests_form_skip_rendering', to: 'tests#form_skip_rendering', via: :get
match '/tests_form_datetime', to: 'tests#form_datetime', via: :get
match '/tests_form_core_workflow', to: 'tests#form_core_workflow', via: :get
match '/tests_table', to: 'tests#table', via: :get
match '/tests_table_extended', to: 'tests#table_extended', via: :get
match '/tests_html_utils', to: 'tests#html_utils', via: :get
match '/tests_ticket_macro', to: 'tests#ticket_macro', via: :get
match '/tests_ticket_selector', to: 'tests#ticket_selector', via: :get
match '/tests_taskbar', to: 'tests#taskbar', via: :get
match '/tests_image_service', to: 'tests#image_service', via: :get
match '/tests_text_module', to: 'tests#text_module', via: :get
match '/tests_color_object', to: 'tests#color_object', via: :get
match '/tests_kb_video_embeding', to: 'tests#kb_video_embeding', via: :get
match '/tests/wait/:sec', to: 'tests#wait', via: :get match '/tests/wait/:sec', to: 'tests#wait', via: :get
match '/tests/raised_exception', to: 'tests#error_raised_exception', via: :get match '/tests/raised_exception', to: 'tests#error_raised_exception', via: :get
end end
end

View file

@ -1,21 +0,0 @@
test('test color object', function() {
let hex = new App.ColorObject('#09f609')
let hsl = new App.ColorObject([0.5, 0.2, 0.3])
deepEqual(hex.asHslArray(), [1/3, 0.9294117647058824, 0.5], 'HEX converted to HSL components')
deepEqual(hsl.asHslArray(), [0.5, 0.2, 0.3], 'HSL components returned as original input')
equal(hex.asString(), '#09f609', 'HEX represented as original input')
equal(hsl.asString(), 'hsl(180,20%,30%)', 'HSL components represented as HSL string')
hex.updateWithString('#fff')
equal(hex.asString(), '#fff', 'color updated')
hsl.updateWithHslComponent(0.25, 1)
deepEqual(hsl.asHslArray(), [0.5, 0.25, 0.3], 'given HSL component updated')
deepEqual(Array.from(App.ColorObject.anyToRgb('#ff0000')), [255, 0, 0, 255], 'any to RGB')
deepEqual(App.ColorObject.anyToHslArray('#ff0000'), [0,1,0.5], 'any to HSL components')
equal(App.ColorObject.anyToHslString('#ff0000'), 'hsl(0,100%,50%)', 'any to HSL string')
deepEqual(App.ColorObject.rgbToHslArray([255, 0, 0]), [0,1,0.5], 'RGB to HSL components')
equal(App.ColorObject.hslArrayToHslString([0.5, 0.25, 0.3]), 'hsl(180,25%,30%)', 'HSL components to HSL string')
})

View file

@ -1,59 +0,0 @@
// form
test( "find form check", function() {
$('#forms').append('<hr><h1>find form check</h1><form id="form1"></form>')
var form1 = App.ControllerForm.findForm($('#form1'))
equal(form1.is('form'), true)
$('#forms').append('<hr><h1>find form check</h1><form id="form2"><input class="js-input" value="test 123"></form>')
var form2 = App.ControllerForm.findForm($('#form2 .js-input'))
equal(form2.is('form'), true)
$('#forms').append('<hr><h1>find form check</h1><form id="form3"><input class="js-input" value="test 123"><button class="js-button">text</button></form>')
var form3 = App.ControllerForm.findForm($('#form3 .js-button'))
equal(form3.is('form'), true)
App.ControllerForm.disable($('#form3 .js-button'))
equal($('#form3 .js-button').prop('readonly'), true)
equal($('#form3 .js-button').prop('disabled'), true)
equal($('#form3 .js-input').prop('readonly'), true)
equal($('#form3 .js-input').prop('disabled'), false)
App.ControllerForm.enable($('#form3 .js-button'))
equal($('#form3 .js-button').prop('readonly'), false)
equal($('#form3 .js-button').prop('disabled'), false)
equal($('#form3 .js-input').prop('readonly'), false)
equal($('#form3 .js-input').prop('disabled'), false)
$('#forms').append('<hr><h1>find form check by only disable button</h1><form id="form31"><input class="js-input" value="test 123"><button class="js-button">text</button></form>')
var form31 = App.ControllerForm.findForm($('#form31 .js-button'))
App.ControllerForm.disable($('#form31 .js-button'), 'button')
equal($('#form31 .js-button').prop('readonly'), true)
equal($('#form31 .js-button').prop('disabled'), true)
equal($('#form31 .js-input').prop('readonly'), false)
equal($('#form31 .js-input').prop('disabled'), false)
App.ControllerForm.enable($('#form31 .js-button'))
equal($('#form31 .js-button').prop('readonly'), false)
equal($('#form31 .js-button').prop('disabled'), false)
equal($('#form31 .js-input').prop('readonly'), false)
equal($('#form31 .js-input').prop('disabled'), false)
$('#forms').append('<hr><h1>find form check</h1><div id="form4"><input class="js-input" value="test 123"><button class="js-button">text</button></div>')
var form4 = App.ControllerForm.findForm($('#form4 .js-button'))
equal(form4.is('form'), false)
App.ControllerForm.disable($('#form4 .js-button'))
equal($('#form4 .js-button').prop('readonly'), true)
equal($('#form4 .js-button').prop('disabled'), true)
equal($('#form4 .js-input').prop('readonly'), false)
equal($('#form4 .js-input').prop('disabled'), false)
App.ControllerForm.enable($('#form4 .js-button'))
equal($('#form4 .js-button').prop('readonly'), false)
equal($('#form4 .js-button').prop('disabled'), false)
equal($('#form4 .js-input').prop('readonly'), false)
equal($('#form4 .js-input').prop('disabled'), false)
});

View file

@ -1,230 +0,0 @@
test('i18n .detectBrowserLocale', function() {
var original_userLanguage = window.navigator.userLanguage
var original_language = window.navigator.language
var original_languages = window.navigator.languages
var reset = function(){
window.navigator.userLanguage = original_userLanguage
window.navigator.language = original_language
window.navigator.languages = original_languages
}
var mock = function(languages, language, userLanguage){
Object.defineProperty(window.navigator, 'language', {value: language, configurable: true });
Object.defineProperty(window.navigator, 'languages', {value: languages, configurable: true });
Object.defineProperty(window.navigator, 'userLanguage', {value: userLanguage, configurable: true });
}
mock(undefined, undefined, undefined)
equal(App.i18n.detectBrowserLocale(), 'en-us')
mock(undefined, undefined, 'non-existant');
equal(App.i18n.detectBrowserLocale(), 'en-us')
mock(undefined, undefined, 'en');
equal(App.i18n.detectBrowserLocale(), 'en-us')
mock(undefined, undefined, 'lt');
equal(App.i18n.detectBrowserLocale(), 'lt')
mock(undefined, 'lt', 'lv');
equal(App.i18n.detectBrowserLocale(), 'lt')
mock(undefined, 'en', 'lv');
equal(App.i18n.detectBrowserLocale(), 'en-us')
mock(['en'], 'lt', 'lv');
equal(App.i18n.detectBrowserLocale(), 'en-us')
mock(['en-us'], 'lt', 'lv');
equal(App.i18n.detectBrowserLocale(), 'en-us')
mock(['en-US'], 'lt', 'lv');
equal(App.i18n.detectBrowserLocale(), 'en-us')
mock(['lt', 'en-US'], 'lt', 'lv');
equal(App.i18n.detectBrowserLocale(), 'lt')
mock(['en-GB', 'en-US'], 'lt', 'lv');
equal(App.i18n.detectBrowserLocale(), 'en-gb')
mock(['en-XYZ'], 'lt', 'lv');
equal(App.i18n.detectBrowserLocale(), 'en-us')
mock(['xyz', 'lt'], 'lv', undefined);
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', '<b>quote</b>')
equal(translated, 'vor &lt;b&gt;quote&lt;/b&gt;', '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, '<b>123</b> xxx test', 'de-de - *%s* %s')
translated = App.i18n.translateContent('||%s|| %s test', 123, 'xxx')
equal(translated, '<i>123</i> xxx test', 'de-de - *%s* %s')
translated = App.i18n.translateContent('_%s_ %s test', 123, 'xxx')
equal(translated, '<u>123</u> xxx test', 'de-de - _%s_ %s')
translated = App.i18n.translateContent('§%s§ %s test', 123, 'xxx')
equal(translated, '<kbd>123</kbd> xxx test', 'de-de - §%s§ %s')
translated = App.i18n.translateContent('//%s// %s test', 123, 'xxx')
equal(translated, '<del>123</del> xxx test', 'de-de - //%s// %s')
translated = App.i18n.translateContent('\'%s\' %s test', 123, 'xxx')
equal(translated, '&#39;123&#39; xxx test', 'de-de - \'%s\' %s')
translated = App.i18n.translateContent('<test&now>//*äöüß')
equal(translated, '&lt;test&amp;now&gt;//*äöüß', 'de - <test&now>//*äöüß')
translated = App.i18n.translateContent('some link [to what ever](http://lalala)')
equal(translated, 'some link <a href="http://lalala" target="_blank">to what ever</a>', 'de-de - link')
translated = App.i18n.translateContent('some link [to what ever](%s)', 'http://lalala')
equal(translated, 'some link <a href="http://lalala" target="_blank">to what ever</a>', '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 <a href="http://lalala" target="_blank">YYY</a>.', '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')
var timestamp = App.i18n.translateTimestamp('2021-02-08 09:13:20 UTC', offset);
equal(timestamp, '08.02.2021 09:13', 'de-de - timestamp translated correctly with UTC format')
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', '<b>quote</b>')
equal(translated, '&lt;b&gt;quote&lt;/b&gt; 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, '<b>123</b> xxx |B| test', 'en-us - *%s* %s')
translated = App.i18n.translateContent('||%s|| %s test', 123, 'xxx')
equal(translated, '<i>123</i> xxx test', 'en-us - *%s* %s')
translated = App.i18n.translateContent('_%s_ %s test', 123, 'xxx')
equal(translated, '<u>123</u> xxx test', 'en-us - _%s_ %s')
translated = App.i18n.translateContent('§%s§ %s test', 123, 'xxx')
equal(translated, '<kbd>123</kbd> 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 <kbd>*</kbd> to find everything. E. g. <kbd>smi*</kbd> or <kbd>rosent*l</kbd>. You also can use <i>double quotes</i> for searching phrases <kbd>&quot;some phrase&quot;</kbd>.', 'en-us - §§ §§ §§ || §§')
translated = App.i18n.translateContent('//%s// %s test', 123, 'xxx')
equal(translated, '<del>123</del> xxx test', 'en-us - //%s// %s')
translated = App.i18n.translateContent('\'%s\' %s test', 123, 'xxx')
equal(translated, '&#39;123&#39; xxx test', 'en-us - \'%s\' %s')
translated = App.i18n.translateContent('<test&now>')
equal(translated, '&lt;test&amp;now&gt;', 'en-us - <test&now>')
translated = App.i18n.translateContent('some link [to what ever](http://lalala)')
equal(translated, 'some link <a href="http://lalala" target="_blank">to what ever</a>', 'en-us - link')
translated = App.i18n.translateContent('some link [to what ever](%s)', 'http://lalala')
equal(translated, 'some link <a href="http://lalala" target="_blank">to what ever</a>', '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 <a href="http://lalala" target="_blank">YYY</a>.', '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')
});
})

View file

@ -1,65 +0,0 @@
window.onload = function() {
test('Test item removal from local storage', function() {
var key = 'test_key_1'
var value = 'test_value_1'
App.LocalStorage.set(key, value)
equal(App.LocalStorage.get(key), value)
App.LocalStorage.delete(key)
equal(App.LocalStorage.get(key), undefined)
});
test('Test user-specific item removal from local storage', function() {
var key = 'test_key_2'
var value = 'test_value_2'
var user_id = 2
App.LocalStorage.set(key, value, user_id)
equal(App.LocalStorage.get(key, user_id), value)
App.LocalStorage.delete(key, user_id)
equal(App.LocalStorage.get(key, user_id), undefined)
});
test('Test key lookup', function() {
App.LocalStorage.clear()
var key = 'test_key_3'
var value = 'test_value_3'
var user_id = 2
var alt_key = 'test_alt_key_3'
// verify no keys initially
equal(App.LocalStorage.keys().length, 0)
App.LocalStorage.set(key, value, user_id)
// has 1 key in total
equal(App.LocalStorage.keys().length, 1)
// doesn't return anything with wrong prefix
equal(App.LocalStorage.keys('a').length, 0)
// doesn't return anything since user id not given
equal(App.LocalStorage.keys('test').length, 0)
// correct
equal(App.LocalStorage.keys('test', user_id).length, 1)
// verify value
equal(App.LocalStorage.keys('test', user_id)[0].match(key + '$'), key)
App.LocalStorage.set(alt_key, value)
// returns 1 key without user id
equal(App.LocalStorage.keys('test').length, 1)
equal(App.LocalStorage.keys('test')[0], alt_key)
});
}

View file

@ -1,110 +0,0 @@
window.onload = function() {
// model
test( "model ui basic tests", function() {
// load ref object
App.Collection.loadAssets({
TicketState: {
1: {
name: 'new', id: 1, updated_at: "2014-11-07T23:43:08.000Z",
},
2: {
name: 'open', id: 2, updated_at: "2014-11-07T23:43:08.000Z",
},
3: {
name: 'closed <>&', id: 3, updated_at: "2014-11-07T23:43:08.000Z",
},
},
})
// create ticket
var attribute1 = {
name: 'date', display: 'date 1', tag: 'date', null: true
};
App.Ticket.configure_attributes.push( attribute1 )
var attribute2 = {
name: 'textarea', display: 'textarea 1', tag: 'textarea', null: true
};
App.Ticket.configure_attributes.push( attribute2 )
var attribute3 = {
name: 'link1', display: 'link 1', linktemplate: 'http://zammad.com', tag: 'input', null: true, translate: true
};
App.Ticket.configure_attributes.push( attribute3 )
var attribute4 = {
name: 'link2', display: 'link 1', linktemplate: 'http://zammad.com', tag: 'input', null: true
};
App.Ticket.configure_attributes.push( attribute4 )
var ticket = new App.Ticket()
ticket.load({
id: 1000,
title: 'some title <>&',
state_id: 2,
updated_at: '2014-11-07T23:43:08.000Z',
date: '2015-02-07',
textarea: "some new\nline",
link1: 'closed',
link2: 'closed',
})
App.i18n.set('en-us')
equal( App.viewPrint( ticket, 'id' ), 1000)
equal( App.viewPrint( ticket, 'title' ), 'some title &lt;&gt;&amp;')
equal( App.viewPrint( ticket, 'state' ), 'open')
equal( App.viewPrint( ticket, 'state_id' ), 'open')
equal( App.viewPrint( ticket, 'not_existing' ), '-')
equal( App.viewPrint( ticket, 'updated_at' ), '<time class="humanTimeFromNow " datetime="2014-11-07T23:43:08.000Z" title="11/07/2014 23:43">11/07/2014</time>')
equal( App.viewPrint( ticket, 'date' ), '02/07/2015')
equal( App.viewPrint( ticket, 'textarea' ), '<div>some new</div><div>line</div>')
equal( App.viewPrint( ticket, 'link1' ), '<a href="http://zammad.com" target="blank">closed</a>')
equal( App.viewPrint( ticket, 'link2' ), '<a href="http://zammad.com" target="blank">closed</a>')
let stub = sinon.stub(App.Config, 'get')
stub.withArgs('timezone_default').returns('Example/Timezone')
let attr = App.Ticket.configure_attributes.find(e => { return e.name == 'updated_at' })
attr.include_timezone = true
equal( App.viewPrint( ticket, 'updated_at' ), '<time class="humanTimeFromNow " datetime="2014-11-07T23:43:08.000Z" title="11/07/2014 23:43 Example/Timezone" timezone="Example/Timezone">11/07/2014</time>')
attr.include_timezone = false
stub.restore()
App.i18n.set('de-de')
equal( App.viewPrint( ticket, 'id' ), 1000)
equal( App.viewPrint( ticket, 'title' ), 'some title &lt;&gt;&amp;')
equal( App.viewPrint( ticket, 'state' ), 'offen')
equal( App.viewPrint( ticket, 'state_id' ), 'offen')
equal( App.viewPrint( ticket, 'not_existing' ), '-')
equal( App.viewPrint( ticket, 'updated_at' ), '<time class="humanTimeFromNow " datetime="2014-11-07T23:43:08.000Z" title="07.11.2014 23:43">07.11.2014</time>')
equal( App.viewPrint( ticket, 'date' ), '07.02.2015')
equal( App.viewPrint( ticket, 'textarea' ), '<div>some new</div><div>line</div>')
equal( App.viewPrint( ticket, 'link1' ), '<a href="http://zammad.com" target="blank">geschlossen</a>')
equal( App.viewPrint( ticket, 'link2' ), '<a href="http://zammad.com" target="blank">closed</a>')
App.i18n.set('en-us')
ticket.state_id = 3
equal( App.viewPrint( ticket, 'state' ), 'closed &lt;&gt;&amp;')
equal( App.viewPrint( ticket, 'state_id' ), 'closed &lt;&gt;&amp;')
App.i18n.set('de')
equal( App.viewPrint( ticket, 'state' ), 'closed &lt;&gt;&amp;')
equal( App.viewPrint( ticket, 'state_id' ), 'closed &lt;&gt;&amp;')
// normal string
data = {
a: 1,
b: 'abc',
c: {
displayName: function() { return "my displayName <>&" }
},
}
equal( App.viewPrint( data, 'a' ), 1)
equal( App.viewPrint( data, 'b' ), 'abc')
equal( App.viewPrint( data, 'c' ), 'my displayName &lt;&gt;&amp;')
});
}

File diff suppressed because it is too large Load diff

View file

@ -1,16 +1,25 @@
/*! /*!
* QUnit 1.21.0 * QUnit 2.17.2
* https://qunitjs.com/ * https://qunitjs.com/
* *
* Copyright jQuery Foundation and other contributors * Copyright OpenJS Foundation and other contributors
* Released under the MIT license * Released under the MIT license
* https://jquery.org/license * https://jquery.org/license
*
* Date: 2016-02-01T13:07Z
*/ */
/** Font Family and Sizes */ /** Font Family and Sizes */
/* Style our buttons in a simple way, uninfluenced by the styles
the tested app might load. Don't affect buttons in #qunit-fixture!
https://github.com/qunitjs/qunit/pull/1395
https://github.com/qunitjs/qunit/issues/1437 */
#qunit-testrunner-toolbar button,
#qunit-testresult button {
font-size: initial;
border: initial;
background-color: buttonface;
}
#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-filteredTest, #qunit-userAgent, #qunit-testresult { #qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-filteredTest, #qunit-userAgent, #qunit-testresult {
font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif; font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif;
} }
@ -27,12 +36,39 @@
} }
/** Header */ /** Fixed headers with scrollable tests */
@supports (display: flex) or (display: -webkit-box) {
@media (min-height: 500px) {
#qunit {
position: fixed;
left: 0px;
right: 0px;
top: 0px;
bottom: 0px;
padding: 8px;
display: -webkit-box;
display: flex;
flex-direction: column;
}
#qunit-tests {
overflow: scroll;
}
#qunit-banner {
flex: 5px 0 0;
}
}
}
/** Header (excluding toolbar) */
#qunit-header { #qunit-header {
padding: 0.5em 0 0.5em 1em; padding: 0.5em 0 0.5em 1em;
color: #8699A4; color: #C2CCD1;
background-color: #0D3349; background-color: #0D3349;
font-size: 1.5em; font-size: 1.5em;
@ -44,7 +80,7 @@
#qunit-header a { #qunit-header a {
text-decoration: none; text-decoration: none;
color: #C2CCD1; color: inherit;
} }
#qunit-header a:hover, #qunit-header a:hover,
@ -52,51 +88,165 @@
color: #FFF; color: #FFF;
} }
#qunit-testrunner-toolbar label {
display: inline-block;
padding: 0 0.5em 0 0.1em;
}
#qunit-banner { #qunit-banner {
height: 5px; height: 5px;
} }
#qunit-filteredTest {
padding: 0.5em 1em 0.5em 1em;
color: #366097;
background-color: #F4FF77;
}
#qunit-userAgent {
padding: 0.5em 1em 0.5em 1em;
color: #FFF;
background-color: #2B81AF;
text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
}
/** Toolbar */
#qunit-testrunner-toolbar { #qunit-testrunner-toolbar {
padding: 0.5em 1em 0.5em 1em; padding: 0.5em 1em 0.5em 1em;
color: #5E740B; color: #5E740B;
background-color: #EEE; background-color: #EEE;
overflow: hidden;
} }
#qunit-filteredTest { #qunit-testrunner-toolbar .clearfix {
padding: 0.5em 1em 0.5em 1em; height: 0;
background-color: #F4FF77; clear: both;
color: #366097;
} }
#qunit-userAgent { #qunit-testrunner-toolbar label {
padding: 0.5em 1em 0.5em 1em;
background-color: #2B81AF;
color: #FFF;
text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
}
#qunit-modulefilter-container {
float: right;
padding: 0.2em;
}
.qunit-url-config {
display: inline-block; display: inline-block;
padding: 0.1em;
} }
.qunit-filter { #qunit-testrunner-toolbar input[type=checkbox],
display: block; #qunit-testrunner-toolbar input[type=radio] {
margin: 3px;
vertical-align: -2px;
}
#qunit-testrunner-toolbar input[type=text] {
box-sizing: border-box;
height: 1.6em;
}
#qunit-toolbar-filters {
float: right; float: right;
}
.qunit-url-config,
.qunit-filter,
#qunit-modulefilter {
display: inline-block;
line-height: 2.1em;
}
.qunit-filter,
#qunit-modulefilter {
position: relative;
margin-left: 1em; margin-left: 1em;
} }
.qunit-url-config label {
margin-right: 0.5em;
}
#qunit-modulefilter-search {
box-sizing: border-box;
min-width: 400px;
}
#qunit-modulefilter-search-container:after {
position: absolute;
right: 0.3em;
content: "\25bc";
color: black;
}
#qunit-modulefilter-dropdown {
/* align with #qunit-modulefilter-search */
box-sizing: border-box;
min-width: 400px;
position: absolute;
right: 0;
top: 50%;
margin-top: 0.8em;
border: 1px solid #D3D3D3;
border-top: none;
border-radius: 0 0 .25em .25em;
color: #0D3349;
background-color: #F5F5F5;
z-index: 99;
}
#qunit-modulefilter-dropdown a {
color: inherit;
text-decoration: none;
}
#qunit-modulefilter-dropdown .clickable.checked {
font-weight: bold;
color: #0D3349;
background-color: #E2F0F7;
}
#qunit-modulefilter-dropdown .clickable:hover {
color: #FFF;
background-color: #0D3349;
}
#qunit-modulefilter-actions {
display: block;
overflow: auto;
/* align with #qunit-modulefilter-dropdown-list */
font: smaller/1.5em sans-serif;
}
#qunit-modulefilter-dropdown #qunit-modulefilter-actions > * {
box-sizing: border-box;
max-height: 2.8em;
display: block;
padding: 0.4em;
}
#qunit-modulefilter-dropdown #qunit-modulefilter-actions > button {
float: right;
font: inherit;
}
#qunit-modulefilter-dropdown #qunit-modulefilter-actions > :last-child {
/* insert padding to align with checkbox margins */
padding-left: 3px;
}
#qunit-modulefilter-dropdown-list {
max-height: 200px;
overflow-y: auto;
margin: 0;
border-top: 2px groove threedhighlight;
padding: 0.4em 0 0;
font: smaller/1.5em sans-serif;
}
#qunit-modulefilter-dropdown-list li {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
#qunit-modulefilter-dropdown-list .clickable {
display: block;
padding-left: 0.15em;
padding-right: 0.5em;
}
/** Tests: Pass/Fail */ /** Tests: Pass/Fail */
#qunit-tests { #qunit-tests {
@ -116,7 +266,8 @@
#qunit-tests li.running, #qunit-tests li.running,
#qunit-tests li.pass, #qunit-tests li.pass,
#qunit-tests li.fail, #qunit-tests li.fail,
#qunit-tests li.skipped { #qunit-tests li.skipped,
#qunit-tests li.aborted {
display: list-item; display: list-item;
} }
@ -125,7 +276,7 @@
} }
#qunit-tests.hidepass li.running, #qunit-tests.hidepass li.running,
#qunit-tests.hidepass li.pass { #qunit-tests.hidepass li.pass:not(.todo) {
visibility: hidden; visibility: hidden;
position: absolute; position: absolute;
width: 0; width: 0;
@ -145,17 +296,12 @@
#qunit-tests li a { #qunit-tests li a {
padding: 0.5em; padding: 0.5em;
color: #C2CCD1; color: inherit;
text-decoration: none; text-decoration: underline;
}
#qunit-tests li p a {
padding: 0.25em;
color: #6B6464;
} }
#qunit-tests li a:hover, #qunit-tests li a:hover,
#qunit-tests li a:focus { #qunit-tests li a:focus {
color: #000; color: #0D3349;
} }
#qunit-tests li .runtime { #qunit-tests li .runtime {
@ -202,20 +348,20 @@
} }
#qunit-tests del { #qunit-tests del {
background-color: #E0F2BE;
color: #374E0C; color: #374E0C;
background-color: #E0F2BE;
text-decoration: none; text-decoration: none;
} }
#qunit-tests ins { #qunit-tests ins {
background-color: #FFCACA;
color: #500; color: #500;
background-color: #FFCACA;
text-decoration: none; text-decoration: none;
} }
/*** Test Counts */ /*** Test Counts */
#qunit-tests b.counts { color: #000; } #qunit-tests b.counts { color: #0D3349; }
#qunit-tests b.passed { color: #5E740B; } #qunit-tests b.passed { color: #5E740B; }
#qunit-tests b.failed { color: #710909; } #qunit-tests b.failed { color: #710909; }
@ -228,15 +374,22 @@
/*** Passing Styles */ /*** Passing Styles */
#qunit-tests .pass {
color: #2F68DA;
background-color: #E2F0F7;
}
#qunit-tests .pass .test-name {
color: #366097;
}
#qunit-tests li li.pass { #qunit-tests li li.pass {
color: #3C510C; color: #3C510C;
background-color: #FFF; background-color: #FFF;
border-left: 10px solid #C6E746; 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-actual,
#qunit-tests .pass .test-expected { color: #999; } #qunit-tests .pass .test-expected { color: #999; }
@ -244,6 +397,11 @@
/*** Failing Styles */ /*** Failing Styles */
#qunit-tests .fail {
color: #000;
background-color: #EE5757;
}
#qunit-tests li li.fail { #qunit-tests li li.fail {
color: #710909; color: #710909;
background-color: #FFF; background-color: #FFF;
@ -255,21 +413,21 @@
border-radius: 0 0 5px 5px; border-radius: 0 0 5px 5px;
} }
#qunit-tests .fail { color: #000; background-color: #EE5757; }
#qunit-tests .fail .test-name,
#qunit-tests .fail .module-name { color: #000; }
#qunit-tests .fail .test-actual { color: #EE5757; } #qunit-tests .fail .test-actual { color: #EE5757; }
#qunit-tests .fail .test-expected { color: #008000; } #qunit-tests .fail .test-expected { color: #008000; }
#qunit-banner.qunit-fail { background-color: #EE5757; } #qunit-banner.qunit-fail { background-color: #EE5757; }
/*** Aborted tests */
#qunit-tests .aborted { color: #000; background-color: orange; }
/*** Skipped tests */ /*** Skipped tests */
#qunit-tests .skipped { #qunit-tests .skipped {
background-color: #EBECE9; background-color: #EBECE9;
} }
#qunit-tests .qunit-todo-label,
#qunit-tests .qunit-skipped-label { #qunit-tests .qunit-skipped-label {
background-color: #F4FF77; background-color: #F4FF77;
display: inline-block; display: inline-block;
@ -280,19 +438,38 @@
margin: -0.4em 0.4em -0.4em 0; margin: -0.4em 0.4em -0.4em 0;
} }
#qunit-tests .qunit-todo-label {
background-color: #EEE;
}
/** Result */ /** Result */
#qunit-testresult { #qunit-testresult {
padding: 0.5em 1em 0.5em 1em; color: #366097;
background-color: #E2F0F7;
color: #2B81AF;
background-color: #D2E0E6;
border-bottom: 1px solid #FFF; border-bottom: 1px solid #FFF;
} }
#qunit-testresult a {
color: #2F68DA;
}
#qunit-testresult .clearfix {
height: 0;
clear: both;
}
#qunit-testresult .module-name { #qunit-testresult .module-name {
font-weight: 700; font-weight: 700;
} }
#qunit-testresult-display {
padding: 0.5em 1em 0.5em 1em;
width: 85%;
float:left;
}
#qunit-testresult-controls {
padding: 0.5em 1em 0.5em 1em;
width: 10%;
float:left;
}
/** Fixture */ /** Fixture */

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,21 @@
QUnit.test('test color object', assert => {
let hex = new App.ColorObject('#09f609')
let hsl = new App.ColorObject([0.5, 0.2, 0.3])
assert.deepEqual(hex.asHslArray(), [1/3, 0.9294117647058824, 0.5], 'HEX converted to HSL components')
assert.deepEqual(hsl.asHslArray(), [0.5, 0.2, 0.3], 'HSL components returned as original input')
assert.equal(hex.asString(), '#09f609', 'HEX represented as original input')
assert.equal(hsl.asString(), 'hsl(180,20%,30%)', 'HSL components represented as HSL string')
hex.updateWithString('#fff')
assert.equal(hex.asString(), '#fff', 'color updated')
hsl.updateWithHslComponent(0.25, 1)
assert.deepEqual(hsl.asHslArray(), [0.5, 0.25, 0.3], 'given HSL component updated')
assert.deepEqual(Array.from(App.ColorObject.anyToRgb('#ff0000')), [255, 0, 0, 255], 'any to RGB')
assert.deepEqual(App.ColorObject.anyToHslArray('#ff0000'), [0,1,0.5], 'any to HSL components')
assert.equal(App.ColorObject.anyToHslString('#ff0000'), 'hsl(0,100%,50%)', 'any to HSL string')
assert.deepEqual(App.ColorObject.rgbToHslArray([255, 0, 0]), [0,1,0.5], 'RGB to HSL components')
assert.equal(App.ColorObject.hslArrayToHslString([0.5, 0.25, 0.3]), 'hsl(180,25%,30%)', 'HSL components to HSL string')
})

View file

@ -1,4 +1,5 @@
test( "ajax get 200", function(assert) { QUnit.test( "ajax get 200", assert => {
App.Config.set('api_path', '/api/v1')
var done = assert.async(1) var done = assert.async(1)
new Promise( (resolve, reject) => { new Promise( (resolve, reject) => {
@ -9,16 +10,16 @@ test( "ajax get 200", function(assert) {
error: reject error: reject
}); });
}).then( function(data) { }).then( function(data) {
ok( true, "File found!") assert.ok( true, "File found!")
equal(data.success, true, "content parsable and ok!") assert.equal(data.success, true, "content parsable and assert.ok!")
equal(data.success2, undefined, "content parsable and ok!") assert.equal(data.success2, undefined, "content parsable and assert.ok!")
}, function(data) { }, function(data) {
ok( false, "Failed!") assert.ok( false, "Failed!")
}) })
.finally(done) .finally(done)
}); });
test( "ajax - queue - ajax get 200 1/2", function(assert) { QUnit.test( "ajax - queue - ajax get 200 1/2", assert => {
var done = assert.async(1) var done = assert.async(1)
new Promise( (resolve, reject) => { new Promise( (resolve, reject) => {
@ -30,17 +31,17 @@ test( "ajax - queue - ajax get 200 1/2", function(assert) {
error: reject error: reject
}); });
}).then( function(data) { }).then( function(data) {
ok( !window.testAjax, 'ajax - queue - check queue') assert.ok( !window.testAjax, 'ajax - queue - check queue')
window.testAjax = true; window.testAjax = true;
equal(data.success, true, "ajax - queue - content parsable and ok!") assert.equal(data.success, true, "ajax - queue - content parsable and assert.ok!")
equal(data.success2, undefined, "ajax - queue - content parsable and ok!") assert.equal(data.success2, undefined, "ajax - queue - content parsable and assert.ok!")
}, function(data) { }, function(data) {
ok( false, "Failed!") assert.ok( false, "Failed!")
}) })
.finally(done) .finally(done)
}); });
test( "ajax - queue - ajax get 200 2/2", function(assert) { QUnit.test( "ajax - queue - ajax get 200 2/2", assert => {
var done = assert.async(1) var done = assert.async(1)
new Promise( (resolve, reject) => { new Promise( (resolve, reject) => {
@ -54,19 +55,19 @@ test( "ajax - queue - ajax get 200 2/2", function(assert) {
}).then( function(data) { }).then( function(data) {
// check queue // check queue
ok( window.testAjax, 'ajax - queue - check queue') assert.ok( window.testAjax, 'ajax - queue - check queue')
window.testAjax = undefined; window.testAjax = undefined;
equal(data.success, true, "content parsable and ok!") assert.equal(data.success, true, "content parsable and assert.ok!")
equal(data.success2, undefined, "content parsable and ok!") assert.equal(data.success2, undefined, "content parsable and assert.ok!")
}, function(data) { }, function(data) {
ok( false, "Failed!") assert.ok( false, "Failed!")
}) })
.finally(done) .finally(done)
}); });
test( "ajax - parallel - ajax get 200", function(assert) { QUnit.test( "ajax - parallel - ajax get 200", assert => {
var done = assert.async(1) var done = assert.async(2)
new Promise( (resolve, reject) => { new Promise( (resolve, reject) => {
App.Ajax.request({ App.Ajax.request({
@ -86,28 +87,29 @@ test( "ajax - parallel - ajax get 200", function(assert) {
}).then( function(data) { }).then( function(data) {
// check queue // check queue
ok( !window.testAjaxQ, 'ajax - parallel - check queue') assert.ok( !window.testAjaxQ, 'ajax - parallel - check queue')
window.testAjaxQ = true; window.testAjaxQ = true;
equal(data.success, true, "content parsable and ok!") assert.equal(data.success, true, "content parsable and assert.ok!")
equal(data.success2, undefined, "content parsable and ok!") assert.equal(data.success2, undefined, "content parsable and assert.ok!")
}, function(data) { }, function(data) {
ok( false, "Failed!") assert.ok( false, "Failed!")
}) })
.finally(done) .finally(done)
}).then( function(data) { }).then( function(data) {
// check queue // check queue
ok( window.testAjaxQ, 'ajax - parallel - check queue') assert.ok( window.testAjaxQ, 'ajax - parallel - check queue')
window.testAjaxQ = undefined; window.testAjaxQ = undefined;
equal(data.success, true, "ajax - parallel - content parsable and ok!") assert.equal(data.success, true, "ajax - parallel - content parsable and assert.ok!")
equal(data.success2, undefined, "ajax - parallel - content parsable and ok!") assert.equal(data.success2, undefined, "ajax - parallel - content parsable and assert.ok!")
done()
}, function(data) { }, function(data) {
ok( false, "Failed!") assert.ok( false, "Failed!")
}) })
}); });
test('delay - test', function(assert) { QUnit.test('delay - test', assert => {
var done = assert.async(1) var done = assert.async(1)
window.testDelay1 = false window.testDelay1 = false
@ -117,24 +119,24 @@ test('delay - test', function(assert) {
new Promise( (resolve, reject) => { new Promise( (resolve, reject) => {
App.Delay.set(resolve, 2000, 'delay-test1', 'level'); App.Delay.set(resolve, 2000, 'delay-test1', 'level');
}).then( function() { }).then( function() {
ok(!window.testDelay1, 'delay - 1/2') assert.ok(!window.testDelay1, 'delay - 1/2')
window.testDelay1 = 1; window.testDelay1 = 1;
}) })
new Promise( (resolve, reject) => { new Promise( (resolve, reject) => {
App.Delay.set(resolve, 3000, 'delay-test1-verify', 'level'); App.Delay.set(resolve, 3000, 'delay-test1-verify', 'level');
}).then( function() { }).then( function() {
ok(window.testDelay1, 'delay - 2/2') assert.ok(window.testDelay1, 'delay - 2/2')
window.testDelay1 = false; window.testDelay1 = false;
}) })
.finally(done) .finally(done)
}).then( function() { }).then( function() {
ok(false, 'delay - 1/2 - FAILED - should not be executed, will be reset by next set()') assert.ok(false, 'delay - 1/2 - FAILED - should not be executed, will be reset by next set()')
window.testDelay1 = true; window.testDelay1 = true;
}) })
}); });
test('delay - test 2', function(assert) { QUnit.test('delay - test 2', assert => {
var done = assert.async(1) var done = assert.async(1)
new Promise( (resolve, reject) => { new Promise( (resolve, reject) => {
@ -143,48 +145,48 @@ test('delay - test 2', function(assert) {
new Promise( (resolve, reject) => { new Promise( (resolve, reject) => {
App.Delay.set(resolve, 1000); App.Delay.set(resolve, 1000);
}).then( function() { }).then( function() {
ok(!window.testDelay2, 'delay - test 2 - 1/3') assert.ok(!window.testDelay2, 'delay - test 2 - 1/3')
}) })
new Promise( (resolve, reject) => { new Promise( (resolve, reject) => {
App.Delay.set(resolve, 3000); App.Delay.set(resolve, 3000);
}).then( function() { }).then( function() {
ok(window.testDelay2, 'delay - test 2 - 3/3') assert.ok(window.testDelay2, 'delay - test 2 - 3/3')
}) })
.finally(done) .finally(done)
}).then( function() { }).then( function() {
ok(!window.testDelay2, 'delay - test 2 - 2/3') assert.ok(!window.testDelay2, 'delay - test 2 - 2/3')
window.testDelay2 = 1; window.testDelay2 = 1;
}) })
}); });
test('delay - test 3', function(assert) { QUnit.test('delay - test 3', assert => {
var done = assert.async(1) var done = assert.async(1)
new Promise( (resolve, reject) => { new Promise( (resolve, reject) => {
App.Delay.set(resolve, 1000, 'delay3'); App.Delay.set(resolve, 1000, 'delay3');
App.Delay.clear('delay3') App.Delay.clear('delay3')
ok(true, 'delay - test 3 - 1/1') assert.ok(true, 'delay - test 3 - 1/1')
done() done()
}).then( function() { }).then( function() {
ok(false, 'delay - test 3 - 1/1 - FAILED') assert.ok(false, 'delay - test 3 - 1/1 - FAILED')
}) })
}); });
test('delay - test 4', function(assert) { QUnit.test('delay - test 4', assert => {
var done = assert.async(1) var done = assert.async(1)
new Promise( (resolve, reject) => { new Promise( (resolve, reject) => {
App.Delay.set(resolve, 1000, undefined, 'Page'); App.Delay.set(resolve, 1000, undefined, 'Page');
App.Delay.clearLevel('Page') App.Delay.clearLevel('Page')
ok(true, 'delay - test 4 - 1/1') assert.ok(true, 'delay - test 4 - 1/1')
done() done()
}).then( function() { }).then( function() {
ok(false, 'delay - test 4 - 1/1 - FAILED') assert.ok(false, 'delay - test 4 - 1/1 - FAILED')
}) })
}); });
test('interval - test 1', function(assert) { QUnit.test('interval - test 1', assert => {
var done = assert.async(1) var done = assert.async(1)
window.testInterval1 = 1 window.testInterval1 = 1
@ -201,17 +203,17 @@ test('interval - test 1', function(assert) {
new Promise( (resolve, reject) => { new Promise( (resolve, reject) => {
App.Delay.set(resolve, 2000); App.Delay.set(resolve, 2000);
}).then( function() { }).then( function() {
equal(window.testInterval1, window.testInterval1Backup, 'interval - did not change after clear interval') assert.equal(window.testInterval1, window.testInterval1Backup, 'interval - did not change after clear interval')
}) })
.finally(done) .finally(done)
}).then( function() { }).then( function() {
notEqual(window.testInterval1, 1, 'interval - interval moved up') assert.notEqual(window.testInterval1, 1, 'interval - interval moved up')
App.Interval.clear('interval-test1') App.Interval.clear('interval-test1')
window.testInterval1Backup = window.testInterval1; window.testInterval1Backup = window.testInterval1;
}) })
}) })
test('interval - test 2', function(assert) { QUnit.test('interval - test 2', assert => {
var done = assert.async(1) var done = assert.async(1)
window.testInterval1 = 1 window.testInterval1 = 1
@ -229,58 +231,58 @@ test('interval - test 2', function(assert) {
new Promise( (resolve, reject) => { new Promise( (resolve, reject) => {
App.Delay.set(resolve, 2000); App.Delay.set(resolve, 2000);
}).then( function() { }).then( function() {
equal(window.testInterval1, window.testInterval1Backup, 'interval - did not change after clear interval') assert.equal(window.testInterval1, window.testInterval1Backup, 'interval - did not change after clear interval')
}) })
.finally(done) .finally(done)
}).then( function() { }).then( function() {
notEqual(window.testInterval1, 1, 'interval - interval moved up') assert.notEqual(window.testInterval1, 1, 'interval - interval moved up')
App.Interval.clearLevel('someLevel') App.Interval.clearLevel('someLevel')
window.testInterval1Backup = window.testInterval1; window.testInterval1Backup = window.testInterval1;
}) })
}) })
// events // events
test('events simple', function() { QUnit.test('events simple', assert => {
// single bind // single bind
App.Event.bind('test1', function(data) { App.Event.bind('test1', function(data) {
ok(true, 'event received - single bind') assert.ok(true, 'event received - single bind')
equal(data.success, true, 'event received - data ok - single bind') assert.equal(data.success, true, 'event received - data assert.ok - single bind')
}); });
App.Event.bind('test2', function(data) { App.Event.bind('test2', function(data) {
ok(false, 'should not be triggered - single bind') assert.ok(false, 'should not be triggered - single bind')
}); });
App.Event.trigger('test1', { success: true }) App.Event.trigger('test1', { success: true })
App.Event.unbind('test1') App.Event.unbind('test1')
App.Event.bind('test1', function(data) { App.Event.bind('test1', function(data) {
ok(false, 'should not be triggered - single bind') assert.ok(false, 'should not be triggered - single bind')
}); });
App.Event.unbind('test1') App.Event.unbind('test1')
App.Event.trigger('test1', { success: true }) App.Event.trigger('test1', { success: true })
// multi bind // multi bind
App.Event.bind('test1-1 test1-2', function(data) { App.Event.bind('test1-1 test1-2', function(data) {
ok(true, 'event received - multi bind') assert.ok(true, 'event received - multi bind')
equal(data.success, true, 'event received - data ok - multi bind') assert.equal(data.success, true, 'event received - data assert.ok - multi bind')
}); });
App.Event.bind('test1-3', function(data) { App.Event.bind('test1-3', function(data) {
ok(false, 'should not be triggered - multi bind') assert.ok(false, 'should not be triggered - multi bind')
}); });
App.Event.trigger('test1-2', { success: true }) App.Event.trigger('test1-2', { success: true })
App.Event.unbind('test1-1') App.Event.unbind('test1-1')
App.Event.bind('test1-1', function(data) { App.Event.bind('test1-1', function(data) {
ok(false, 'should not be triggered - multi bind') assert.ok(false, 'should not be triggered - multi bind')
}); });
App.Event.trigger('test1-2', { success: true }) App.Event.trigger('test1-2', { success: true })
}); });
test('events level', function() { QUnit.test('events level', assert => {
// bind with level // bind with level
App.Event.bind('test3', function(data) { App.Event.bind('test3', function(data) {
ok(false, 'should not be triggered!') assert.ok(false, 'should not be triggered!')
}, 'test-level') }, 'test-level')
// unbind with level // unbind with level
@ -288,15 +290,15 @@ test('events level', function() {
// bind with level // bind with level
App.Event.bind('test3', function(data) { App.Event.bind('test3', function(data) {
ok(true, 'event received') assert.ok(true, 'event received')
equal(data.success, true, 'event received - data ok - level bind') assert.equal(data.success, true, 'event received - data assert.ok - level bind')
}, 'test-level') }, 'test-level')
App.Event.trigger('test3', { success: true}) App.Event.trigger('test3', { success: true})
}); });
// session store // session store
test('session store', function() { QUnit.test('session store', assert => {
var tests = [ var tests = [
'some 123äöüßadajsdaiosjdiaoidj', 'some 123äöüßadajsdaiosjdiaoidj',
@ -309,14 +311,14 @@ test('session store', function() {
_.each(tests, function(test) { _.each(tests, function(test) {
App.SessionStorage.set('test1', test) App.SessionStorage.set('test1', test)
var item = App.SessionStorage.get('test1') var item = App.SessionStorage.get('test1')
deepEqual(test, item, 'write/get - compare stored and actual data') assert.deepEqual(test, item, 'write/get - compare stored and actual data')
}); });
// undefined/get // undefined/get
App.SessionStorage.clear() App.SessionStorage.clear()
_.each(tests, function(test) { _.each(tests, function(test) {
var item = App.SessionStorage.get('test1') var item = App.SessionStorage.get('test1')
deepEqual(undefined, item, 'undefined/get - compare not existing data and actual data') assert.deepEqual(undefined, item, 'undefined/get - compare not existing data and actual data')
}); });
// write/get/delete // write/get/delete
@ -333,16 +335,16 @@ test('session store', function() {
_.each(tests, function(test) { _.each(tests, function(test) {
var item = App.SessionStorage.get(test.key) var item = App.SessionStorage.get(test.key)
deepEqual(test.value, item, 'write/get/delete - compare stored and actual data') assert.deepEqual(test.value, item, 'write/get/delete - compare stored and actual data')
App.SessionStorage.delete( test.key) App.SessionStorage.delete( test.key)
item = App.SessionStorage.get(test.key) item = App.SessionStorage.get(test.key)
deepEqual(undefined, item, 'write/get/delete - compare deleted data') assert.deepEqual(undefined, item, 'write/get/delete - compare deleted data')
}); });
}); });
// config // config
test('config', function() { QUnit.test('config', assert => {
// simple // simple
var tests = [ var tests = [
@ -357,7 +359,7 @@ test('config', function() {
_.each(tests, function(test) { _.each(tests, function(test) {
var item = App.Config.get(test.key ) var item = App.Config.get(test.key )
deepEqual(item, test.value, 'set/get tests') assert.deepEqual(item, test.value, 'set/get tests')
}); });
// group // group
@ -374,18 +376,18 @@ test('config', function() {
// verify whole group // verify whole group
var item = App.Config.get('group1') var item = App.Config.get('group1')
deepEqual(item, group, 'group - verify group hash') assert.deepEqual(item, group, 'group - verify group hash')
// verify each setting // verify each setting
_.each(test_groups, function(test) { _.each(test_groups, function(test) {
var item = App.Config.get(test.key, 'group1') var item = App.Config.get(test.key, 'group1')
deepEqual(item, test.value, 'group set/get tests') assert.deepEqual(item, test.value, 'group set/get tests')
}); });
}); });
// clone // clone
test('clone', function() { QUnit.test('clone', assert => {
// simple // simple
var tests = [ var tests = [
@ -436,7 +438,7 @@ test('clone', function() {
_.each(tests, function(test) { _.each(tests, function(test) {
var item = clone( test ) var item = clone( test )
deepEqual(item, test, 'clone') assert.deepEqual(item, test, 'clone')
}); });
// complex test // complex test
@ -455,7 +457,7 @@ test('clone', function() {
// modify source later, should not have any result // modify source later, should not have any result
source[0].name = 'some new name' source[0].name = 'some new name'
deepEqual(result, reference, 'clone') assert.deepEqual(result, reference, 'clone')
// full test // full test
var source = [ var source = [
@ -474,19 +476,19 @@ test('clone', function() {
source[0].name = 'some new name' source[0].name = 'some new name'
source[2].fn = 'some new name' source[2].fn = 'some new name'
deepEqual(result[0], reference[0], 'clone full') assert.deepEqual(result[0], reference[0], 'clone full')
deepEqual(result[1], reference[1], 'clone full') assert.deepEqual(result[1], reference[1], 'clone full')
equal(typeof reference[2].fn, 'function') assert.equal(typeof reference[2].fn, 'function')
equal(typeof result[2].fn, 'function') assert.equal(typeof result[2].fn, 'function')
equal(reference[2].fn(), 'test') assert.equal(reference[2].fn(), 'test')
equal(result[2].fn(), 'test') assert.equal(result[2].fn(), 'test')
}); });
// diff // diff
test('difference', function() { QUnit.test('difference', assert => {
// simple // simple
var object1 = { var object1 = {
@ -501,7 +503,7 @@ test('difference', function() {
key2: 1235 key2: 1235
} }
var item = difference(object1, object2) var item = difference(object1, object2)
deepEqual(item, result) assert.deepEqual(item, result)
object1 = { object1 = {
key1: 123, key1: 123,
@ -513,7 +515,7 @@ test('difference', function() {
} }
result = {} result = {}
item = difference(object1, object2) item = difference(object1, object2)
deepEqual(item, result) assert.deepEqual(item, result)
object1 = { object1 = {
key1: 123, key1: 123,
@ -527,7 +529,7 @@ test('difference', function() {
key2: 123 key2: 123
} }
item = difference(object1, object2) item = difference(object1, object2)
deepEqual(item, result) assert.deepEqual(item, result)
object1 = { object1 = {
key1: 123, key1: 123,
@ -538,7 +540,7 @@ test('difference', function() {
} }
result = {} result = {}
item = difference(object1, object2) item = difference(object1, object2)
deepEqual(item, result) assert.deepEqual(item, result)
object1 = { object1 = {
key1: 123, key1: 123,
@ -549,7 +551,7 @@ test('difference', function() {
} }
result = {} result = {}
item = difference(object1, object2) item = difference(object1, object2)
deepEqual(item, result) assert.deepEqual(item, result)
object1 = { object1 = {
customer_id: 1, customer_id: 1,
@ -563,7 +565,7 @@ test('difference', function() {
organization_id: null, organization_id: null,
} }
item = difference(object1, object2) item = difference(object1, object2)
deepEqual(item, result) assert.deepEqual(item, result)
object1 = { object1 = {
customer_id: 1, customer_id: 1,
@ -577,11 +579,11 @@ test('difference', function() {
organization_id: 2, organization_id: 2,
} }
item = difference(object1, object2) item = difference(object1, object2)
deepEqual(item, result) assert.deepEqual(item, result)
}); });
test('auth - not existing user', function(assert) { QUnit.test('auth - not existing user', assert => {
var done = assert.async(1) var done = assert.async(1)
new Promise( (resolve, reject) => { new Promise( (resolve, reject) => {
@ -594,14 +596,15 @@ test('auth - not existing user', function(assert) {
error: reject error: reject
}); });
}).then( function(data) { }).then( function(data) {
ok(false, 'ok') assert.ok(false, 'ok')
}, function() { }, function() {
ok(true, 'ok') assert.ok(true, 'ok')
}) })
.finally(done) .finally(done)
}) })
test('auth - existing user', function(assert) { QUnit.test('auth - existing user', assert => {
App.Config.set('api_path', '/api/v1')
var done = assert.async(1) var done = assert.async(1)
new Promise( (resolve, reject) => { new Promise( (resolve, reject) => {
@ -614,11 +617,11 @@ test('auth - existing user', function(assert) {
error: reject error: reject
}); });
}).then( function(data) { }).then( function(data) {
ok(true, 'authenticated') assert.ok(true, 'authenticated')
var user = App.Session.get('login') var user = App.Session.get('login')
equal('admin@example.com', user, 'session login') assert.equal('admin@example.com', user, 'session login')
}, function() { }, function() {
ok(false, 'failed') assert.ok(false, 'failed')
}) })
.finally(done) .finally(done)
}) })

View file

@ -1,16 +1,16 @@
// form // form
test("form without @el", function() { QUnit.test("form without @el", assert => {
var form = new App.ControllerForm() var form = new App.ControllerForm()
equal($(form.html()).is('div'), true) assert.equal($(form.html()).is('div'), true)
equal($(form.html()).hasClass('alert'), true) assert.equal($(form.html()).hasClass('alert'), true)
equal($(form.html()).hasClass('hide'), true) assert.equal($(form.html()).hasClass('hide'), true)
}) })
test("form elements check", function() { QUnit.test("form elements check", assert => {
// deepEqual(item, test.value, 'group set/get tests' ); // assert.deepEqual(item, test.value, 'group set/get tests' );
$('#forms').append('<hr><h1>form elements check</h1><form id="form1"></form>') $('#qunit').append('<hr><h1>form elements check</h1><form id="form1"></form>')
var el = $('#form1') var el = $('#form1')
var defaults = { var defaults = {
input2: '123abc', input2: '123abc',
@ -58,70 +58,70 @@ test("form elements check", function() {
}, },
autofocus: true autofocus: true
}); });
equal(el.find('[name="input1"]').val(), '', 'check input1 value') assert.equal(el.find('[name="input1"]').val(), '', 'check input1 value')
equal(el.find('[name="input1"]').prop('required'), false, 'check input1 required') assert.equal(el.find('[name="input1"]').prop('required'), false, 'check input1 required')
// equal(el.find('[name="input1"]').is(":focus"), true, 'check input1 focus') // assert.equal(el.find('[name="input1"]').is(":focus"), true, 'check input1 focus')
equal(el.find('[name="input2"]').val(), '123abc', 'check input2 value') assert.equal(el.find('[name="input2"]').val(), '123abc', 'check input2 value')
equal(el.find('[name="input2"]').prop('required'), true, 'check input2 required') assert.equal(el.find('[name="input2"]').prop('required'), true, 'check input2 required')
equal(el.find('[name="input2"]').is(":focus"), false, 'check input2 focus') assert.equal(el.find('[name="input2"]').is(":focus"), false, 'check input2 focus')
equal(el.find('[name="password1"]').val(), '', 'check password1 value') assert.equal(el.find('[name="password1"]').val(), '', 'check password1 value')
equal(el.find('[name="password1_confirm"]').val(), '', 'check password1 value') assert.equal(el.find('[name="password1_confirm"]').val(), '', 'check password1 value')
equal(el.find('[name="password1"]').prop('required'), false, 'check password1 required') assert.equal(el.find('[name="password1"]').prop('required'), false, 'check password1 required')
equal(el.find('[name="password1"]').is(":focus"), false, 'check password1 focus') assert.equal(el.find('[name="password1"]').is(":focus"), false, 'check password1 focus')
equal(el.find('[name="password2"]').val(), 'pw1234<l>', 'check password2 value') assert.equal(el.find('[name="password2"]').val(), 'pw1234<l>', 'check password2 value')
equal(el.find('[name="password2_confirm"]').val(), 'pw1234<l>', 'check password2 value') assert.equal(el.find('[name="password2_confirm"]').val(), 'pw1234<l>', 'check password2 value')
equal(el.find('[name="password2"]').prop('required'), true, 'check password2 required') assert.equal(el.find('[name="password2"]').prop('required'), true, 'check password2 required')
equal(el.find('[name="password2"]').is(":focus"), false, 'check password2 focus') assert.equal(el.find('[name="password2"]').is(":focus"), false, 'check password2 focus')
equal(el.find('[name="textarea1"]').val(), '', 'check textarea1 value') assert.equal(el.find('[name="textarea1"]').val(), '', 'check textarea1 value')
equal(el.find('[name="textarea1"]').prop('required'), false, 'check textarea1 required') assert.equal(el.find('[name="textarea1"]').prop('required'), false, 'check textarea1 required')
equal(el.find('[name="textarea1"]').is(":focus"), false, 'check textarea1 focus') assert.equal(el.find('[name="textarea1"]').is(":focus"), false, 'check textarea1 focus')
equal(el.find('[name="textarea2"]').val(), 'lalu <l> lalu', 'check textarea2 value') assert.equal(el.find('[name="textarea2"]').val(), 'lalu <l> lalu', 'check textarea2 value')
equal(el.find('[name="textarea2"]').prop('required'), true, 'check textarea2 required') assert.equal(el.find('[name="textarea2"]').prop('required'), true, 'check textarea2 required')
equal(el.find('[name="textarea2"]').is(":focus"), false, 'check textarea2 focus') assert.equal(el.find('[name="textarea2"]').is(":focus"), false, 'check textarea2 focus')
equal(el.find('[name="select1"]').val(), 'false', 'check select1 value') assert.equal(el.find('[name="select1"]').val(), 'false', 'check select1 value')
equal(el.find('[name="select1"]').prop('required'), false, 'check select1 required') assert.equal(el.find('[name="select1"]').prop('required'), false, 'check select1 required')
equal(el.find('[name="select1"]').is(":focus"), false, 'check select1 focus') assert.equal(el.find('[name="select1"]').is(":focus"), false, 'check select1 focus')
equal(el.find('[name="select2"]').val(), 'true', 'check select2 value') assert.equal(el.find('[name="select2"]').val(), 'true', 'check select2 value')
equal(el.find('[name="select2"]').prop('required'), true, 'check select2 required') assert.equal(el.find('[name="select2"]').prop('required'), true, 'check select2 required')
equal(el.find('[name="select2"]').is(":focus"), false, 'check select2 focus') assert.equal(el.find('[name="select2"]').is(":focus"), false, 'check select2 focus')
equal(el.find('[name="selectmulti1"]').val(), 'false', 'check selectmulti1 value') assert.equal(el.find('[name="selectmulti1"]').val(), 'false', 'check selectmulti1 value')
equal(el.find('[name="selectmulti1"]').prop('required'), false, 'check selectmulti1 required') assert.equal(el.find('[name="selectmulti1"]').prop('required'), false, 'check selectmulti1 required')
equal(el.find('[name="selectmulti1"]').is(":focus"), false, 'check selectmulti1 focus') assert.equal(el.find('[name="selectmulti1"]').is(":focus"), false, 'check selectmulti1 focus')
equal(el.find('[name="selectmulti2"]').val()[0], 'true', 'check selectmulti2 value') assert.equal(el.find('[name="selectmulti2"]').val()[0], 'true', 'check selectmulti2 value')
equal(el.find('[name="selectmulti2"]').val()[1], 'false', 'check selectmulti2 value') assert.equal(el.find('[name="selectmulti2"]').val()[1], 'false', 'check selectmulti2 value')
equal(el.find('[name="selectmulti2"]').prop('required'), true, 'check selectmulti2 required') assert.equal(el.find('[name="selectmulti2"]').prop('required'), true, 'check selectmulti2 required')
equal(el.find('[name="selectmulti2"]').is(":focus"), false, 'check selectmulti2 focus') assert.equal(el.find('[name="selectmulti2"]').is(":focus"), false, 'check selectmulti2 focus')
//equal(el.find('[name="richtext1"]').val(), '', 'check textarea1 value') //equal(el.find('[name="richtext1"]').val(), '', 'check textarea1 value')
//equal(el.find('[name="richtext1"]').prop('required'), false, 'check textarea1 required') //equal(el.find('[name="richtext1"]').prop('required'), false, 'check textarea1 required')
equal(el.find('[name="richtext1"]').is(":focus"), false, 'check textarea1 focus') assert.equal(el.find('[name="richtext1"]').is(":focus"), false, 'check textarea1 focus')
//equal(el.find('[name="richtext2"]').val(), 'lalu <l> lalu', 'check textarea2 value') //equal(el.find('[name="richtext2"]').val(), 'lalu <l> lalu', 'check textarea2 value')
//equal(el.find('[name="richtext2"]').prop('required'), true, 'check textarea2 required') //equal(el.find('[name="richtext2"]').prop('required'), true, 'check textarea2 required')
equal(el.find('[name="richtext2"]').is(":focus"), false, 'check textarea2 focus') assert.equal(el.find('[name="richtext2"]').is(":focus"), false, 'check textarea2 focus')
equal(el.find('[name="checkbox1"]').first().is(":checked"), false) assert.equal(el.find('[name="checkbox1"]').first().is(":checked"), false)
equal(el.find('[name="checkbox1"]').last().is(":checked"), false) assert.equal(el.find('[name="checkbox1"]').last().is(":checked"), false)
equal(el.find('[name="checkbox2"]').is(":checked"), true) assert.equal(el.find('[name="checkbox2"]').is(":checked"), true)
equal(el.find('[name="boolean1"]').val(), 'true') assert.equal(el.find('[name="boolean1"]').val(), 'true')
equal(el.find('[name="boolean1"]').val(), 'true') assert.equal(el.find('[name="boolean1"]').val(), 'true')
equal(el.find('[name="boolean2"]').val(), 'false') assert.equal(el.find('[name="boolean2"]').val(), 'false')
}); });
test("form params check", function() { QUnit.test("form params check", assert => {
// deepEqual(item, test.value, 'group set/get tests' ); // assert.deepEqual(item, test.value, 'group set/get tests' );
$('#forms').append('<hr><h1>form params check</h1><form id="form2"></form>') $('#qunit').append('<hr><h1>form params check</h1><form id="form2"></form>')
var el = $('#form2') var el = $('#form2')
var defaults = { var defaults = {
input2: '123abc', input2: '123abc',
@ -231,70 +231,70 @@ test("form params check", function() {
params: defaults, params: defaults,
autofocus: true autofocus: true
}); });
equal(el.find('[name="input1"]').val(), '', 'check input1 value') assert.equal(el.find('[name="input1"]').val(), '', 'check input1 value')
equal(el.find('[name="input1"]').prop('required'), false, 'check input1 required') assert.equal(el.find('[name="input1"]').prop('required'), false, 'check input1 required')
// equal(el.find('[name="input1"]').is(":focus"), true, 'check input1 focus') // assert.equal(el.find('[name="input1"]').is(":focus"), true, 'check input1 focus')
equal(el.find('[name="input2"]').val(), '123abc', 'check input2 value') assert.equal(el.find('[name="input2"]').val(), '123abc', 'check input2 value')
equal(el.find('[name="input2"]').prop('required'), true, 'check input2 required') assert.equal(el.find('[name="input2"]').prop('required'), true, 'check input2 required')
equal(el.find('[name="input2"]').is(":focus"), false, 'check input2 focus') assert.equal(el.find('[name="input2"]').is(":focus"), false, 'check input2 focus')
equal(el.find('[name="input3"]').prop("disabled"), true, 'check input3 disabled') assert.equal(el.find('[name="input3"]').prop("disabled"), true, 'check input3 disabled')
equal(el.find('[name="password1"]').val(), '', 'check password1 value') assert.equal(el.find('[name="password1"]').val(), '', 'check password1 value')
equal(el.find('[name="password1_confirm"]').val(), '', 'check password1 value') assert.equal(el.find('[name="password1_confirm"]').val(), '', 'check password1 value')
equal(el.find('[name="password1"]').prop('required'), false, 'check password1 required') assert.equal(el.find('[name="password1"]').prop('required'), false, 'check password1 required')
equal(el.find('[name="password1"]').is(":focus"), false, 'check password1 focus') assert.equal(el.find('[name="password1"]').is(":focus"), false, 'check password1 focus')
equal(el.find('[name="password2"]').val(), 'pw1234<l>', 'check password2 value') assert.equal(el.find('[name="password2"]').val(), 'pw1234<l>', 'check password2 value')
equal(el.find('[name="password2_confirm"]').val(), 'pw1234<l>', 'check password2 value') assert.equal(el.find('[name="password2_confirm"]').val(), 'pw1234<l>', 'check password2 value')
equal(el.find('[name="password2"]').prop('required'), true, 'check password2 required') assert.equal(el.find('[name="password2"]').prop('required'), true, 'check password2 required')
equal(el.find('[name="password2"]').is(":focus"), false, 'check password2 focus') assert.equal(el.find('[name="password2"]').is(":focus"), false, 'check password2 focus')
equal(el.find('[name="textarea1"]').val(), '', 'check textarea1 value') assert.equal(el.find('[name="textarea1"]').val(), '', 'check textarea1 value')
equal(el.find('[name="textarea1"]').prop('required'), false, 'check textarea1 required') assert.equal(el.find('[name="textarea1"]').prop('required'), false, 'check textarea1 required')
equal(el.find('[name="textarea1"]').is(":focus"), false, 'check textarea1 focus') assert.equal(el.find('[name="textarea1"]').is(":focus"), false, 'check textarea1 focus')
equal(el.find('[name="textarea2"]').val(), 'lalu <l> lalu', 'check textarea2 value') assert.equal(el.find('[name="textarea2"]').val(), 'lalu <l> lalu', 'check textarea2 value')
equal(el.find('[name="textarea2"]').prop('required'), true, 'check textarea2 required') assert.equal(el.find('[name="textarea2"]').prop('required'), true, 'check textarea2 required')
equal(el.find('[name="textarea2"]').is(":focus"), false, 'check textarea2 focus') assert.equal(el.find('[name="textarea2"]').is(":focus"), false, 'check textarea2 focus')
equal(el.find('[name="textarea3"]').prop("disabled"), true, 'check textarea3 disabled') assert.equal(el.find('[name="textarea3"]').prop("disabled"), true, 'check textarea3 disabled')
equal(el.find('[name="select1"]').val(), 'false', 'check select1 value') assert.equal(el.find('[name="select1"]').val(), 'false', 'check select1 value')
equal(el.find('[name="select1"]').prop('required'), false, 'check select1 required') assert.equal(el.find('[name="select1"]').prop('required'), false, 'check select1 required')
equal(el.find('[name="select1"]').is(":focus"), false, 'check select1 focus') assert.equal(el.find('[name="select1"]').is(":focus"), false, 'check select1 focus')
equal(el.find('[name="select2"]').val(), 'true', 'check select2 value') assert.equal(el.find('[name="select2"]').val(), 'true', 'check select2 value')
equal(el.find('[name="select2"]').prop('required'), true, 'check select2 required') assert.equal(el.find('[name="select2"]').prop('required'), true, 'check select2 required')
equal(el.find('[name="select2"]').is(":focus"), false, 'check select2 focus') assert.equal(el.find('[name="select2"]').is(":focus"), false, 'check select2 focus')
equal(el.find('[name="select3"]').val(), '', 'check select3 value') assert.equal(el.find('[name="select3"]').val(), '', 'check select3 value')
equal(el.find('[name="select3"]').prop('required'), true, 'check select3 required') assert.equal(el.find('[name="select3"]').prop('required'), true, 'check select3 required')
equal(el.find('[name="select3"]').is(":focus"), false, 'check select3 focus') assert.equal(el.find('[name="select3"]').is(":focus"), false, 'check select3 focus')
equal(el.find('[name="select4"]').val(), '', 'check select4 value') assert.equal(el.find('[name="select4"]').val(), '', 'check select4 value')
equal(el.find('[name="select4"]').prop('required'), true, 'check select4 required') assert.equal(el.find('[name="select4"]').prop('required'), true, 'check select4 required')
equal(el.find('[name="select4"]').is(":focus"), false, 'check select4 focus') assert.equal(el.find('[name="select4"]').is(":focus"), false, 'check select4 focus')
equal(el.find('[name="select5"]').prop("disabled"), true, 'check select5 disabled') assert.equal(el.find('[name="select5"]').prop("disabled"), true, 'check select5 disabled')
equal(el.find('[name="selectmulti1"]').val(), 'false', 'check selectmulti1 value') assert.equal(el.find('[name="selectmulti1"]').val(), 'false', 'check selectmulti1 value')
equal(el.find('[name="selectmulti1"]').prop('required'), false, 'check selectmulti1 required') assert.equal(el.find('[name="selectmulti1"]').prop('required'), false, 'check selectmulti1 required')
equal(el.find('[name="selectmulti1"]').is(":focus"), false, 'check selectmulti1 focus') assert.equal(el.find('[name="selectmulti1"]').is(":focus"), false, 'check selectmulti1 focus')
equal(el.find('[name="selectmulti2"]').val()[0], 'true', 'check selectmulti2 value') assert.equal(el.find('[name="selectmulti2"]').val()[0], 'true', 'check selectmulti2 value')
equal(el.find('[name="selectmulti2"]').val()[1], 'false', 'check selectmulti2 value') assert.equal(el.find('[name="selectmulti2"]').val()[1], 'false', 'check selectmulti2 value')
equal(el.find('[name="selectmulti2"]').prop('required'), true, 'check selectmulti2 required') assert.equal(el.find('[name="selectmulti2"]').prop('required'), true, 'check selectmulti2 required')
equal(el.find('[name="selectmulti2"]').is(":focus"), false, 'check selectmulti2 focus') assert.equal(el.find('[name="selectmulti2"]').is(":focus"), false, 'check selectmulti2 focus')
equal(el.find('[name="selectmulti3"]').prop("disabled"), true, 'check selectmulti3 disabled') assert.equal(el.find('[name="selectmulti3"]').prop("disabled"), true, 'check selectmulti3 disabled')
equal(el.find('[name="selectmultioption3"]').prop("disabled"), true, 'check selectmultioption3 disabled') assert.equal(el.find('[name="selectmultioption3"]').prop("disabled"), true, 'check selectmultioption3 disabled')
equal(el.find('[name="boolean4"]').prop("disabled"), true, 'check boolean4 disabled') assert.equal(el.find('[name="boolean4"]').prop("disabled"), true, 'check boolean4 disabled')
equal(el.find('[data-name="richtext9"]').prop("contenteditable"), "false", 'check richtext9 disabled') assert.equal(el.find('[data-name="richtext9"]').prop("contenteditable"), "false", 'check richtext9 disabled')
equal(el.find('[name="checkbox5"]').prop("disabled"), true, 'check checkbox5 disabled') assert.equal(el.find('[name="checkbox5"]').prop("disabled"), true, 'check checkbox5 disabled')
equal(el.find('[name="radiobox3"]').prop("disabled"), true, 'check radiobox3 disabled') assert.equal(el.find('[name="radiobox3"]').prop("disabled"), true, 'check radiobox3 disabled')
params = App.ControllerForm.params(el) params = App.ControllerForm.params(el)
test_params = { test_params = {
@ -359,12 +359,12 @@ test("form params check", function() {
boolean3: true, boolean3: true,
boolean4: false, boolean4: false,
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
}); });
test("form defaults + params check", function() { QUnit.test("form defaults + params check", assert => {
// deepEqual(item, test.value, 'group set/get tests' ); // assert.deepEqual(item, test.value, 'group set/get tests' );
// mix default and params -> check it -> add note // mix default and params -> check it -> add note
// test auto completion // test auto completion
@ -373,7 +373,7 @@ test("form defaults + params check", function() {
// form params check // form params check
// add signature only if form_state is empty // add signature only if form_state is empty
$('#forms').append('<hr><h1>form defaults + params check</h1><form id="form3"></form>') $('#qunit').append('<hr><h1>form defaults + params check</h1><form id="form3"></form>')
var el = $('#form3') var el = $('#form3')
var defaults = { var defaults = {
input1: '', input1: '',
@ -402,47 +402,47 @@ test("form defaults + params check", function() {
params: defaults, params: defaults,
autofocus: true autofocus: true
}); });
equal(el.find('[name="input1"]').val(), '', 'check input1 value') assert.equal(el.find('[name="input1"]').val(), '', 'check input1 value')
equal(el.find('[name="input1"]').prop('required'), false, 'check input1 required') assert.equal(el.find('[name="input1"]').prop('required'), false, 'check input1 required')
// equal(el.find('[name="input1"]').is(":focus"), true, 'check input1 focus') // assert.equal(el.find('[name="input1"]').is(":focus"), true, 'check input1 focus')
equal(el.find('[name="input2"]').val(), 'some used default', 'check input2 value') assert.equal(el.find('[name="input2"]').val(), 'some used default', 'check input2 value')
equal(el.find('[name="input2"]').prop('required'), false, 'check input2 required') assert.equal(el.find('[name="input2"]').prop('required'), false, 'check input2 required')
equal(el.find('[name="password1"]').val(), 'some used pass', 'check password1 value') assert.equal(el.find('[name="password1"]').val(), 'some used pass', 'check password1 value')
equal(el.find('[name="password1_confirm"]').val(), 'some used pass', 'check password1 value') assert.equal(el.find('[name="password1_confirm"]').val(), 'some used pass', 'check password1 value')
equal(el.find('[name="password1"]').prop('required'), true, 'check password1 required') assert.equal(el.find('[name="password1"]').prop('required'), true, 'check password1 required')
equal(el.find('[name="password1"]').is(":focus"), false, 'check password1 focus') assert.equal(el.find('[name="password1"]').is(":focus"), false, 'check password1 focus')
equal(el.find('[name="password2"]').val(), 'pw1234<l>', 'check password2 value') assert.equal(el.find('[name="password2"]').val(), 'pw1234<l>', 'check password2 value')
equal(el.find('[name="password2_confirm"]').val(), 'pw1234<l>', 'check password2 value') assert.equal(el.find('[name="password2_confirm"]').val(), 'pw1234<l>', 'check password2 value')
equal(el.find('[name="password2"]').prop('required'), true, 'check password2 required') assert.equal(el.find('[name="password2"]').prop('required'), true, 'check password2 required')
equal(el.find('[name="password2"]').is(":focus"), false, 'check password2 focus') assert.equal(el.find('[name="password2"]').is(":focus"), false, 'check password2 focus')
equal(el.find('[name="textarea1"]').val(), 'some used text', 'check textarea1 value') assert.equal(el.find('[name="textarea1"]').val(), 'some used text', 'check textarea1 value')
equal(el.find('[name="textarea1"]').prop('required'), true, 'check textarea1 required') assert.equal(el.find('[name="textarea1"]').prop('required'), true, 'check textarea1 required')
equal(el.find('[name="textarea1"]').is(":focus"), false, 'check textarea1 focus') assert.equal(el.find('[name="textarea1"]').is(":focus"), false, 'check textarea1 focus')
equal(el.find('[name="textarea2"]').val(), 'lalu <l> lalu', 'check textarea2 value') assert.equal(el.find('[name="textarea2"]').val(), 'lalu <l> lalu', 'check textarea2 value')
equal(el.find('[name="textarea2"]').prop('required'), true, 'check textarea2 required') assert.equal(el.find('[name="textarea2"]').prop('required'), true, 'check textarea2 required')
equal(el.find('[name="textarea2"]').is(":focus"), false, 'check textarea2 focus') assert.equal(el.find('[name="textarea2"]').is(":focus"), false, 'check textarea2 focus')
equal(el.find('[name="select1"]').val(), 'false', 'check select1 value') assert.equal(el.find('[name="select1"]').val(), 'false', 'check select1 value')
equal(el.find('[name="select1"]').prop('required'), false, 'check select1 required') assert.equal(el.find('[name="select1"]').prop('required'), false, 'check select1 required')
equal(el.find('[name="select1"]').is(":focus"), false, 'check select1 focus') assert.equal(el.find('[name="select1"]').is(":focus"), false, 'check select1 focus')
equal(el.find('[name="select2"]').val(), 'false', 'check select2 value') assert.equal(el.find('[name="select2"]').val(), 'false', 'check select2 value')
equal(el.find('[name="select2"]').prop('required'), false, 'check select2 required') assert.equal(el.find('[name="select2"]').prop('required'), false, 'check select2 required')
equal(el.find('[name="select2"]').is(":focus"), false, 'check select2 focus') assert.equal(el.find('[name="select2"]').is(":focus"), false, 'check select2 focus')
equal(el.find('[name="selectmulti2"]').val()[0], 'true', 'check selectmulti2 value') assert.equal(el.find('[name="selectmulti2"]').val()[0], 'true', 'check selectmulti2 value')
equal(el.find('[name="selectmulti2"]').val()[1], 'false', 'check selectmulti2 value') assert.equal(el.find('[name="selectmulti2"]').val()[1], 'false', 'check selectmulti2 value')
equal(el.find('[name="selectmulti2"]').prop('required'), true, 'check selectmulti2 required') assert.equal(el.find('[name="selectmulti2"]').prop('required'), true, 'check selectmulti2 required')
equal(el.find('[name="selectmulti2"]').is(":focus"), false, 'check selectmulti2 focus') assert.equal(el.find('[name="selectmulti2"]').is(":focus"), false, 'check selectmulti2 focus')
}); });
test("form dependend fields check", function() { QUnit.test("form dependend fields check", assert => {
// deepEqual(item, test.value, 'group set/get tests' ); // assert.deepEqual(item, test.value, 'group set/get tests' );
// mix default and params -> check it -> add note // mix default and params -> check it -> add note
// test auto completion // test auto completion
@ -451,7 +451,7 @@ test("form dependend fields check", function() {
// form params check // form params check
// add signature only if form_state is empty // add signature only if form_state is empty
$('#forms').append('<hr><h1>form dependend fields check</h1><form id="form4"></form>') $('#qunit').append('<hr><h1>form dependend fields check</h1><form id="form4"></form>')
var el = $('#form4') var el = $('#form4')
var defaults = { var defaults = {
input1: '', input1: '',
@ -549,27 +549,27 @@ test("form dependend fields check", function() {
], ],
autofocus: true autofocus: true
}); });
equal(el.find('[name="input1"]').val(), '', 'check input1 value') assert.equal(el.find('[name="input1"]').val(), '', 'check input1 value')
equal(el.find('[name="input1"]').prop('required'), false, 'check input1 required') assert.equal(el.find('[name="input1"]').prop('required'), false, 'check input1 required')
// equal(el.find('[name="input1"]').is(":focus"), true, 'check input1 focus') // assert.equal(el.find('[name="input1"]').is(":focus"), true, 'check input1 focus')
equal(el.find('[name="input2"]').val(), 'some used default', 'check input2 value') assert.equal(el.find('[name="input2"]').val(), 'some used default', 'check input2 value')
equal(el.find('[name="input2"]').prop('required'), false, 'check input2 required') assert.equal(el.find('[name="input2"]').prop('required'), false, 'check input2 required')
equal(el.find('[name="input3"]').val(), 'some used default', 'check input3 value') assert.equal(el.find('[name="input3"]').val(), 'some used default', 'check input3 value')
equal(el.find('[name="input3"]').prop('required'), false, 'check input3 required') assert.equal(el.find('[name="input3"]').prop('required'), false, 'check input3 required')
equal(el.find('[name="select1"]').val(), 'false', 'check select1 value') assert.equal(el.find('[name="select1"]').val(), 'false', 'check select1 value')
equal(el.find('[name="select1"]').prop('required'), false, 'check select1 required') assert.equal(el.find('[name="select1"]').prop('required'), false, 'check select1 required')
equal(el.find('[name="select1"]').is(":focus"), false, 'check select1 focus') assert.equal(el.find('[name="select1"]').is(":focus"), false, 'check select1 focus')
equal(el.find('[name="select2"]').val(), 'false', 'check select2 value') assert.equal(el.find('[name="select2"]').val(), 'false', 'check select2 value')
equal(el.find('[name="select2"]').prop('required'), false, 'check select2 required') assert.equal(el.find('[name="select2"]').prop('required'), false, 'check select2 required')
equal(el.find('[name="select2"]').is(":focus"), false, 'check select2 focus') assert.equal(el.find('[name="select2"]').is(":focus"), false, 'check select2 focus')
equal(el.find('[name="selectmulti2"]').val()[0], 'true', 'check selectmulti2 value') assert.equal(el.find('[name="selectmulti2"]').val()[0], 'true', 'check selectmulti2 value')
equal(el.find('[name="selectmulti2"]').val()[1], 'false', 'check selectmulti2 value') assert.equal(el.find('[name="selectmulti2"]').val()[1], 'false', 'check selectmulti2 value')
equal(el.find('[name="selectmulti2"]').prop('required'), true, 'check selectmulti2 required') assert.equal(el.find('[name="selectmulti2"]').prop('required'), true, 'check selectmulti2 required')
equal(el.find('[name="selectmulti2"]').is(":focus"), false, 'check selectmulti2 focus') assert.equal(el.find('[name="selectmulti2"]').is(":focus"), false, 'check selectmulti2 focus')
var params = App.ControllerForm.params(el) var params = App.ControllerForm.params(el)
var test_params = { var test_params = {
@ -589,14 +589,14 @@ test("form dependend fields check", function() {
date3: '2015-01-11', date3: '2015-01-11',
date4: null, date4: null,
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
errors = form.validate(params) errors = form.validate(params)
test_errors = { test_errors = {
datetime4: "is required", datetime4: "is required",
date4: "is required", date4: "is required",
} }
deepEqual(errors, test_errors, 'validation errors check') assert.deepEqual(errors, test_errors, 'validation errors check')
App.ControllerForm.validate({ errors: errors, form: el }) App.ControllerForm.validate({ errors: errors, form: el })
el.find('[name="select1"]').val('true') el.find('[name="select1"]').val('true')
@ -619,11 +619,11 @@ test("form dependend fields check", function() {
date3: '2015-01-11', date3: '2015-01-11',
date4: null, date4: null,
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
}); });
test("form handler check with and without fieldset", function() { QUnit.test("form handler check with and without fieldset", assert => {
// deepEqual(item, test.value, 'group set/get tests' ); // assert.deepEqual(item, test.value, 'group set/get tests' );
// mix default and params -> check it -> add note // mix default and params -> check it -> add note
// test auto completion // test auto completion
@ -632,7 +632,7 @@ test("form handler check with and without fieldset", function() {
// form params check // form params check
// add signature only if form_state is empty // add signature only if form_state is empty
$('#forms').append('<hr><h1>form handler check with and without fieldset</h1><form id="form5"></form>') $('#qunit').append('<hr><h1>form handler check with and without fieldset</h1><form id="form5"></form>')
var el = $('#form5') var el = $('#form5')
var defaults = { var defaults = {
select1: 'a', select1: 'a',
@ -683,18 +683,18 @@ test("form handler check with and without fieldset", function() {
], ],
//noFieldset: true, //noFieldset: true,
}); });
equal(el.find('[name="select1"]').val(), 'a', 'check select1 value') assert.equal(el.find('[name="select1"]').val(), 'a', 'check select1 value')
equal(el.find('[name="select1"]').prop('required'), false, 'check select1 required') assert.equal(el.find('[name="select1"]').prop('required'), false, 'check select1 required')
equal(el.find('[name="select2"]').val(), '1', 'check select2 value') assert.equal(el.find('[name="select2"]').val(), '1', 'check select2 value')
equal(el.find('[name="select2"]').prop('required'), false, 'check select2 required') assert.equal(el.find('[name="select2"]').prop('required'), false, 'check select2 required')
var params = App.ControllerForm.params(el) var params = App.ControllerForm.params(el)
var test_params = { var test_params = {
select1: 'a', select1: 'a',
select2: '1', select2: '1',
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
el.find('[name="select1"]').val('b') el.find('[name="select1"]').val('b')
el.find('[name="select1"]').trigger('change') el.find('[name="select1"]').trigger('change')
params = App.ControllerForm.params(el) params = App.ControllerForm.params(el)
@ -702,7 +702,7 @@ test("form handler check with and without fieldset", function() {
select1: 'b', select1: 'b',
select2: '3', select2: '3',
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
el.find('[name="select1"]').val('a') el.find('[name="select1"]').val('a')
el.find('[name="select1"]').trigger('change') el.find('[name="select1"]').trigger('change')
params = App.ControllerForm.params(el) params = App.ControllerForm.params(el)
@ -710,7 +710,7 @@ test("form handler check with and without fieldset", function() {
select1: 'a', select1: 'a',
select2: '1', select2: '1',
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
// test with noFieldset // test with noFieldset
el.empty() el.empty()
@ -728,18 +728,18 @@ test("form handler check with and without fieldset", function() {
], ],
noFieldset: true, noFieldset: true,
}); });
equal(el.find('[name="select1"]').val(), 'a', 'check select1 value') assert.equal(el.find('[name="select1"]').val(), 'a', 'check select1 value')
equal(el.find('[name="select1"]').prop('required'), false, 'check select1 required') assert.equal(el.find('[name="select1"]').prop('required'), false, 'check select1 required')
equal(el.find('[name="select2"]').val(), '1', 'check select2 value') assert.equal(el.find('[name="select2"]').val(), '1', 'check select2 value')
equal(el.find('[name="select2"]').prop('required'), false, 'check select2 required') assert.equal(el.find('[name="select2"]').prop('required'), false, 'check select2 required')
var params = App.ControllerForm.params(el) var params = App.ControllerForm.params(el)
var test_params = { var test_params = {
select1: 'a', select1: 'a',
select2: '1', select2: '1',
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
el.find('[name="select1"]').val('b') el.find('[name="select1"]').val('b')
el.find('[name="select1"]').trigger('change') el.find('[name="select1"]').trigger('change')
params = App.ControllerForm.params(el) params = App.ControllerForm.params(el)
@ -747,7 +747,7 @@ test("form handler check with and without fieldset", function() {
select1: 'b', select1: 'b',
select2: '3', select2: '3',
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
el.find('[name="select1"]').val('a') el.find('[name="select1"]').val('a')
el.find('[name="select1"]').trigger('change') el.find('[name="select1"]').trigger('change')
params = App.ControllerForm.params(el) params = App.ControllerForm.params(el)
@ -755,11 +755,11 @@ test("form handler check with and without fieldset", function() {
select1: 'a', select1: 'a',
select2: '1', select2: '1',
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
}); });
test("form postmaster filter", function() { QUnit.test("form postmaster filter", assert => {
App.TicketPriority.refresh([ App.TicketPriority.refresh([
{ {
@ -782,7 +782,7 @@ test("form postmaster filter", function() {
}, },
] ) ] )
$('#forms').append('<hr><h1>form postmaster filter</h1><form id="form6"></form>') $('#qunit').append('<hr><h1>form postmaster filter</h1><form id="form6"></form>')
var el = $('#form6') var el = $('#form6')
var defaults = { var defaults = {
input2: 'some name', input2: 'some name',
@ -864,7 +864,7 @@ test("form postmaster filter", function() {
} }
}, },
}; };
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
el.find('[name="set::x-zammad-ticket-priority_id::value"]').closest('.js-filterElement').find('.js-remove').click() el.find('[name="set::x-zammad-ticket-priority_id::value"]').closest('.js-filterElement').find('.js-remove').click()
el.find('[name="set::x-zammad-ticket-customer_id::value"]').closest('.js-filterElement').find('.js-remove').click() el.find('[name="set::x-zammad-ticket-customer_id::value"]').closest('.js-filterElement').find('.js-remove').click()
@ -897,7 +897,7 @@ test("form postmaster filter", function() {
}, },
}, },
}; };
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
el.find('.postmaster_set .js-filterElement').last().find('.filter-controls .js-add').click() el.find('.postmaster_set .js-filterElement').last().find('.filter-controls .js-add').click()
@ -932,10 +932,10 @@ test("form postmaster filter", function() {
}, },
}, },
}; };
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
App.Delay.set(function() { App.Delay.set(function() {
test("form postmaster filter - needed to do delayed because of tag ui", function() { QUnit.test("form postmaster filter - needed to do delayed because of tag ui", assert => {
el.find('[name="set::x-zammad-ticket-tags::value"]').closest('.js-filterElement').find('.token .close').last().click() el.find('[name="set::x-zammad-ticket-tags::value"]').closest('.js-filterElement').find('.token .close').last().click()
params = App.ControllerForm.params(el) params = App.ControllerForm.params(el)
test_params = { test_params = {
@ -968,13 +968,13 @@ test("form postmaster filter", function() {
}, },
}, },
}; };
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
}) })
}, 500); }, 500);
}); });
test("form selector", function() { QUnit.test("form selector", assert => {
$('#forms').append('<hr><h1>form selector</h1><div><form id="form7"></form></div>') $('#qunit').append('<hr><h1>form selector</h1><div><form id="form7"></form></div>')
var el = $('#form7') var el = $('#form7')
var defaults = { var defaults = {
input2: 'some name66', input2: 'some name66',
@ -994,19 +994,19 @@ test("form selector", function() {
input2: 'some name66', input2: 'some name66',
}; };
params = App.ControllerForm.params(el) params = App.ControllerForm.params(el)
deepEqual(params, test_params, 'form param check via $("#form")') assert.deepEqual(params, test_params, 'form param check via $("#form")')
params = App.ControllerForm.params(el.find('input')) params = App.ControllerForm.params(el.find('input'))
deepEqual(params, test_params, 'form param check via $("#form").find("input")') assert.deepEqual(params, test_params, 'form param check via $("#form").find("input")')
params = App.ControllerForm.params(el.parent()) params = App.ControllerForm.params(el.parent())
deepEqual(params, test_params, 'form param check via $("#form").parent()') assert.deepEqual(params, test_params, 'form param check via $("#form").parent()')
}); });
test("form params check", function() { QUnit.test("form params check", assert => {
$('#forms').append('<hr><h1>form params check</h1><form id="form9"></form>') $('#qunit').append('<hr><h1>form params check</h1><form id="form9"></form>')
var el = $('#form9') var el = $('#form9')
var defaults = { var defaults = {
select1: false, select1: false,
@ -1038,13 +1038,13 @@ test("form params check", function() {
} }
//console.log('params', params) //console.log('params', params)
//console.log('test_params', test_params) //console.log('test_params', test_params)
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
}); });
test("form params check direct", function() { QUnit.test("form params check direct", assert => {
$('#forms').append('<hr><h1>form params check direct</h1><form id="form10"><input name="a" value="b"><input name="l::l::l1" value="d"><input name="l::l::" value><input name="f::f::" value><input name="f::f::f1" value="e"></form>') $('#qunit').append('<hr><h1>form params check direct</h1><form id="form10"><input name="a" value="b"><input name="l::l::l1" value="d"><input name="l::l::" value><input name="f::f::" value><input name="f::f::f1" value="e"></form>')
var el = $('#form10') var el = $('#form10')
params = App.ControllerForm.params(el) params = App.ControllerForm.params(el)
@ -1065,12 +1065,12 @@ test("form params check direct", function() {
} }
//console.log('params', params) //console.log('params', params)
//console.log('test_params', test_params) //console.log('test_params', test_params)
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
}); });
test("object manager form 1", function() { QUnit.test("object manager form 1", assert => {
$('#forms').append('<hr><h1>object manager 1</h1><form id="form11"></form>') $('#qunit').append('<hr><h1>object manager 1</h1><form id="form11"></form>')
var el = $('#form11') var el = $('#form11')
var defaults = {} var defaults = {}
@ -1118,7 +1118,7 @@ test("object manager form 1", function() {
} }
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
el.find('[name=data_type]').val('datetime').trigger('change') el.find('[name=data_type]').val('datetime').trigger('change')
@ -1153,13 +1153,13 @@ test("object manager form 1", function() {
} }
} }
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
}); });
test("object manager form 2", function() { QUnit.test("object manager form 2", assert => {
$('#forms').append('<hr><h1>object manager 2</h1><form id="form12"></form>') $('#qunit').append('<hr><h1>object manager 2</h1><form id="form12"></form>')
var el = $('#form12') var el = $('#form12')
var defaults = { var defaults = {
@ -1230,13 +1230,13 @@ test("object manager form 2", function() {
} }
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
}); });
test("object manager form 3", function() { QUnit.test("object manager form 3", assert => {
$('#forms').append('<hr><h1>object manager 3</h1><form id="form13"></form>') $('#qunit').append('<hr><h1>object manager 3</h1><form id="form13"></form>')
var el = $('#form13') var el = $('#form13')
var defaults = {} var defaults = {}
@ -1284,7 +1284,7 @@ test("object manager form 3", function() {
} }
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
el.find('[name="screens::create_middle::ticket.customer::shown"]').click() el.find('[name="screens::create_middle::ticket.customer::shown"]').click()
el.find('[name="screens::edit::ticket.customer::shown"]').click() el.find('[name="screens::edit::ticket.customer::shown"]').click()
@ -1321,13 +1321,13 @@ test("object manager form 3", function() {
} }
} }
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
}); });
test("check if select value is not existing but is shown", function() { QUnit.test("check if select value is not existing but is shown", assert => {
$('#forms').append('<hr><h1>check if select value is not existing but is shown</h1><form id="form17"></form>') $('#qunit').append('<hr><h1>check if select value is not existing but is shown</h1><form id="form17"></form>')
var el = $('#form17') var el = $('#form17')
var defaults = { var defaults = {
select1: 'NOT EXISTING', select1: 'NOT EXISTING',
@ -1346,20 +1346,20 @@ test("check if select value is not existing but is shown", function() {
test_params = { test_params = {
select1: 'NOT EXISTING', select1: 'NOT EXISTING',
} }
deepEqual(params, test_params) assert.deepEqual(params, test_params)
equal('AA', el.find('[name=select1] option')[0].text) assert.equal('AA', el.find('[name=select1] option')[0].text)
equal('äöü', el.find('[name=select1] option')[1].text) assert.equal('äöü', el.find('[name=select1] option')[1].text)
equal('b', el.find('[name=select1] option')[2].text) assert.equal('b', el.find('[name=select1] option')[2].text)
equal('B', el.find('[name=select1] option')[3].text) assert.equal('B', el.find('[name=select1] option')[3].text)
equal('NOT EXISTING', el.find('[name=select1] option')[4].text) assert.equal('NOT EXISTING', el.find('[name=select1] option')[4].text)
equal('XX', el.find('[name=select1] option')[5].text) assert.equal('XX', el.find('[name=select1] option')[5].text)
}); });
test("check if select value is not existing and is not shown", function() { QUnit.test("check if select value is not existing and is not shown", assert => {
$('#forms').append('<hr><h1>check if select value is not existing and is not shown</h1><form id="form18"></form>') $('#qunit').append('<hr><h1>check if select value is not existing and is not shown</h1><form id="form18"></form>')
var el = $('#form18') var el = $('#form18')
var defaults = { var defaults = {
select1: 'NOT EXISTING', select1: 'NOT EXISTING',
@ -1379,19 +1379,19 @@ test("check if select value is not existing and is not shown", function() {
test_params = { test_params = {
select1: 'XY', select1: 'XY',
} }
deepEqual(params, test_params) assert.deepEqual(params, test_params)
equal('AA', el.find('[name=select1] option')[0].text) assert.equal('AA', el.find('[name=select1] option')[0].text)
equal('äöü', el.find('[name=select1] option')[1].text) assert.equal('äöü', el.find('[name=select1] option')[1].text)
equal('b', el.find('[name=select1] option')[2].text) assert.equal('b', el.find('[name=select1] option')[2].text)
equal('B', el.find('[name=select1] option')[3].text) assert.equal('B', el.find('[name=select1] option')[3].text)
equal('XX', el.find('[name=select1] option')[4].text) assert.equal('XX', el.find('[name=select1] option')[4].text)
}); });
test("time range form 1", function() { QUnit.test("time range form 1", assert => {
$('#forms').append('<hr><h1>time range form 1</h1><form id="form14"></form>') $('#qunit').append('<hr><h1>time range form 1</h1><form id="form14"></form>')
var el = $('#form14') var el = $('#form14')
var defaults = {} var defaults = {}
@ -1414,7 +1414,7 @@ test("time range form 1", function() {
} }
} }
deepEqual(params, test_params, 'base form param range check') assert.deepEqual(params, test_params, 'base form param range check')
el.find('.js-range').val('minute').trigger('change') el.find('.js-range').val('minute').trigger('change')
el.find('.js-valueRangeSelector .js-value').val('120').trigger('change') el.find('.js-valueRangeSelector .js-value').val('120').trigger('change')
@ -1426,7 +1426,7 @@ test("time range form 1", function() {
"value": "120" "value": "120"
} }
} }
deepEqual(params, test_params, 'form param minute range check') assert.deepEqual(params, test_params, 'form param minute range check')
el.find('.js-range').val('hour').trigger('change') el.find('.js-range').val('hour').trigger('change')
el.find('.js-valueRangeSelector .js-value').val('48').trigger('change') el.find('.js-valueRangeSelector .js-value').val('48').trigger('change')
@ -1438,7 +1438,7 @@ test("time range form 1", function() {
"value": "48" "value": "48"
} }
} }
deepEqual(params, test_params, 'form param hour range check') assert.deepEqual(params, test_params, 'form param hour range check')
el.find('.js-range').val('day').trigger('change') el.find('.js-range').val('day').trigger('change')
el.find('.js-valueRangeSelector .js-value').val('31').trigger('change') el.find('.js-valueRangeSelector .js-value').val('31').trigger('change')
@ -1450,7 +1450,7 @@ test("time range form 1", function() {
"value": "31" "value": "31"
} }
} }
deepEqual(params, test_params, 'form param day range check') assert.deepEqual(params, test_params, 'form param day range check')
el.find('.js-range').val('month').trigger('change') el.find('.js-range').val('month').trigger('change')
el.find('.js-valueRangeSelector .js-value').val('12').trigger('change') el.find('.js-valueRangeSelector .js-value').val('12').trigger('change')
@ -1462,7 +1462,7 @@ test("time range form 1", function() {
"value": "12" "value": "12"
} }
} }
deepEqual(params, test_params, 'form param month range check') assert.deepEqual(params, test_params, 'form param month range check')
el.find('.js-range').val('year').trigger('change') el.find('.js-range').val('year').trigger('change')
el.find('.js-valueRangeSelector .js-value').val('20').trigger('change') el.find('.js-valueRangeSelector .js-value').val('20').trigger('change')
@ -1474,12 +1474,12 @@ test("time range form 1", function() {
"value": "20" "value": "20"
} }
} }
deepEqual(params, test_params, 'form param year range check') assert.deepEqual(params, test_params, 'form param year range check')
}); });
test("form select with empty option list", function() { QUnit.test("form select with empty option list", assert => {
$('#forms').append('<hr><h1>form select with empty option list</h1><form id="form15"></form>') $('#qunit').append('<hr><h1>form select with empty option list</h1><form id="form15"></form>')
var el = $('#form15') var el = $('#form15')
var defaults = {} var defaults = {}
new App.ControllerForm({ new App.ControllerForm({
@ -1506,12 +1506,12 @@ test("form select with empty option list", function() {
select5: 'A', select5: 'A',
select6: 'B', select6: 'B',
} }
deepEqual(params, test_params) assert.deepEqual(params, test_params)
}); });
test("form elements with sort check", function() { QUnit.test("form elements with sort check", assert => {
$('#forms').append('<hr><h1>form elements with sort check</h1><form id="form16"></form>') $('#qunit').append('<hr><h1>form elements with sort check</h1><form id="form16"></form>')
var el = $('#form16') var el = $('#form16')
var defaults = {} var defaults = {}
new App.ControllerForm({ new App.ControllerForm({
@ -1533,30 +1533,30 @@ test("form elements with sort check", function() {
checkbox1: 'A', checkbox1: 'A',
radio1: 'A', radio1: 'A',
} }
deepEqual(params, test_params) assert.deepEqual(params, test_params)
equal('AA', el.find('[name=select1] option')[0].text) assert.equal('AA', el.find('[name=select1] option')[0].text)
equal('äöü', el.find('[name=select1] option')[1].text) assert.equal('äöü', el.find('[name=select1] option')[1].text)
equal('b', el.find('[name=select1] option')[2].text) assert.equal('b', el.find('[name=select1] option')[2].text)
equal('B', el.find('[name=select1] option')[3].text) assert.equal('B', el.find('[name=select1] option')[3].text)
equal('XX', el.find('[name=select1] option')[4].text) assert.equal('XX', el.find('[name=select1] option')[4].text)
equal('XX', el.find('[name=checkbox1]')[0].value) assert.equal('XX', el.find('[name=checkbox1]')[0].value)
equal('', el.find('[name=checkbox1]')[1].value) assert.equal('', el.find('[name=checkbox1]')[1].value)
equal('XY', el.find('[name=checkbox1]')[2].value) assert.equal('XY', el.find('[name=checkbox1]')[2].value)
equal('B', el.find('[name=checkbox1]')[3].value) assert.equal('B', el.find('[name=checkbox1]')[3].value)
equal('A', el.find('[name=checkbox1]')[4].value) assert.equal('A', el.find('[name=checkbox1]')[4].value)
equal('XX', el.find('[name=radio1]')[0].value) assert.equal('XX', el.find('[name=radio1]')[0].value)
equal('', el.find('[name=radio1]')[1].value) assert.equal('', el.find('[name=radio1]')[1].value)
equal('XY', el.find('[name=radio1]')[2].value) assert.equal('XY', el.find('[name=radio1]')[2].value)
equal('B', el.find('[name=radio1]')[3].value) assert.equal('B', el.find('[name=radio1]')[3].value)
equal('A', el.find('[name=radio1]')[4].value) assert.equal('A', el.find('[name=radio1]')[4].value)
}); });
test("form deep nesting", function() { QUnit.test("form deep nesting", assert => {
$('#forms').append('<hr><h1>form selector</h1><div><form id="form19"></form></div>') $('#qunit').append('<hr><h1>form selector</h1><div><form id="form19"></form></div>')
var el = $('#form19') var el = $('#form19')
var defaults = { var defaults = {
a: { a: {
@ -1580,11 +1580,11 @@ test("form deep nesting", function() {
}); });
params = App.ControllerForm.params(el) params = App.ControllerForm.params(el)
deepEqual(params, defaults, 'nested params') assert.deepEqual(params, defaults, 'nested params')
}); });
test("form with external links", function() { QUnit.test("form with external links", assert => {
$('#forms').append('<hr><h1>form with external links</h1><div><form id="form20"></form></div>') $('#qunit').append('<hr><h1>form with external links</h1><div><form id="form20"></form></div>')
var el = $('#form20') var el = $('#form20')
var defaults = { var defaults = {
a: '133', a: '133',
@ -1603,7 +1603,7 @@ test("form with external links", function() {
}); });
params = App.ControllerForm.params(el) params = App.ControllerForm.params(el)
deepEqual(params, defaults) assert.deepEqual(params, defaults)
equal('https://example.com/?q=133', el.find('input[name="a"]').parents('.controls').find('a[href]').attr('href')) assert.equal('https://example.com/?q=133', el.find('input[name="a"]').parents('.controls').find('a[href]').attr('href'))
equal('https://example.com/?q=abc%20d', el.find('select[name="b"]').parents('.controls').find('a[href]').attr('href')) assert.equal('https://example.com/?q=abc%20d', el.find('select[name="b"]').parents('.controls').find('a[href]').attr('href'))
}); });

View file

@ -1,4 +1,4 @@
function check_ajax_field(field, value, count, callback, waitTotal = 30000, wait = 0) { function check_ajax_field(field, value, count, callback, assert, waitTotal = 30000, wait = 0) {
$elementInput = $('[name="' + field + '"].js-shadow + .js-input') $elementInput = $('[name="' + field + '"].js-shadow + .js-input')
if ($elementInput.val() != value) { if ($elementInput.val() != value) {
$elementInput.focus().val(value).trigger('input') $elementInput.focus().val(value).trigger('input')
@ -9,22 +9,22 @@ function check_ajax_field(field, value, count, callback, waitTotal = 30000, wait
var match = entries == count var match = entries == count
if (match || wait >= waitTotal) { if (match || wait >= waitTotal) {
equal(entries, count, 'search result found for email address ' + value) assert.equal(entries, count, 'search result found for email address ' + value)
callback() callback()
return return
} }
wait += 100 wait += 100
if (wait % 3000 == 0) { if (wait % 3000 == 0) {
ok(true, 'check_ajax_field for ' + field + ' waiting ' + wait) assert.ok(true, 'check_ajax_field for ' + field + ' waiting ' + wait)
} }
setTimeout(function() { setTimeout(function() {
check_ajax_field(field, value, count, callback, waitTotal, wait) check_ajax_field(field, value, count, callback, assert, waitTotal, wait)
}, 100) }, 100)
} }
test( "autocompletion_ajax check", function(assert) { QUnit.test( "autocompletion_ajax check", assert => {
var done = assert.async(1) var done = assert.async(1)
$('#forms').append('<hr><h1>autocompletion_ajax check</h1><form id="form1"></form>') $('#forms').append('<hr><h1>autocompletion_ajax check</h1><form id="form1"></form>')
@ -57,14 +57,14 @@ test( "autocompletion_ajax check", function(assert) {
}) })
.then( function() { .then( function() {
return new Promise( (resolve, reject) => { return new Promise( (resolve, reject) => {
notEqual(App.Session.get(), undefined, 'User is logged in so the api requests will work') assert.notEqual(App.Session.get(), undefined, 'User is logged in so the api requests will work')
check_ajax_field('autocompletion_ajax1', 'admin@example.com', 1, resolve) check_ajax_field('autocompletion_ajax1', 'admin@example.com', 1, resolve, assert)
}) })
}) })
.then( function() { .then( function() {
return new Promise( (resolve, reject) => { return new Promise( (resolve, reject) => {
check_ajax_field('autocompletion_ajax1', 'xxx@example.com', 0, resolve) check_ajax_field('autocompletion_ajax1', 'xxx@example.com', 0, resolve, assert)
}) })
}) })
.finally(done) .finally(done)

View file

@ -1,4 +1,4 @@
test("form elements check", function(assert) { QUnit.test("form elements check", assert => {
var done = assert.async(1) var done = assert.async(1)
$('#forms').append('<hr><h1>form elements check</h1><form id="form1"></form>') $('#forms').append('<hr><h1>form elements check</h1><form id="form1"></form>')
@ -21,7 +21,7 @@ test("form elements check", function(assert) {
color: '#fff' color: '#fff'
} }
deepEqual(params, test_params, 'default param check') assert.deepEqual(params, test_params, 'default param check')
var inputEl = el.find('.js-input')[0] var inputEl = el.find('.js-input')[0]
@ -37,7 +37,7 @@ test("form elements check", function(assert) {
color: '' color: ''
} }
deepEqual(params, test_params, 'UI allows color field to be empty') assert.deepEqual(params, test_params, 'UI allows color field to be empty')
}) })
.then( function() { .then( function() {
previousSwatchColor = getSwatchColor() previousSwatchColor = getSwatchColor()
@ -51,8 +51,8 @@ test("form elements check", function(assert) {
color: 'rgb(0,100,100)' color: 'rgb(0,100,100)'
} }
deepEqual(params, test_params, 'UI allows to type in RGB colors') assert.deepEqual(params, test_params, 'UI allows to type in RGB colors')
notEqual(previousSwatchColor, getSwatchColor(), 'color in swatch was updated') assert.notEqual(previousSwatchColor, getSwatchColor(), 'color in swatch was updated')
}) })
.then( function() { .then( function() {
var circle = el.find('.js-colorpicker-circle')[0] var circle = el.find('.js-colorpicker-circle')[0]
@ -68,15 +68,15 @@ test("form elements check", function(assert) {
color: 'hsl(169,100%,20%)' color: 'hsl(169,100%,20%)'
} }
deepEqual(params, test_params, 'Color is transformed to HSL after moving the circle') assert.deepEqual(params, test_params, 'Color is transformed to HSL after moving the circle')
notEqual(previousSwatchColor, getSwatchColor(), 'color in swatch was updated') assert.notEqual(previousSwatchColor, getSwatchColor(), 'color in swatch was updated')
}) })
.then( function() { .then( function() {
var slider = el.find('.js-colorpicker-slider')[0] var slider = el.find('.js-colorpicker-slider')[0]
previousSwatchColor = getSwatchColor() previousSwatchColor = getSwatchColor()
return new Promise( (resolve,reject) => { return new Promise( (resolve,reject) => {
syn.drag(slider, { to: '-0x-10'}, resolve) syn.drag(slider, { to: '-0x-11'}, resolve)
}) })
}) })
.then( function() { .then( function() {
@ -85,8 +85,8 @@ test("form elements check", function(assert) {
color: 'hsl(169,100%,27%)' color: 'hsl(169,100%,27%)'
} }
deepEqual(params, test_params, 'Color code is changed after draging slider') assert.deepEqual(params, test_params, 'Color code is changed after draging slider')
notEqual(previousSwatchColor, getSwatchColor(), 'color in swatch was updated') assert.notEqual(previousSwatchColor, getSwatchColor(), 'color in swatch was updated')
}) })
.then( function() { .then( function() {
let circle = el.find('.js-colorpicker-circle').position() let circle = el.find('.js-colorpicker-circle').position()
@ -101,10 +101,10 @@ test("form elements check", function(assert) {
let new_circle = el.find('.js-colorpicker-circle').position() let new_circle = el.find('.js-colorpicker-circle').position()
let new_slider = el.find('.js-colorpicker-slider').position() let new_slider = el.find('.js-colorpicker-slider').position()
notDeepEqual(circle, new_circle, 'Color picker is updated after typing in color') assert.notDeepEqual(circle, new_circle, 'Color picker is updated after typing in color')
notDeepEqual(slider, new_slider, 'Color picker is updated after typing in color') assert.notDeepEqual(slider, new_slider, 'Color picker is updated after typing in color')
notEqual(previousSwatchColor, getSwatchColor(), 'color in swatch was updated') assert.notEqual(previousSwatchColor, getSwatchColor(), 'color in swatch was updated')
}) })
}) })
.finally(done) .finally(done)

View file

@ -1,6 +1,6 @@
// column_select // column_select
test( "column_select check", function(assert) { QUnit.test( "column_select check", assert => {
$('#forms').append('<hr><h1>column_select check</h1><form id="form1"></form>') $('#forms').append('<hr><h1>column_select check</h1><form id="form1"></form>')
var el = $('#form1') var el = $('#form1')
var defaults = { var defaults = {
@ -32,7 +32,7 @@ test( "column_select check", function(assert) {
column_select2: ['aaa', 'bbb'], column_select2: ['aaa', 'bbb'],
column_select3: ['1', '2'], column_select3: ['1', '2'],
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
// add and remove selections // add and remove selections
$('[data-name="column_select1"] .js-pool .js-option[data-value="bbb"]').click() $('[data-name="column_select1"] .js-pool .js-option[data-value="bbb"]').click()
@ -43,7 +43,7 @@ test( "column_select check", function(assert) {
column_select2: ['aaa', 'bbb'], column_select2: ['aaa', 'bbb'],
column_select3: ['1', '2'], column_select3: ['1', '2'],
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
var done = assert.async(); var done = assert.async();
setTimeout(function() { setTimeout(function() {
@ -58,7 +58,7 @@ test( "column_select check", function(assert) {
column_select2: ['1', 'bbb'], column_select2: ['1', 'bbb'],
column_select3: ['1', '2', 'aaa'], column_select3: ['1', '2', 'aaa'],
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
done(); done();
}, 400); }, 400);

View file

@ -1,4 +1,4 @@
test("core_workflow_condition", function(assert) { QUnit.test("core_workflow_condition", assert => {
var form = $('#forms') var form = $('#forms')
var el = $('<div></div>').attr('id', 'form1') var el = $('<div></div>').attr('id', 'form1')
@ -14,20 +14,20 @@ test("core_workflow_condition", function(assert) {
autofocus: true autofocus: true
}); });
equal(el.find('.js-remove.is-disabled').length, 1, 'find disabled button') assert.equal(el.find('.js-remove.is-disabled').length, 1, 'find disabled button')
el.find('.js-add').click() el.find('.js-add').click()
equal(el.find('.js-remove.is-disabled').length, 0, 'find no disabled button after add') assert.equal(el.find('.js-remove.is-disabled').length, 0, 'find no disabled button after add')
el.find('.js-remove').click() el.find('.js-remove').click()
equal(el.find('.js-remove.is-disabled').length, 1, 'find disabled button after remove') assert.equal(el.find('.js-remove.is-disabled').length, 1, 'find disabled button after remove')
equal(typeof(App.ControllerForm.params(el).condition_selected), 'object', 'empty element results in a hash') assert.equal(typeof(App.ControllerForm.params(el).condition_selected), 'object', 'empty element results in a hash')
equal(_.isEmpty(App.ControllerForm.params(el).condition_selected), true, 'empty element results are empty') assert.equal(_.isEmpty(App.ControllerForm.params(el).condition_selected), true, 'empty element results are empty')
el.find('.js-add').click() el.find('.js-add').click()
el.find("option[value='ticket.owner_id']").prop('selected', true) el.find("option[value='ticket.owner_id']").prop('selected', true)
equal(el.find('.js-preCondition').length, 0, 'pre condition not available') assert.equal(el.find('.js-preCondition').length, 0, 'pre condition not available')
}); });
test("core_workflow_perform", function(assert) { QUnit.test("core_workflow_perform", assert => {
var form = $('#forms') var form = $('#forms')
var el = $('<div></div>').attr('id', 'form1') var el = $('<div></div>').attr('id', 'form1')
@ -43,17 +43,17 @@ test("core_workflow_perform", function(assert) {
autofocus: true autofocus: true
}); });
equal(el.find('.js-remove.is-disabled').length, 1, 'find disabled button') assert.equal(el.find('.js-remove.is-disabled').length, 1, 'find disabled button')
el.find('.js-add').click() el.find('.js-add').click()
equal(el.find('.js-remove.is-disabled').length, 0, 'find no disabled button after add') assert.equal(el.find('.js-remove.is-disabled').length, 0, 'find no disabled button after add')
el.find('.js-remove').click() el.find('.js-remove').click()
equal(el.find('.js-remove.is-disabled').length, 1, 'find disabled button after remove') assert.equal(el.find('.js-remove.is-disabled').length, 1, 'find disabled button after remove')
equal(typeof(App.ControllerForm.params(el).perform), 'object', 'empty element results in a hash') assert.equal(typeof(App.ControllerForm.params(el).perform), 'object', 'empty element results in a hash')
equal(_.isEmpty(App.ControllerForm.params(el).perform), true, 'empty element results are empty') assert.equal(_.isEmpty(App.ControllerForm.params(el).perform), true, 'empty element results are empty')
el.find('.js-add').click() el.find('.js-add').click()
el.find("option[value='ticket.owner_id']").prop('selected', true) el.find("option[value='ticket.owner_id']").prop('selected', true)
equal(el.find('.js-preCondition').length, 0, 'pre condition not available') assert.equal(el.find('.js-preCondition').length, 0, 'pre condition not available')
el.find('.js-add:last').click() el.find('.js-add:last').click()
el.find("option[value='ticket.group_id']:last").prop('selected', true) el.find("option[value='ticket.group_id']:last").prop('selected', true)
@ -67,5 +67,5 @@ test("core_workflow_perform", function(assert) {
attribute_count[$(this).val()] ||= 0 attribute_count[$(this).val()] ||= 0
attribute_count[$(this).val()] += 1 attribute_count[$(this).val()] += 1
}) })
equal(attribute_count['ticket.group_id'], 3, 'hasDuplicateSelector - its possible to select an attribute multiple times') assert.equal(attribute_count['ticket.group_id'], 3, 'hasDuplicateSelector - its possible to select an attribute multiple times')
}); });

View file

@ -1,4 +1,4 @@
test("DateTime timepicker focuses hours", function(assert) { QUnit.test("DateTime timepicker focuses hours", assert => {
var form = $('#forms') var form = $('#forms')
var el = $('<div></div>').attr('id', 'form1') var el = $('<div></div>').attr('id', 'form1')
@ -16,9 +16,9 @@ test("DateTime timepicker focuses hours", function(assert) {
autofocus: true autofocus: true
}); });
equal(el.find('[data-name=datetime1] [data-item=date]')[0].disabled, false) assert.equal(el.find('[data-name=datetime1] [data-item=date]')[0].disabled, false)
equal(el.find('[data-name=datetime1] [data-item=time]')[0].disabled, false) assert.equal(el.find('[data-name=datetime1] [data-item=time]')[0].disabled, false)
equal(el.find('[data-name=datetime2] [data-item=date]')[0].disabled, true) assert.equal(el.find('[data-name=datetime2] [data-item=date]')[0].disabled, true)
equal(el.find('[data-name=datetime2] [data-item=time]')[0].disabled, true) assert.equal(el.find('[data-name=datetime2] [data-item=time]')[0].disabled, true)
equal(el.find('[data-name=date3] [data-item=date]')[0].disabled, true) assert.equal(el.find('[data-name=date3] [data-item=date]')[0].disabled, true)
}); });

View file

@ -1,6 +1,6 @@
// form // form
test('form checks', function() { QUnit.test('form checks', assert => {
// use unsorted order to check if the frontend is sorting correctly // use unsorted order to check if the frontend is sorting correctly
App.TicketPriority.refresh([ App.TicketPriority.refresh([
@ -222,42 +222,42 @@ test('form checks', function() {
}, },
}, },
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
// check possible options // check possible options
equal(el.find('[name="priority1_id"] option').length, 3) assert.equal(el.find('[name="priority1_id"] option').length, 3)
equal(el.find('[name="priority2_id"] option').length, 4) assert.equal(el.find('[name="priority2_id"] option').length, 4)
equal(el.find('[name="priority3_id"] option').length, 4) assert.equal(el.find('[name="priority3_id"] option').length, 4)
equal(el.find('[name="priority4_id"] option').length, 4) assert.equal(el.find('[name="priority4_id"] option').length, 4)
equal(el.find('[name="priority5_id"] option').length, 3) assert.equal(el.find('[name="priority5_id"] option').length, 3)
// check priority1_id selection order // check priority1_id selection order
equal(el.find('[name="priority1_id"] option:nth-child(1)').text(), '1 low') assert.equal(el.find('[name="priority1_id"] option:nth-child(1)').text(), '1 low')
equal(el.find('[name="priority1_id"] option:nth-child(2)').text(), '3 high') assert.equal(el.find('[name="priority1_id"] option:nth-child(2)').text(), '3 high')
equal(el.find('[name="priority1_id"] option:nth-child(3)').text(), '4 very high') assert.equal(el.find('[name="priority1_id"] option:nth-child(3)').text(), '4 very high')
// check priority2_id selection order // check priority2_id selection order
equal(el.find('[name="priority2_id"] option:nth-child(1)').text(), '1 low') assert.equal(el.find('[name="priority2_id"] option:nth-child(1)').text(), '1 low')
equal(el.find('[name="priority2_id"] option:nth-child(2)').text(), '2 normal') assert.equal(el.find('[name="priority2_id"] option:nth-child(2)').text(), '2 normal')
equal(el.find('[name="priority2_id"] option:nth-child(3)').text(), '3 high') assert.equal(el.find('[name="priority2_id"] option:nth-child(3)').text(), '3 high')
equal(el.find('[name="priority2_id"] option:nth-child(4)').text(), '4 very high') assert.equal(el.find('[name="priority2_id"] option:nth-child(4)').text(), '4 very high')
// check priority3_id selection order // check priority3_id selection order
equal(el.find('[name="priority3_id"] option:nth-child(1)').text(), '1 low') assert.equal(el.find('[name="priority3_id"] option:nth-child(1)').text(), '1 low')
equal(el.find('[name="priority3_id"] option:nth-child(2)').text(), '2 normal') assert.equal(el.find('[name="priority3_id"] option:nth-child(2)').text(), '2 normal')
equal(el.find('[name="priority3_id"] option:nth-child(3)').text(), '3 high') assert.equal(el.find('[name="priority3_id"] option:nth-child(3)').text(), '3 high')
equal(el.find('[name="priority3_id"] option:nth-child(4)').text(), '4 very high') assert.equal(el.find('[name="priority3_id"] option:nth-child(4)').text(), '4 very high')
// check priority4_id selection order // check priority4_id selection order
equal(el.find('[name="priority4_id"] option:nth-child(1)').text(), '1 low') assert.equal(el.find('[name="priority4_id"] option:nth-child(1)').text(), '1 low')
equal(el.find('[name="priority4_id"] option:nth-child(2)').text(), '2 normal') assert.equal(el.find('[name="priority4_id"] option:nth-child(2)').text(), '2 normal')
equal(el.find('[name="priority4_id"] option:nth-child(3)').text(), '3 high') assert.equal(el.find('[name="priority4_id"] option:nth-child(3)').text(), '3 high')
equal(el.find('[name="priority4_id"] option:nth-child(4)').text(), '4 very high') assert.equal(el.find('[name="priority4_id"] option:nth-child(4)').text(), '4 very high')
// check priority5_id selection order // check priority5_id selection order
equal(el.find('[name="priority5_id"] option:nth-child(1)').text(), '1 low') assert.equal(el.find('[name="priority5_id"] option:nth-child(1)').text(), '1 low')
equal(el.find('[name="priority5_id"] option:nth-child(2)').text(), '3 high') assert.equal(el.find('[name="priority5_id"] option:nth-child(2)').text(), '3 high')
equal(el.find('[name="priority5_id"] option:nth-child(3)').text(), '4 very high') assert.equal(el.find('[name="priority5_id"] option:nth-child(3)').text(), '4 very high')
// change sla times // change sla times
el.find('[name="first_response_time_in_text"]').val('0:30').trigger('blur') el.find('[name="first_response_time_in_text"]').val('0:30').trigger('blur')
@ -325,7 +325,7 @@ test('form checks', function() {
update_time_enabled: undefined, update_time_enabled: undefined,
update_time_in_text: '', update_time_in_text: '',
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
/* empty params or defaults */ /* empty params or defaults */
$('#forms').append('<hr><h1>form condition check</h1><form id="form2"></form>') $('#forms').append('<hr><h1>form condition check</h1><form id="form2"></form>')
@ -354,7 +354,7 @@ test('form checks', function() {
}, },
}, },
} }
deepEqual(params, test_params, 'form param check'); assert.deepEqual(params, test_params, 'form param check');
/* with params or defaults */ /* with params or defaults */
$('#forms').append('<hr><h1>form 3</h1><form id="form3"></form>') $('#forms').append('<hr><h1>form 3</h1><form id="form3"></form>')
@ -492,7 +492,7 @@ test('form checks', function() {
}, },
}, },
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
// change selector // change selector
el.find('[name="condition::ticket.priority_id::value"]').closest('.js-filterElement').find('.js-remove').click() el.find('[name="condition::ticket.priority_id::value"]').closest('.js-filterElement').find('.js-remove').click()
@ -554,7 +554,7 @@ test('form checks', function() {
}, },
}, },
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
// change selector // change selector
el.find('[name="executions::notification.email::subject"]').closest('.js-filterElement').find('.js-remove').click() el.find('[name="executions::notification.email::subject"]').closest('.js-filterElement').find('.js-remove').click()
@ -608,7 +608,7 @@ test('form checks', function() {
}, },
}, },
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
// change selector // change selector
el.find('.js-attributeSelector').last().find('select').val('notification.email').trigger('change') el.find('.js-attributeSelector').last().find('select').val('notification.email').trigger('change')
@ -668,7 +668,7 @@ test('form checks', function() {
}, },
}, },
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
/* with params or defaults */ /* with params or defaults */
$('#forms').append('<hr><h1>form 4</h1><form id="form4"></form>') $('#forms').append('<hr><h1>form 4</h1><form id="form4"></form>')
@ -720,7 +720,7 @@ test('form checks', function() {
}, },
}, },
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
$('#forms').append('<hr><h1>form 5</h1><form id="form5"></form>') $('#forms').append('<hr><h1>form 5</h1><form id="form5"></form>')
var el = $('#form5') var el = $('#form5')
@ -770,5 +770,5 @@ test('form checks', function() {
}, },
}, },
} }
deepEqual(params, test_params, 'form article body param check') assert.deepEqual(params, test_params, 'form article body param check')
}); });

View file

@ -0,0 +1,59 @@
// form
QUnit.test( "find form check", assert => {
$('#forms').append('<hr><h1>find form check</h1><form id="form1"></form>')
var form1 = App.ControllerForm.findForm($('#form1'))
assert.equal(form1.is('form'), true)
$('#forms').append('<hr><h1>find form check</h1><form id="form2"><input class="js-input" value="test 123"></form>')
var form2 = App.ControllerForm.findForm($('#form2 .js-input'))
assert.equal(form2.is('form'), true)
$('#forms').append('<hr><h1>find form check</h1><form id="form3"><input class="js-input" value="test 123"><button class="js-button">text</button></form>')
var form3 = App.ControllerForm.findForm($('#form3 .js-button'))
assert.equal(form3.is('form'), true)
App.ControllerForm.disable($('#form3 .js-button'))
assert.equal($('#form3 .js-button').prop('readonly'), true)
assert.equal($('#form3 .js-button').prop('disabled'), true)
assert.equal($('#form3 .js-input').prop('readonly'), true)
assert.equal($('#form3 .js-input').prop('disabled'), false)
App.ControllerForm.enable($('#form3 .js-button'))
assert.equal($('#form3 .js-button').prop('readonly'), false)
assert.equal($('#form3 .js-button').prop('disabled'), false)
assert.equal($('#form3 .js-input').prop('readonly'), false)
assert.equal($('#form3 .js-input').prop('disabled'), false)
$('#forms').append('<hr><h1>find form check by only disable button</h1><form id="form31"><input class="js-input" value="test 123"><button class="js-button">text</button></form>')
var form31 = App.ControllerForm.findForm($('#form31 .js-button'))
App.ControllerForm.disable($('#form31 .js-button'), 'button')
assert.equal($('#form31 .js-button').prop('readonly'), true)
assert.equal($('#form31 .js-button').prop('disabled'), true)
assert.equal($('#form31 .js-input').prop('readonly'), false)
assert.equal($('#form31 .js-input').prop('disabled'), false)
App.ControllerForm.enable($('#form31 .js-button'))
assert.equal($('#form31 .js-button').prop('readonly'), false)
assert.equal($('#form31 .js-button').prop('disabled'), false)
assert.equal($('#form31 .js-input').prop('readonly'), false)
assert.equal($('#form31 .js-input').prop('disabled'), false)
$('#forms').append('<hr><h1>find form check</h1><div id="form4"><input class="js-input" value="test 123"><button class="js-button">text</button></div>')
var form4 = App.ControllerForm.findForm($('#form4 .js-button'))
assert.equal(form4.is('form'), false)
App.ControllerForm.disable($('#form4 .js-button'))
assert.equal($('#form4 .js-button').prop('readonly'), true)
assert.equal($('#form4 .js-button').prop('disabled'), true)
assert.equal($('#form4 .js-input').prop('readonly'), false)
assert.equal($('#form4 .js-input').prop('disabled'), false)
App.ControllerForm.enable($('#form4 .js-button'))
assert.equal($('#form4 .js-button').prop('readonly'), false)
assert.equal($('#form4 .js-button').prop('disabled'), false)
assert.equal($('#form4 .js-input').prop('readonly'), false)
assert.equal($('#form4 .js-input').prop('disabled'), false)
});

View file

@ -1,5 +1,5 @@
// searchable_select // searchable_select
test( "searchable_select check", function() { QUnit.test( "searchable_select check", assert => {
$('#forms').append('<hr><h1>searchable_select check</h1><form id="form1"></form>') $('#forms').append('<hr><h1>searchable_select check</h1><form id="form1"></form>')
var el = $('#form1') var el = $('#form1')
@ -70,16 +70,16 @@ test( "searchable_select check", function() {
searchable_select3: '', searchable_select3: '',
searchable_select4: 'ccc', searchable_select4: 'ccc',
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
// change selection // change selection
$('[name="searchable_select1"].js-shadow + .js-input').focus().val('').trigger('input') $('[name="searchable_select1"].js-shadow + .js-input').focus().val('').trigger('input')
var $element = $('[name="searchable_select1"]').closest('.searchableSelect').find('.js-optionsList') var $element = $('[name="searchable_select1"]').closest('.searchableSelect').find('.js-optionsList')
var entries = $element.find('li:not(.is-hidden)').length var entries = $element.find('li:not(.is-hidden)').length
equal(entries, 3, 'dropdown count') assert.equal(entries, 3, 'dropdown count')
$('[name="searchable_select1"].js-shadow + .js-input').focus().val('ccc display').trigger('input') $('[name="searchable_select1"].js-shadow + .js-input').focus().val('ccc display').trigger('input')
var entries = $element.find('li:not(.is-hidden)').length var entries = $element.find('li:not(.is-hidden)').length
equal(entries, 1, 'dropdown count') assert.equal(entries, 1, 'dropdown count')
$element.find('li:not(.is-hidden)').first().click() $element.find('li:not(.is-hidden)').first().click()
params = App.ControllerForm.params(el) params = App.ControllerForm.params(el)
test_params = { test_params = {
@ -88,15 +88,15 @@ test( "searchable_select check", function() {
searchable_select3: '', searchable_select3: '',
searchable_select4: 'ccc', searchable_select4: 'ccc',
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
$('[name="searchable_select2"].js-shadow + .js-input').focus().val('').trigger('input') $('[name="searchable_select2"].js-shadow + .js-input').focus().val('').trigger('input')
var $element = $('[name="searchable_select2"]').closest('.searchableSelect').find('.js-optionsList') var $element = $('[name="searchable_select2"]').closest('.searchableSelect').find('.js-optionsList')
var entries = $element.find('li:not(.is-hidden)').length var entries = $element.find('li:not(.is-hidden)').length
equal(entries, 3, 'dropdown count') assert.equal(entries, 3, 'dropdown count')
$('[name="searchable_select2"].js-shadow + .js-input').focus().val('ccc display').trigger('input') $('[name="searchable_select2"].js-shadow + .js-input').focus().val('ccc display').trigger('input')
var entries = $element.find('li:not(.is-hidden)').length var entries = $element.find('li:not(.is-hidden)').length
equal(entries, 1, 'dropdown count') assert.equal(entries, 1, 'dropdown count')
$element.find('li:not(.is-hidden)').first().click() $element.find('li:not(.is-hidden)').first().click()
params = App.ControllerForm.params(el) params = App.ControllerForm.params(el)
@ -106,20 +106,20 @@ test( "searchable_select check", function() {
searchable_select3: '', searchable_select3: '',
searchable_select4: 'ccc', searchable_select4: 'ccc',
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
$('[name="searchable_select3"].js-shadow + .js-input').focus().val('').trigger('input') $('[name="searchable_select3"].js-shadow + .js-input').focus().val('').trigger('input')
var $element = $('[name="searchable_select3"]').closest('.searchableSelect').find('.js-optionsList') var $element = $('[name="searchable_select3"]').closest('.searchableSelect').find('.js-optionsList')
var entries = $element.find('li:not(.is-hidden)').length var entries = $element.find('li:not(.is-hidden)').length
equal(entries, 3, 'dropdown count') assert.equal(entries, 3, 'dropdown count')
$('[name="searchable_select3"].js-shadow + .js-input').focus().val('ccc display').trigger('input') $('[name="searchable_select3"].js-shadow + .js-input').focus().val('ccc display').trigger('input')
var entries = $element.find('li:not(.is-hidden)').length var entries = $element.find('li:not(.is-hidden)').length
equal(entries, 1, 'dropdown count') assert.equal(entries, 1, 'dropdown count')
$('[name="searchable_select3"].js-shadow + .js-input').focus().val('unknown value').trigger('input') $('[name="searchable_select3"].js-shadow + .js-input').focus().val('unknown value').trigger('input')
var entries = $element.find('li:not(.is-hidden)').length var entries = $element.find('li:not(.is-hidden)').length
equal(entries, 3, 'dropdown count') assert.equal(entries, 3, 'dropdown count')
var entries = $element.find('li.is-active').length var entries = $element.find('li.is-active').length
equal(entries, 0, 'active count') assert.equal(entries, 0, 'active count')
var e = $.Event('keydown') var e = $.Event('keydown')
e.which = 13 //enter e.which = 13 //enter
@ -133,7 +133,7 @@ test( "searchable_select check", function() {
searchable_select3: 'unknown value', searchable_select3: 'unknown value',
searchable_select4: 'ccc', searchable_select4: 'ccc',
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
$('#forms').append('<hr><h1>searchable_select check for .js-input field values</h1><form id="form2"></form>') $('#forms').append('<hr><h1>searchable_select check for .js-input field values</h1><form id="form2"></form>')
var el = $('#form2') var el = $('#form2')
@ -179,14 +179,14 @@ test( "searchable_select check", function() {
searchable_select1: 'ccc::aaa', searchable_select1: 'ccc::aaa',
searchable_select2: 'ccc::ccc', searchable_select2: 'ccc::ccc',
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
equal(el.find('[name="searchable_select1"].js-shadow + .js-input').val(), 'aaa display L2', 'verify shown input') assert.equal(el.find('[name="searchable_select1"].js-shadow + .js-input').val(), 'aaa display L2', 'verify shown input')
equal(el.find('[name="searchable_select2"].js-shadow + .js-input').val(), 'ccc display L2', 'verify shown input') assert.equal(el.find('[name="searchable_select2"].js-shadow + .js-input').val(), 'ccc display L2', 'verify shown input')
}); });
asyncTest("searchable_select submenu and option list check", function() { QUnit.test("searchable_select submenu and option list check", assert => {
expect(3); var done = assert.async()
$('#forms').append('<hr><h1>searchable_select check for special charaters values</h1><form id="form3"></form>') $('#forms').append('<hr><h1>searchable_select check for special charaters values</h1><form id="form3"></form>')
var el = $('#form3') var el = $('#form3')
@ -232,10 +232,10 @@ asyncTest("searchable_select submenu and option list check", function() {
var optionsList = el.find(".searchableSelect .js-optionsList") var optionsList = el.find(".searchableSelect .js-optionsList")
setTimeout( () => { setTimeout( () => {
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
equal(optionsSubmenu.is('[hidden]'), false, 'options submenu menu not hidden') assert.equal(optionsSubmenu.is('[hidden]'), false, 'options submenu menu not hidden')
equal(optionsList.is('[hidden]'), true, 'options list is hidden') assert.equal(optionsList.is('[hidden]'), true, 'options list is hidden')
start(); done()
}, 300) }, 300)
}); });

View file

@ -1,4 +1,4 @@
test("form elements not rendered", function(assert) { QUnit.test("form elements not rendered", assert => {
$('#forms').append('<hr><h1>form elements check</h1><form id="form1"></form>') $('#forms').append('<hr><h1>form elements check</h1><form id="form1"></form>')
var el = $('#form1') var el = $('#form1')
@ -14,6 +14,6 @@ test("form elements not rendered", function(assert) {
autofocus: true autofocus: true
}); });
ok(el.find('input[name=shown]').get(0), 'control element is visible') assert.ok(el.find('input[name=shown]').get(0), 'control element is visible')
notOk(el.find('input[name=hidden]').get(0), 'element with skipRendering is not shown') assert.notOk(el.find('input[name=hidden]').get(0), 'element with skipRendering is not shown')
}); });

View file

@ -1,4 +1,4 @@
test("form SLA times highlights first row and sets 2:00 by default for new item", function(assert) { QUnit.test("form SLA times highlights first row and sets 2:00 by default for new item", function(assert) {
$('#forms').append('<hr><h1>SLA with defaults</h1><form id="form1"></form>') $('#forms').append('<hr><h1>SLA with defaults</h1><form id="form1"></form>')
var el = $('#form1') var el = $('#form1')
@ -13,8 +13,8 @@ test("form SLA times highlights first row and sets 2:00 by default for new item"
var row = el.find('.sla_times tbody > tr:first') var row = el.find('.sla_times tbody > tr:first')
ok(row.hasClass('is-active')) assert.ok(row.hasClass('is-active'))
equal(row.find('input[data-name=first_response_time]').val(), '02:00') assert.equal(row.find('input[data-name=first_response_time]').val(), '02:00')
$('#forms').append('<hr><h1>SLA with empty times</h1><form id="form2"></form>') $('#forms').append('<hr><h1>SLA with empty times</h1><form id="form2"></form>')
@ -31,11 +31,11 @@ test("form SLA times highlights first row and sets 2:00 by default for new item"
var row = el.find('.sla_times tbody > tr:first') var row = el.find('.sla_times tbody > tr:first')
notOk(row.hasClass('is-active')) assert.notOk(row.hasClass('is-active'))
equal(row.find('input[data-name=first_response_time]').val(), '') assert.equal(row.find('input[data-name=first_response_time]').val(), '')
}); });
test("form SLA times highlights and shows settings accordingly", function(assert) { QUnit.test("form SLA times highlights and shows settings accordingly", function(assert) {
$('#forms').append('<hr><h1>SLA with non-first time set</h1><form id="form3"></form>') $('#forms').append('<hr><h1>SLA with non-first time set</h1><form id="form3"></form>')
var el = $('#form3') var el = $('#form3')
@ -53,13 +53,13 @@ test("form SLA times highlights and shows settings accordingly", function(assert
var firstRow = el.find('.sla_times tbody > tr:first') var firstRow = el.find('.sla_times tbody > tr:first')
var secondRow = el.find('.sla_times tbody > tr:nth-child(2)') var secondRow = el.find('.sla_times tbody > tr:nth-child(2)')
notOk(firstRow.hasClass('is-active')) assert.notOk(firstRow.hasClass('is-active'))
equal(firstRow.find('input[data-name=first_response_time]').val(), '') assert.equal(firstRow.find('input[data-name=first_response_time]').val(), '')
ok(secondRow.hasClass('is-active')) assert.ok(secondRow.hasClass('is-active'))
equal(secondRow.find('input[data-name=update_time]').val(), '04:00') assert.equal(secondRow.find('input[data-name=update_time]').val(), '04:00')
}) })
test("form SLA times clears field instead of 00:00", function(assert) { QUnit.test("form SLA times clears field instead of 00:00", function(assert) {
$('#forms').append('<hr><h1>SLA placeholder instead of 00:00</h1><form id="form5"></form>') $('#forms').append('<hr><h1>SLA placeholder instead of 00:00</h1><form id="form5"></form>')
var el = $('#form5') var el = $('#form5')
@ -77,5 +77,5 @@ test("form SLA times clears field instead of 00:00", function(assert) {
input.val('asd').blur() input.val('asd').blur()
equal(input.val(), '', 'shows placeholder') assert.equal(input.val(), '', 'shows placeholder')
}); });

View file

@ -1,5 +1,5 @@
// ticket_perform_action // ticket_perform_action
test( "ticket_perform_action check", function(assert) { QUnit.test( "ticket_perform_action check", assert => {
App.TicketPriority.refresh([ App.TicketPriority.refresh([
{ {
@ -120,7 +120,7 @@ test( "ticket_perform_action check", function(assert) {
} }
} }
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
// add email notification // add email notification
$('[data-attribute-name="ticket_perform_action3"] .js-add').click() $('[data-attribute-name="ticket_perform_action3"] .js-add').click()
@ -164,7 +164,7 @@ test( "ticket_perform_action check", function(assert) {
} }
} }
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
// remove recipient // remove recipient
$('[data-attribute-name="ticket_perform_action2"] .js-setNotification .js-recipient .js-remove.js-option[data-value="ticket_owner"]').click() $('[data-attribute-name="ticket_perform_action2"] .js-setNotification .js-recipient .js-remove.js-option[data-value="ticket_owner"]').click()
@ -204,7 +204,7 @@ test( "ticket_perform_action check", function(assert) {
} }
} }
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
// set notification to internal // set notification to internal
$('[data-attribute-name="ticket_perform_action2"] .js-internal select').val('true').trigger('change') $('[data-attribute-name="ticket_perform_action2"] .js-internal select').val('true').trigger('change')
@ -244,7 +244,7 @@ test( "ticket_perform_action check", function(assert) {
} }
} }
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
// add pending time // add pending time
$('[data-attribute-name="ticket_perform_action3"] .js-add').last().click() $('[data-attribute-name="ticket_perform_action3"] .js-add').last().click()
@ -302,7 +302,7 @@ test( "ticket_perform_action check", function(assert) {
setTimeout(function(){ setTimeout(function(){
params = App.ControllerForm.params(el) params = App.ControllerForm.params(el)
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
done() done()
}, 0); }, 0);
@ -352,11 +352,11 @@ test( "ticket_perform_action check", function(assert) {
} }
} }
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
}); });
// Test for backwards compatibility after issue is fixed https://github.com/zammad/zammad/issues/2782 // Test for backwards compatibility after issue is fixed https://github.com/zammad/zammad/issues/2782
test( "ticket_perform_action backwards check after issue #2782", function() { QUnit.test( "ticket_perform_action backwards check after issue #2782", assert => {
$('#forms').append('<hr><h1>ticket_perform_action check</h1><form id="form2"></form>') $('#forms').append('<hr><h1>ticket_perform_action check</h1><form id="form2"></form>')
var el = $('#form2') var el = $('#form2')
@ -401,10 +401,10 @@ test( "ticket_perform_action backwards check after issue #2782", function() {
} }
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
}); });
test( "ticket_perform_action rows manipulation", function() { QUnit.test( "ticket_perform_action rows manipulation", assert => {
App.TicketPriority.refresh([ App.TicketPriority.refresh([
{ {
id: 2, id: 2,
@ -461,29 +461,29 @@ test( "ticket_perform_action rows manipulation", function() {
autofocus: true autofocus: true
}) })
equal(true, true) assert.equal(true, true)
var selector = '[data-attribute-name="ticket_perform_action99"] ' var selector = '[data-attribute-name="ticket_perform_action99"] '
$(selector + '.js-remove').click() $(selector + '.js-remove').click()
equal($(selector + '.js-filterElement').length, 1, 'prevents removing single initial row') assert.equal($(selector + '.js-filterElement').length, 1, 'prevents removing single initial row')
$(selector + '.js-add').click() $(selector + '.js-add').click()
equal($(selector + '.js-filterElement').length, 2, 'adds 2nd row') assert.equal($(selector + '.js-filterElement').length, 2, 'adds 2nd row')
$(selector + ' .js-remove:last').click() $(selector + ' .js-remove:last').click()
equal($(selector + '.js-filterElement').length, 1, 'removes 2nd row') assert.equal($(selector + '.js-filterElement').length, 1, 'removes 2nd row')
$(selector + '.js-remove:last').click() $(selector + '.js-remove:last').click()
equal($(selector + ' .js-filterElement').length, 1, 'prevents removing last row') assert.equal($(selector + ' .js-filterElement').length, 1, 'prevents removing last row')
}); });
// Test for backwards compatibility after PR https://github.com/zammad/zammad/pull/2862 // Test for backwards compatibility after PR https://github.com/zammad/zammad/pull/2862
test( "ticket_perform_action backwards check after PR#2862", function() { QUnit.test( "ticket_perform_action backwards check after PR#2862", assert => {
$('#forms').append('<hr><h1>ticket_perform_action check</h1><form id="form3"></form>') $('#forms').append('<hr><h1>ticket_perform_action check</h1><form id="form3"></form>')
var el = $('#form3') var el = $('#form3')
@ -522,10 +522,10 @@ test( "ticket_perform_action backwards check after PR#2862", function() {
} }
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
}); });
test( "ticket_perform_action orphan time fields", function() { QUnit.test( "ticket_perform_action orphan time fields", assert => {
$('#forms').append('<hr><h1>ticket_perform_action orphan time fields</h1><form id="form4"></form>') $('#forms').append('<hr><h1>ticket_perform_action orphan time fields</h1><form id="form4"></form>')
var el = $('#form4') var el = $('#form4')
@ -558,10 +558,10 @@ test( "ticket_perform_action orphan time fields", function() {
// change to another attribute // change to another attribute
el.find('select:first').val('ticket.tags').trigger('change') el.find('select:first').val('ticket.tags').trigger('change')
equal(el.find('.js-valueRangeSelector').length, 0) assert.equal(el.find('.js-valueRangeSelector').length, 0)
}); });
test( "ticket_perform_action check possible owner selection", function() { QUnit.test( "ticket_perform_action check possible owner selection", assert => {
$('#forms').append('<hr><h1>ticket_perform_action check possible owner selection</h1><form id="form5"></form>') $('#forms').append('<hr><h1>ticket_perform_action check possible owner selection</h1><form id="form5"></form>')
var el = $('#form5') var el = $('#form5')
@ -601,7 +601,7 @@ test( "ticket_perform_action check possible owner selection", function() {
} }
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
el.find('[name="ticket_perform_action5::ticket.owner_id::pre_condition"]').val('specific').trigger('change') el.find('[name="ticket_perform_action5::ticket.owner_id::pre_condition"]').val('specific').trigger('change')
@ -616,11 +616,11 @@ test( "ticket_perform_action check possible owner selection", function() {
} }
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
}); });
test( "ticket_perform_action check when there's no available webhook", function() { QUnit.test( "ticket_perform_action check when there's no available webhook", assert => {
$('#forms').append('<hr><h1>ticket_perform_action check when there\'s no available webhook</h1><form id="form6"></form>') $('#forms').append('<hr><h1>ticket_perform_action check when there\'s no available webhook</h1><form id="form6"></form>')
var el = $('#form6') var el = $('#form6')
@ -649,14 +649,14 @@ test( "ticket_perform_action check when there's no available webhook", function(
}) })
var params = App.ControllerForm.params(el) var params = App.ControllerForm.params(el)
deepEqual(params, {}, 'form param check') assert.deepEqual(params, {}, 'form param check')
var testNoticeMessage = 'No available webhook, please create a new one or activate an existing one at "Manage > Webhook"' var testNoticeMessage = 'No available webhook, please create a new one or activate an existing one at "Manage > Webhook"'
var noticeMessage = el.find('.controls.js-webhooks div').text() var noticeMessage = el.find('.controls.js-webhooks div').text()
equal(noticeMessage, testNoticeMessage, 'form shows message when webhook is not available') assert.equal(noticeMessage, testNoticeMessage, 'form shows message when webhook is not available')
}); });
test( "ticket_perform_action check when there's an available webhook", function() { QUnit.test( "ticket_perform_action check when there's an available webhook", assert => {
$('#forms').append('<hr><h1>ticket_perform_action check when there\'s an available webhook</h1><form id="form7"></form>') $('#forms').append('<hr><h1>ticket_perform_action check when there\'s an available webhook</h1><form id="form7"></form>')
var el = $('#form7') var el = $('#form7')
@ -702,12 +702,12 @@ test( "ticket_perform_action check when there's an available webhook", function(
} }
} }
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
var testNoticeMessage = 'No available webhook, please create a new one or activate an existing one at "Manage > Webhook"' var testNoticeMessage = 'No available webhook, please create a new one or activate an existing one at "Manage > Webhook"'
var noticeMessage = el.find('.controls.js-webhooks').text() var noticeMessage = el.find('.controls.js-webhooks').text()
notEqual(noticeMessage, testNoticeMessage, 'form does not show notice message when webhook is available') assert.notEqual(noticeMessage, testNoticeMessage, 'form does not show notice message when webhook is available')
var noticeMessage = el.find('.controls.js-webhooks select option').eq(1).text() var noticeMessage = el.find('.controls.js-webhooks select option').eq(1).text()
equal(noticeMessage, 'Webhook test (https://target.example.com/webhook)', 'form shows available webhook when webhook is available') assert.equal(noticeMessage, 'Webhook test (https://target.example.com/webhook)', 'form shows available webhook when webhook is available')
}); });

View file

@ -1,5 +1,4 @@
QUnit.test("form elements check", assert => {
test("form elements check", function() {
$('#forms').append('<hr><h1>form elements check</h1><form id="form1"></form>') $('#forms').append('<hr><h1>form elements check</h1><form id="form1"></form>')
var el = $('#form1') var el = $('#form1')
@ -16,7 +15,7 @@ test("form elements check", function() {
autofocus: true autofocus: true
}); });
equal('Run every Monday at 00:00 in UTC time', el.find('.js-timerResult').text()) assert.equal('Run every Monday at 00:00 in UTC time', el.find('.js-timerResult').text())
var params = App.ControllerForm.params(el) var params = App.ControllerForm.params(el)
var test_params = { var test_params = {
@ -67,7 +66,7 @@ test("form elements check", function() {
}, },
}, },
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
$('#forms').append('<hr><h1>form elements check</h1><form id="form2"></form>') $('#forms').append('<hr><h1>form elements check</h1><form id="form2"></form>')
var el = $('#form2') var el = $('#form2')
@ -101,7 +100,7 @@ test("form elements check", function() {
autofocus: true autofocus: true
}); });
equal('Run every Monday and Friday at 00:00, 00:10, 00:50, 10:00, 10:10, 10:50, 16:00, 16:10 and 16:50 in UTC time', el.find('.js-timerResult').text()) assert.equal('Run every Monday and Friday at 00:00, 00:10, 00:50, 10:00, 10:10, 10:50, 16:00, 16:10 and 16:50 in UTC time', el.find('.js-timerResult').text())
var params = App.ControllerForm.params(el) var params = App.ControllerForm.params(el)
var test_params = { var test_params = {
@ -152,13 +151,13 @@ test("form elements check", function() {
}, },
}, },
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
$('#form2 .js-day [data-value="Sat"]').click() $('#form2 .js-day [data-value="Sat"]').click()
$('#form2 .js-hour [data-value="16"]').click() $('#form2 .js-hour [data-value="16"]').click()
$('#form2 .js-minute [data-value="10"]').click() $('#form2 .js-minute [data-value="10"]').click()
equal('Run every Monday, Friday and Saturday at 00:00, 00:50, 10:00 and 10:50 in UTC time', el.find('.js-timerResult').text()) assert.equal('Run every Monday, Friday and Saturday at 00:00, 00:50, 10:00 and 10:50 in UTC time', el.find('.js-timerResult').text())
var params = App.ControllerForm.params(el) var params = App.ControllerForm.params(el)
var test_params = { var test_params = {
@ -209,6 +208,6 @@ test("form elements check", function() {
}, },
}, },
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
}); });

View file

@ -1,4 +1,4 @@
test("form elements check", function() { QUnit.test("form elements check", assert => {
$('#forms').append('<hr><h1>form elements check</h1><form id="form1"></form>') $('#forms').append('<hr><h1>form elements check</h1><form id="form1"></form>')
var el = $('#form1') var el = $('#form1')
new App.ControllerForm({ new App.ControllerForm({
@ -54,13 +54,13 @@ test("form elements check", function() {
}, },
autofocus: true autofocus: true
}); });
equal(el.find('[name="tree_select"]').val(), '', 'check tree_select value'); assert.equal(el.find('[name="tree_select"]').val(), '', 'check tree_select value');
equal(el.find('[name="tree_select"]').closest('.searchableSelect').find('.js-input').val(), '', 'check tree_select .js-input value'); assert.equal(el.find('[name="tree_select"]').closest('.searchableSelect').find('.js-input').val(), '', 'check tree_select .js-input value');
var params = App.ControllerForm.params(el) var params = App.ControllerForm.params(el)
var test_params = { var test_params = {
tree_select: '' tree_select: ''
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
$('#forms').append('<hr><h1>form elements check</h1><form id="form2"></form>') $('#forms').append('<hr><h1>form elements check</h1><form id="form2"></form>')
var el = $('#form2') var el = $('#form2')
@ -119,13 +119,13 @@ test("form elements check", function() {
autofocus: true autofocus: true
}); });
equal(el.find('[name="tree_select"]').val(), 'aa', 'check tree_select value'); assert.equal(el.find('[name="tree_select"]').val(), 'aa', 'check tree_select value');
equal(el.find('[name="tree_select"]').closest('.searchableSelect').find('.js-input').val(), 'yes', 'check tree_select .js-input value'); assert.equal(el.find('[name="tree_select"]').closest('.searchableSelect').find('.js-input').val(), 'yes', 'check tree_select .js-input value');
var params = App.ControllerForm.params(el) var params = App.ControllerForm.params(el)
var test_params = { var test_params = {
tree_select: 'aa' tree_select: 'aa'
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
$('#forms').append('<hr><h1>form elements check</h1><form id="form3"></form>') $('#forms').append('<hr><h1>form elements check</h1><form id="form3"></form>')
var el = $('#form3') var el = $('#form3')
@ -183,13 +183,13 @@ test("form elements check", function() {
}, },
autofocus: true autofocus: true
}); });
equal(el.find('[name="tree_select"]').val(), 'aa::aab', 'check tree_select value'); assert.equal(el.find('[name="tree_select"]').val(), 'aa::aab', 'check tree_select value');
equal(el.find('[name="tree_select"]').closest('.searchableSelect').find('.js-input').val(), 'yes2', 'check tree_select .js-input value'); assert.equal(el.find('[name="tree_select"]').closest('.searchableSelect').find('.js-input').val(), 'yes2', 'check tree_select .js-input value');
var params = App.ControllerForm.params(el) var params = App.ControllerForm.params(el)
var test_params = { var test_params = {
tree_select: 'aa::aab' tree_select: 'aa::aab'
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
$('#forms').append('<hr><h1>form elements check</h1><form id="form4"></form>') $('#forms').append('<hr><h1>form elements check</h1><form id="form4"></form>')
var el = $('#form4') var el = $('#form4')
@ -265,13 +265,12 @@ test("form elements check", function() {
var test_params = { var test_params = {
tree_select_search: ['aa::aab', 'aa::aac::33', 'bb'], tree_select_search: ['aa::aab', 'aa::aac::33', 'bb'],
} }
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
}); });
asyncTest("searchable_select submenu and option list check", function() { QUnit.test("searchable_select submenu and option list check", assert => {
expect(3); var done = assert.async()
$('#forms').append('<hr><h1>form elements check</h1><form id="form5"></form>') $('#forms').append('<hr><h1>form elements check</h1><form id="form5"></form>')
var el = $('#form5') var el = $('#form5')
@ -344,10 +343,11 @@ asyncTest("searchable_select submenu and option list check", function() {
var optionsList = el.find(".searchableSelect .js-optionsList") var optionsList = el.find(".searchableSelect .js-optionsList")
setTimeout( () => { setTimeout( () => {
deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
equal(optionsSubmenu.is('[hidden]'), false, 'options submenu menu not hidden') assert.equal(optionsSubmenu.is('[hidden]'), false, 'options submenu menu not hidden')
equal(optionsList.is('[hidden]'), true, 'options list is hidden') assert.equal(optionsList.is('[hidden]'), true, 'options list is hidden')
start();
done()
}, 300) }, 300)
}); });

View file

@ -1,5 +1,5 @@
test( 'form trim checks', function() { QUnit.test( 'form trim checks', assert => {
var el = $('#form1') var el = $('#form1')
var test_params = { var test_params = {
@ -28,6 +28,6 @@ test( 'form trim checks', function() {
var params = App.ControllerForm.params( el ) var params = App.ControllerForm.params( el )
deepEqual( params, test_params, 'form param check' ) assert.deepEqual( params, test_params, 'form param check' )
}) })

View file

@ -1,4 +1,4 @@
test('form validation check', function() { QUnit.test('form validation check', assert => {
$('#forms').append('<hr><h1>form params check</h1><form id="form1"></form>') $('#forms').append('<hr><h1>form params check</h1><form id="form1"></form>')
@ -22,27 +22,27 @@ test('form validation check', function() {
}, },
params: defaults, params: defaults,
}); });
equal(el.find('[name="input1"]').val(), '', 'check input1 value') assert.equal(el.find('[name="input1"]').val(), '', 'check input1 value')
equal(el.find('[name="input1"]').prop('required'), true, 'check input1 required') assert.equal(el.find('[name="input1"]').prop('required'), true, 'check input1 required')
// equal(el.find('[name="input1"]').is(":focus"), true, 'check input1 focus') // assert.equal(el.find('[name="input1"]').is(":focus"), true, 'check input1 focus')
equal(el.find('[name="password1"]').val(), '', 'check password1 value') assert.equal(el.find('[name="password1"]').val(), '', 'check password1 value')
equal(el.find('[name="password1_confirm"]').val(), '', 'check password1 value') assert.equal(el.find('[name="password1_confirm"]').val(), '', 'check password1 value')
equal(el.find('[name="password1"]').prop('required'), true, 'check password1 required') assert.equal(el.find('[name="password1"]').prop('required'), true, 'check password1 required')
equal(el.find('[name="textarea1"]').val(), '', 'check textarea1 value') assert.equal(el.find('[name="textarea1"]').val(), '', 'check textarea1 value')
equal(el.find('[name="textarea1"]').prop('required'), true, 'check textarea1 required') assert.equal(el.find('[name="textarea1"]').prop('required'), true, 'check textarea1 required')
equal(el.find('[name="select1"]').val(), '', 'check select1 value') assert.equal(el.find('[name="select1"]').val(), '', 'check select1 value')
equal(el.find('[name="select1"]').prop('required'), true, 'check select1 required') assert.equal(el.find('[name="select1"]').prop('required'), true, 'check select1 required')
equal(el.find('[name="selectmulti1"]').val(), '', 'check selectmulti1 value') assert.equal(el.find('[name="selectmulti1"]').val(), '', 'check selectmulti1 value')
equal(el.find('[name="selectmulti1"]').prop('required'), true, 'check selectmulti1 required') assert.equal(el.find('[name="selectmulti1"]').prop('required'), true, 'check selectmulti1 required')
equal(el.find('[name="autocompletion1"]').val(), '', 'check autocompletion1 value') assert.equal(el.find('[name="autocompletion1"]').val(), '', 'check autocompletion1 value')
equal(el.find('[name="autocompletion1"]').prop('required'), true, 'check autocompletion1 required') assert.equal(el.find('[name="autocompletion1"]').prop('required'), true, 'check autocompletion1 required')
equal(el.find('[data-name="richtext1"]').val(), '', 'check richtext1 value') assert.equal(el.find('[data-name="richtext1"]').val(), '', 'check richtext1 value')
//equal(el.find('[data-name="richtext1"]').prop('required'), true, 'check richtext1 required') //equal(el.find('[data-name="richtext1"]').prop('required'), true, 'check richtext1 required')
params = App.ControllerForm.params(el) params = App.ControllerForm.params(el)
@ -59,40 +59,40 @@ test('form validation check', function() {
datetime1: 'is required', datetime1: 'is required',
date1: 'is required', date1: 'is required',
} }
deepEqual(errors, test_errors, 'validation errors check') assert.deepEqual(errors, test_errors, 'validation errors check')
App.ControllerForm.validate({ errors: errors, form: el }) App.ControllerForm.validate({ errors: errors, form: el })
equal(el.find('[name="input1"]').closest('.form-group').hasClass('has-error'), true, 'check input1 has-error') assert.equal(el.find('[name="input1"]').closest('.form-group').hasClass('has-error'), true, 'check input1 has-error')
equal(el.find('[name="input1"]').closest('.form-group').find('.help-inline').text(), 'is required', 'check input1 error message') assert.equal(el.find('[name="input1"]').closest('.form-group').find('.help-inline').text(), 'is required', 'check input1 error message')
equal(el.find('[name="password1"]').closest('.form-group').hasClass('has-error'), true, 'check password1 has-error') assert.equal(el.find('[name="password1"]').closest('.form-group').hasClass('has-error'), true, 'check password1 has-error')
equal(el.find('[name="password1"]').closest('.form-group').find('.help-inline').text(), 'is required', 'check password1 error message') assert.equal(el.find('[name="password1"]').closest('.form-group').find('.help-inline').text(), 'is required', 'check password1 error message')
equal(el.find('[name="textarea1"]').closest('.form-group').hasClass('has-error'), true, 'check textarea1 has-error') assert.equal(el.find('[name="textarea1"]').closest('.form-group').hasClass('has-error'), true, 'check textarea1 has-error')
equal(el.find('[name="textarea1"]').closest('.form-group').find('.help-inline').text(), 'is required', 'check textarea1 error message') assert.equal(el.find('[name="textarea1"]').closest('.form-group').find('.help-inline').text(), 'is required', 'check textarea1 error message')
equal(el.find('[name="select1"]').closest('.form-group').hasClass('has-error'), true, 'check select1 has-error') assert.equal(el.find('[name="select1"]').closest('.form-group').hasClass('has-error'), true, 'check select1 has-error')
equal(el.find('[name="select1"]').closest('.form-group').find('.help-inline').text(), 'is required', 'check select1 error message') assert.equal(el.find('[name="select1"]').closest('.form-group').find('.help-inline').text(), 'is required', 'check select1 error message')
equal(el.find('[name="selectmulti1"]').closest('.form-group').hasClass('has-error'), true, 'check selectmulti1 has-error') assert.equal(el.find('[name="selectmulti1"]').closest('.form-group').hasClass('has-error'), true, 'check selectmulti1 has-error')
equal(el.find('[name="selectmulti1"]').closest('.form-group').find('.help-inline').text(), 'is required', 'check selectmulti1 error message') assert.equal(el.find('[name="selectmulti1"]').closest('.form-group').find('.help-inline').text(), 'is required', 'check selectmulti1 error message')
equal(el.find('[name="autocompletion1"]').closest('.form-group').hasClass('has-error'), true, 'check autocompletion1 has-error') assert.equal(el.find('[name="autocompletion1"]').closest('.form-group').hasClass('has-error'), true, 'check autocompletion1 has-error')
equal(el.find('[name="autocompletion1"]').closest('.form-group').find('.help-inline').text(), 'is required', 'check autocompletion1 error message') assert.equal(el.find('[name="autocompletion1"]').closest('.form-group').find('.help-inline').text(), 'is required', 'check autocompletion1 error message')
equal(el.find('[data-name="richtext1"]').closest('.form-group').hasClass('has-error'), true, 'check richtext1 has-error') assert.equal(el.find('[data-name="richtext1"]').closest('.form-group').hasClass('has-error'), true, 'check richtext1 has-error')
equal(el.find('[data-name="richtext1"]').closest('.form-group').find('.help-inline').text(), 'is required', 'check richtext1 error message') assert.equal(el.find('[data-name="richtext1"]').closest('.form-group').find('.help-inline').text(), 'is required', 'check richtext1 error message')
equal(el.find('[data-name="datetime1"]').closest('.form-group').hasClass('has-error'), true, 'check datetime1 has-error') assert.equal(el.find('[data-name="datetime1"]').closest('.form-group').hasClass('has-error'), true, 'check datetime1 has-error')
equal(el.find('[data-name="datetime1"]').closest('.form-group').find('.help-inline').text(), 'is required', 'check datetime1 error message') assert.equal(el.find('[data-name="datetime1"]').closest('.form-group').find('.help-inline').text(), 'is required', 'check datetime1 error message')
equal(el.find('[data-name="date1"]').closest('.form-group').hasClass('has-error'), true, 'check date1 has-error') assert.equal(el.find('[data-name="date1"]').closest('.form-group').hasClass('has-error'), true, 'check date1 has-error')
equal(el.find('[data-name="date1"]').closest('.form-group').find('.help-inline').text(), 'is required', 'check date1 error message') assert.equal(el.find('[data-name="date1"]').closest('.form-group').find('.help-inline').text(), 'is required', 'check date1 error message')
}); });
test('datetime validation check', function() { QUnit.test('datetime validation check', assert => {
$('#forms').append('<hr><h1>datetime validation check</h1><form id="form2"></form>') $('#forms').append('<hr><h1>datetime validation check</h1><form id="form2"></form>')
@ -113,17 +113,17 @@ test('datetime validation check', function() {
test_params = { test_params = {
datetime1: null, datetime1: null,
} }
deepEqual(params, test_params, 'params check') assert.deepEqual(params, test_params, 'params check')
errors = form.validate(params) errors = form.validate(params)
test_errors = { test_errors = {
datetime1: 'is required', datetime1: 'is required',
} }
deepEqual(errors, test_errors, 'validation errors check') assert.deepEqual(errors, test_errors, 'validation errors check')
App.ControllerForm.validate({ errors: errors, form: el }) App.ControllerForm.validate({ errors: errors, form: el })
equal(el.find('[data-name="datetime1"]').closest('.form-group').hasClass('has-error'), true, 'check datetime1 has-error') assert.equal(el.find('[data-name="datetime1"]').closest('.form-group').hasClass('has-error'), true, 'check datetime1 has-error')
equal(el.find('[data-name="datetime1"]').closest('.form-group').find('.help-inline').text(), 'is required', 'check datetime1 error message') assert.equal(el.find('[data-name="datetime1"]').closest('.form-group').find('.help-inline').text(), 'is required', 'check datetime1 error message')
//equal(el.find('[data-name="datetime1"]').closest('.form-group').find('.help-inline').text(), '', 'check datetime1 error message') //equal(el.find('[data-name="datetime1"]').closest('.form-group').find('.help-inline').text(), '', 'check datetime1 error message')
// set new values // set new values
@ -139,38 +139,38 @@ test('datetime validation check', function() {
test_params = { test_params = {
datetime1: timeStamp.toISOString(), datetime1: timeStamp.toISOString(),
} }
deepEqual(params, test_params, 'params check') assert.deepEqual(params, test_params, 'params check')
// check errors // check errors
errors = form.validate(params) errors = form.validate(params)
test_errors = undefined test_errors = undefined
deepEqual(errors, test_errors, 'validation errors check') assert.deepEqual(errors, test_errors, 'validation errors check')
App.ControllerForm.validate({ errors: errors, form: el }) App.ControllerForm.validate({ errors: errors, form: el })
equal(el.find('[data-name="datetime1"]').closest('.form-group').hasClass('has-error'), false, 'check datetime1 has-error') assert.equal(el.find('[data-name="datetime1"]').closest('.form-group').hasClass('has-error'), false, 'check datetime1 has-error')
equal(el.find('[data-name="datetime1"]').closest('.form-group').find('.help-inline').text(), '', 'check datetime1 error message') assert.equal(el.find('[data-name="datetime1"]').closest('.form-group').find('.help-inline').text(), '', 'check datetime1 error message')
el.find('[data-name="datetime1"] [data-item="date"]').val('').trigger('blur') el.find('[data-name="datetime1"] [data-item="date"]').val('').trigger('blur')
el.find('[data-name="datetime1"] [data-item="date"]').datepicker('setDate') el.find('[data-name="datetime1"] [data-item="date"]').datepicker('setDate')
el.find('[data-name="datetime1"] [data-item="time"]').val('12:42').trigger('blur') el.find('[data-name="datetime1"] [data-item="time"]').val('12:42').trigger('blur')
el.find('[data-name="datetime1"] [data-item="time"]').trigger('change') el.find('[data-name="datetime1"] [data-item="time"]').trigger('change')
equal(el.find('[data-name="datetime1"]').closest('.form-group').hasClass('has-error'), true ) assert.equal(el.find('[data-name="datetime1"]').closest('.form-group').hasClass('has-error'), true )
params = App.ControllerForm.params(el) params = App.ControllerForm.params(el)
errors = form.validate(params) errors = form.validate(params)
test_errors = { test_errors = {
datetime1: 'is required', datetime1: 'is required',
} }
deepEqual(errors, test_errors, 'validation errors check') assert.deepEqual(errors, test_errors, 'validation errors check')
App.ControllerForm.validate({ errors: errors, form: el }) App.ControllerForm.validate({ errors: errors, form: el })
equal(el.find('[data-name="datetime1"]').closest('.form-group').hasClass('has-error'), true, 'check datetime1 no has-error') assert.equal(el.find('[data-name="datetime1"]').closest('.form-group').hasClass('has-error'), true, 'check datetime1 no has-error')
equal(el.find('[data-name="datetime1"]').closest('.form-group').find('.help-inline').text(), 'is required', 'check datetime1 error message') assert.equal(el.find('[data-name="datetime1"]').closest('.form-group').find('.help-inline').text(), 'is required', 'check datetime1 error message')
}); });
test('date validation check', function() { QUnit.test('date validation check', assert => {
$('#forms').append('<hr><h1>date validation check</h1><form id="form3"></form>') $('#forms').append('<hr><h1>date validation check</h1><form id="form3"></form>')
@ -193,17 +193,17 @@ test('date validation check', function() {
test_params = { test_params = {
date2: null, date2: null,
} }
deepEqual(params, test_params, 'params check') assert.deepEqual(params, test_params, 'params check')
errors = form.validate(params) errors = form.validate(params)
test_errors = { test_errors = {
date2: 'is required', date2: 'is required',
} }
deepEqual(errors, test_errors, 'validation errors check') assert.deepEqual(errors, test_errors, 'validation errors check')
App.ControllerForm.validate({ errors: errors, form: el }) App.ControllerForm.validate({ errors: errors, form: el })
equal(el.find('[data-name="date2"]').closest('.form-group').hasClass('has-error'), true, 'check date2 has-error') assert.equal(el.find('[data-name="date2"]').closest('.form-group').hasClass('has-error'), true, 'check date2 has-error')
equal(el.find('[data-name="date2"]').closest('.form-group').find('.help-inline').text(), 'is required', 'check date2 error message') assert.equal(el.find('[data-name="date2"]').closest('.form-group').find('.help-inline').text(), 'is required', 'check date2 error message')
// set new values // set new values
el.find('[data-name="date2"] [data-item="date"]').val('01/01/2015').trigger('blur') el.find('[data-name="date2"] [data-item="date"]').val('01/01/2015').trigger('blur')
@ -215,42 +215,42 @@ test('date validation check', function() {
test_params = { test_params = {
date2: '2015-01-01', date2: '2015-01-01',
} }
deepEqual(params, test_params, 'params check') assert.deepEqual(params, test_params, 'params check')
// check errors // check errors
errors = form.validate(params) errors = form.validate(params)
test_errors = undefined test_errors = undefined
deepEqual(errors, test_errors, 'validation errors check') assert.deepEqual(errors, test_errors, 'validation errors check')
App.ControllerForm.validate({ errors: errors, form: el }) App.ControllerForm.validate({ errors: errors, form: el })
equal(el.find('[data-name="date2"]').closest('.form-group').hasClass('has-error'), false, 'check date1 has-error') assert.equal(el.find('[data-name="date2"]').closest('.form-group').hasClass('has-error'), false, 'check date1 has-error')
equal(el.find('[data-name="date2"]').closest('.form-group').find('.help-inline').text(), '', 'check date1 error message') assert.equal(el.find('[data-name="date2"]').closest('.form-group').find('.help-inline').text(), '', 'check date1 error message')
// set invalid values // set invalid values
el.find('[data-name="date2"] [data-item="date"]').val('').trigger('blur') el.find('[data-name="date2"] [data-item="date"]').val('').trigger('blur')
el.find('[data-name="date2"] [data-item="date"]').datepicker('setDate') el.find('[data-name="date2"] [data-item="date"]').datepicker('setDate')
el.find('[data-name="date2"] [data-item="date"]').trigger('change') el.find('[data-name="date2"] [data-item="date"]').trigger('change')
equal(el.find('[data-name="date2"]').closest('.form-group').hasClass('has-error'), true, 'check date2 has-error') assert.equal(el.find('[data-name="date2"]').closest('.form-group').hasClass('has-error'), true, 'check date2 has-error')
// check params // check params
params = App.ControllerForm.params(el) params = App.ControllerForm.params(el)
test_params = { test_params = {
date2: null, date2: null,
} }
deepEqual(params, test_params, 'params check') assert.deepEqual(params, test_params, 'params check')
// check errors // check errors
errors = form.validate(params) errors = form.validate(params)
test_errors = { test_errors = {
date2: 'is required', date2: 'is required',
} }
deepEqual(errors, test_errors, 'validation errors check') assert.deepEqual(errors, test_errors, 'validation errors check')
App.ControllerForm.validate({ errors: errors, form: el }) App.ControllerForm.validate({ errors: errors, form: el })
equal(el.find('[data-name="date2"]').closest('.form-group').hasClass('has-error'), true, 'check date2 has-error') assert.equal(el.find('[data-name="date2"]').closest('.form-group').hasClass('has-error'), true, 'check date2 has-error')
equal(el.find('[data-name="date2"]').closest('.form-group').find('.help-inline').text(), 'is required', 'check date2 error message') assert.equal(el.find('[data-name="date2"]').closest('.form-group').find('.help-inline').text(), 'is required', 'check date2 error message')
}); });
test( "datetime selector check", function() { QUnit.test( "datetime selector check", assert => {
$('#forms').append('<hr><h1>datetime selector check</h1><form id="form4"></form>') $('#forms').append('<hr><h1>datetime selector check</h1><form id="form4"></form>')
@ -273,7 +273,7 @@ test( "datetime selector check", function() {
datetime1: null, datetime1: null,
datetime2: null, datetime2: null,
} }
deepEqual(params, test_params, 'params check') assert.deepEqual(params, test_params, 'params check')
var timeStamp1 = new Date() var timeStamp1 = new Date()
timeStamp1.setMinutes(0) timeStamp1.setMinutes(0)
@ -290,7 +290,7 @@ test( "datetime selector check", function() {
datetime1: timeStamp1.toISOString(), datetime1: timeStamp1.toISOString(),
datetime2: null, datetime2: null,
} }
deepEqual(params, test_params, 'params check') assert.deepEqual(params, test_params, 'params check')
el.find('[data-name="datetime1"] .js-timepicker[data-item="time"]').val('9:00') el.find('[data-name="datetime1"] .js-timepicker[data-item="time"]').val('9:00')
el.find('[data-name="datetime1"] .js-timepicker[data-item="time"]').trigger('blur') el.find('[data-name="datetime1"] .js-timepicker[data-item="time"]').trigger('blur')
@ -303,7 +303,7 @@ test( "datetime selector check", function() {
datetime1: timeStamp1.toISOString(), datetime1: timeStamp1.toISOString(),
datetime2: null, datetime2: null,
} }
deepEqual(params, test_params, 'params check') assert.deepEqual(params, test_params, 'params check')
var timeStamp2 = new Date() var timeStamp2 = new Date()
timeStamp2.setMinutes(0) timeStamp2.setMinutes(0)
@ -322,7 +322,7 @@ test( "datetime selector check", function() {
datetime1: timeStamp1.toISOString(), datetime1: timeStamp1.toISOString(),
datetime2: timeStamp2.toISOString(), datetime2: timeStamp2.toISOString(),
} }
deepEqual(params, test_params, 'params check') assert.deepEqual(params, test_params, 'params check')
// Regression test for issue #2173 - Invalid date causes errors // Regression test for issue #2173 - Invalid date causes errors
el.find('[data-name="datetime1"] .js-datepicker').datepicker('setDate', '01/01/99999') el.find('[data-name="datetime1"] .js-datepicker').datepicker('setDate', '01/01/99999')
@ -330,7 +330,7 @@ test( "datetime selector check", function() {
el.find('[data-name="datetime1"] .js-datepicker').datepicker('setDate', '01/01/1äöüß') el.find('[data-name="datetime1"] .js-datepicker').datepicker('setDate', '01/01/1äöüß')
}); });
test( "date selector check", function() { QUnit.test( "date selector check", assert => {
$('#forms').append('<hr><h1>date selector check</h1><form id="form5"></form>') $('#forms').append('<hr><h1>date selector check</h1><form id="form5"></form>')
@ -351,7 +351,7 @@ test( "date selector check", function() {
test_params = { test_params = {
date3: null, date3: null,
} }
deepEqual(params, test_params, 'params check') assert.deepEqual(params, test_params, 'params check')
timeStamp = new Date() timeStamp = new Date()
@ -371,6 +371,6 @@ test( "date selector check", function() {
test_params = { test_params = {
date3: currentTime, date3: currentTime,
} }
deepEqual(params, test_params, 'params check') assert.deepEqual(params, test_params, 'params check')
}); });

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,230 @@
QUnit.test('i18n .detectBrowserLocale', assert => {
var original_userLanguage = window.navigator.userLanguage
var original_language = window.navigator.language
var original_languages = window.navigator.languages
var reset = function(){
window.navigator.userLanguage = original_userLanguage
window.navigator.language = original_language
window.navigator.languages = original_languages
}
var mock = function(languages, language, userLanguage){
Object.defineProperty(window.navigator, 'language', {value: language, configurable: true });
Object.defineProperty(window.navigator, 'languages', {value: languages, configurable: true });
Object.defineProperty(window.navigator, 'userLanguage', {value: userLanguage, configurable: true });
}
mock(undefined, undefined, undefined)
assert.equal(App.i18n.detectBrowserLocale(), 'en-us')
mock(undefined, undefined, 'non-existant');
assert.equal(App.i18n.detectBrowserLocale(), 'en-us')
mock(undefined, undefined, 'en');
assert.equal(App.i18n.detectBrowserLocale(), 'en-us')
mock(undefined, undefined, 'lt');
assert.equal(App.i18n.detectBrowserLocale(), 'lt')
mock(undefined, 'lt', 'lv');
assert.equal(App.i18n.detectBrowserLocale(), 'lt')
mock(undefined, 'en', 'lv');
assert.equal(App.i18n.detectBrowserLocale(), 'en-us')
mock(['en'], 'lt', 'lv');
assert.equal(App.i18n.detectBrowserLocale(), 'en-us')
mock(['en-us'], 'lt', 'lv');
assert.equal(App.i18n.detectBrowserLocale(), 'en-us')
mock(['en-US'], 'lt', 'lv');
assert.equal(App.i18n.detectBrowserLocale(), 'en-us')
mock(['lt', 'en-US'], 'lt', 'lv');
assert.equal(App.i18n.detectBrowserLocale(), 'lt')
mock(['en-GB', 'en-US'], 'lt', 'lv');
assert.equal(App.i18n.detectBrowserLocale(), 'en-gb')
mock(['en-XYZ'], 'lt', 'lv');
assert.equal(App.i18n.detectBrowserLocale(), 'en-us')
mock(['xyz', 'lt'], 'lv', undefined);
assert.equal(App.i18n.detectBrowserLocale(), 'lt')
reset()
})
// i18n
QUnit.test('i18n', assert => {
// de
App.i18n.set('de-de')
var translated = App.i18n.translateContent('yes')
assert.equal(translated, 'ja', 'de-de - yes / ja translated correctly')
translated = App.i18n.translatePlain('yes')
assert.equal(translated, 'ja', 'de-de - yes / ja translated correctly')
translated = App.i18n.translateInline('yes')
assert.equal(translated, 'ja', 'de-de - yes / ja translated correctly')
translated = App.i18n.translateContent('%s ago', 123);
assert.equal(translated, 'vor 123', 'de-de - %s')
translated = App.i18n.translateContent('%s ago', '<b>quote</b>')
assert.equal(translated, 'vor &lt;b&gt;quote&lt;/b&gt;', 'de-de - %s - quote')
translated = App.i18n.translateContent('%s %s test', 123, 'xxx |B|')
assert.equal(translated, '123 xxx |B| test', 'de-de - %s %s')
translated = App.i18n.translateContent('|%s| %s test', 123, 'xxx')
assert.equal(translated, '<b>123</b> xxx test', 'de-de - *%s* %s')
translated = App.i18n.translateContent('||%s|| %s test', 123, 'xxx')
assert.equal(translated, '<i>123</i> xxx test', 'de-de - *%s* %s')
translated = App.i18n.translateContent('_%s_ %s test', 123, 'xxx')
assert.equal(translated, '<u>123</u> xxx test', 'de-de - _%s_ %s')
translated = App.i18n.translateContent('§%s§ %s test', 123, 'xxx')
assert.equal(translated, '<kbd>123</kbd> xxx test', 'de-de - §%s§ %s')
translated = App.i18n.translateContent('//%s// %s test', 123, 'xxx')
assert.equal(translated, '<del>123</del> xxx test', 'de-de - //%s// %s')
translated = App.i18n.translateContent('\'%s\' %s test', 123, 'xxx')
assert.equal(translated, '&#39;123&#39; xxx test', 'de-de - \'%s\' %s')
translated = App.i18n.translateContent('<test&now>//*äöüß')
assert.equal(translated, '&lt;test&amp;now&gt;//*äöüß', 'de - <test&now>//*äöüß')
translated = App.i18n.translateContent('some link [to what ever](http://lalala)')
assert.equal(translated, 'some link <a href="http://lalala" target="_blank">to what ever</a>', 'de-de - link')
translated = App.i18n.translateContent('some link [to what ever](%s)', 'http://lalala')
assert.equal(translated, 'some link <a href="http://lalala" target="_blank">to what ever</a>', 'de-de - link')
translated = App.i18n.translateContent('Enables user authentication via %s. Register your app first at [%s](%s).', 'XXX', 'YYY', 'http://lalala')
assert.equal(translated, 'Aktivieren der Benutzeranmeldung über XXX. Registriere Deine Anwendung zuerst über <a href="http://lalala" target="_blank">YYY</a>.', 'en-us - link')
var time_local = new Date();
var offset = time_local.getTimezoneOffset();
var timestamp = App.i18n.translateTimestamp('2012-11-06T21:07:24Z', offset);
assert.equal(timestamp, '06.11.2012 21:07', 'de-de - timestamp translated correctly')
var timestamp = App.i18n.translateTimestamp('2021-02-08 09:13:20 UTC', offset);
assert.equal(timestamp, '08.02.2021 09:13', 'de-de - timestamp translated correctly with UTC format')
timestamp = App.i18n.translateTimestamp('', offset);
assert.equal(timestamp, '', 'de-de - timestamp translated correctly')
timestamp = App.i18n.translateTimestamp(null, offset);
assert.equal(timestamp, null, 'de-de - timestamp translated correctly')
timestamp = App.i18n.translateTimestamp(undefined, offset);
assert.equal(timestamp, undefined, 'de-de - timestamp translated correctly')
var date = App.i18n.translateDate('2012-11-06', 0)
assert.equal(date, '06.11.2012', 'de-de - date translated correctly')
date = App.i18n.translateDate('', 0)
assert.equal(date, '', 'de-de - date translated correctly')
date = App.i18n.translateDate(null, 0)
assert.equal(date, null, 'de-de - date translated correctly')
date = App.i18n.translateDate(undefined, 0)
assert.equal(date, undefined, 'de-de - date translated correctly')
// en
App.i18n.set('en-us')
translated = App.i18n.translateContent('yes')
assert.equal(translated, 'yes', 'en-us - yes translated correctly')
translated = App.i18n.translatePlain('yes')
assert.equal(translated, 'yes', 'en-us - yes translated correctly')
translated = App.i18n.translateInline('yes')
assert.equal(translated, 'yes', 'en-us - yes translated correctly')
translated = App.i18n.translateContent('%s ago', 123);
assert.equal(translated, '123 ago', 'en-us - %s')
translated = App.i18n.translateContent('%s ago', '<b>quote</b>')
assert.equal(translated, '&lt;b&gt;quote&lt;/b&gt; ago', 'en-us - %s - qupte')
translated = App.i18n.translateContent('%s %s test', 123, 'xxx')
assert.equal(translated, '123 xxx test', 'en-us - %s %s')
translated = App.i18n.translateContent('|%s| %s test', 123, 'xxx |B|')
assert.equal(translated, '<b>123</b> xxx |B| test', 'en-us - *%s* %s')
translated = App.i18n.translateContent('||%s|| %s test', 123, 'xxx')
assert.equal(translated, '<i>123</i> xxx test', 'en-us - *%s* %s')
translated = App.i18n.translateContent('_%s_ %s test', 123, 'xxx')
assert.equal(translated, '<u>123</u> xxx test', 'en-us - _%s_ %s')
translated = App.i18n.translateContent('§%s§ %s test', 123, 'xxx')
assert.equal(translated, '<kbd>123</kbd> 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"§.')
assert.equal(translated, 'Here you can search for tickets, customers and organizations. Use the wildcard <kbd>*</kbd> to find everything. E. g. <kbd>smi*</kbd> or <kbd>rosent*l</kbd>. You also can use <i>double quotes</i> for searching phrases <kbd>&quot;some phrase&quot;</kbd>.', 'en-us - §§ §§ §§ || §§')
translated = App.i18n.translateContent('//%s// %s test', 123, 'xxx')
assert.equal(translated, '<del>123</del> xxx test', 'en-us - //%s// %s')
translated = App.i18n.translateContent('\'%s\' %s test', 123, 'xxx')
assert.equal(translated, '&#39;123&#39; xxx test', 'en-us - \'%s\' %s')
translated = App.i18n.translateContent('<test&now>')
assert.equal(translated, '&lt;test&amp;now&gt;', 'en-us - <test&now>')
translated = App.i18n.translateContent('some link [to what ever](http://lalala)')
assert.equal(translated, 'some link <a href="http://lalala" target="_blank">to what ever</a>', 'en-us - link')
translated = App.i18n.translateContent('some link [to what ever](%s)', 'http://lalala')
assert.equal(translated, 'some link <a href="http://lalala" target="_blank">to what ever</a>', 'en-us - link')
translated = App.i18n.translateContent('Enables user authentication via %s. Register your app first at [%s](%s).', 'XXX', 'YYY', 'http://lalala')
assert.equal(translated, 'Enables user authentication via XXX. Register your app first at <a href="http://lalala" target="_blank">YYY</a>.', 'en-us - link')
timestamp = App.i18n.translateTimestamp('2012-11-06T21:07:24Z', offset)
assert.equal(timestamp, '11/06/2012 21:07', 'en - timestamp translated correctly')
timestamp = App.i18n.translateTimestamp('', offset);
assert.equal(timestamp, '', 'en - timestamp translated correctly')
timestamp = App.i18n.translateTimestamp(null, offset);
assert.equal(timestamp, null, 'en - timestamp translated correctly')
timestamp = App.i18n.translateTimestamp(undefined, offset);
assert.equal(timestamp, undefined, 'en - timestamp translated correctly')
date = App.i18n.translateDate('2012-11-06', 0)
assert.equal(date, '11/06/2012', 'en - date translated correctly')
date = App.i18n.translateDate('', 0)
assert.equal(date, '', 'en - date translated correctly')
date = App.i18n.translateDate(null, 0)
assert.equal(date, null, 'en - date translated correctly')
date = App.i18n.translateDate(undefined, 0)
assert.equal(date, undefined, 'en - date translated correctly')
// locale alias test
// de
App.i18n.set('de')
var translated = App.i18n.translateContent('yes')
assert.equal(translated, 'ja', 'de - yes / ja translated correctly')
// locale detection test
// de-ch
App.i18n.set('de-ch')
var translated = App.i18n.translateContent('yes')
assert.equal(translated, 'ja', 'de - yes / ja translated correctly')
});

View file

@ -1,11 +1,11 @@
// image service // image service
test('test image resizing with defined height', function(assert) { QUnit.test('test image resizing with defined height', assert => {
var async_done = assert.async(1) var done = assert.async()
App.ImageService.resize(image_40x30, 'auto', 15, 1, 'image/png', 0.7, function(image, width, height) { App.ImageService.resize(image_40x30, 'auto', 15, 1, 'image/png', 0.7, function(image, width, height) {
equal(width, 20) assert.equal(width, 20)
async_done() done()
}) })
}); });

View file

@ -1,38 +1,38 @@
test('kb video url parsing and converting to embeding url', function() { QUnit.test('kb video url parsing and converting to embeding url', assert => {
var klass = App.UiElement.richtext.additions.RichTextToolPopupVideo; var klass = App.UiElement.richtext.additions.RichTextToolPopupVideo;
var parsed = klass.detectProviderAndId('https://www.youtube.com/watch?v=vTTzwJsHpU8') var parsed = klass.detectProviderAndId('https://www.youtube.com/watch?v=vTTzwJsHpU8')
equal(parsed[0], 'youtube') assert.equal(parsed[0], 'youtube')
equal(parsed[1], 'vTTzwJsHpU8') assert.equal(parsed[1], 'vTTzwJsHpU8')
var parsed = klass.detectProviderAndId('https://www.youtube.com/watch?v=vTTzwJsHpU8&other=true') var parsed = klass.detectProviderAndId('https://www.youtube.com/watch?v=vTTzwJsHpU8&other=true')
equal(parsed[0], 'youtube') assert.equal(parsed[0], 'youtube')
equal(parsed[1], 'vTTzwJsHpU8') assert.equal(parsed[1], 'vTTzwJsHpU8')
var parsed = klass.detectProviderAndId('https://www.youtube.com/watch?v=vTTzwJsHpU8#hashtag') var parsed = klass.detectProviderAndId('https://www.youtube.com/watch?v=vTTzwJsHpU8#hashtag')
equal(parsed[0], 'youtube') assert.equal(parsed[0], 'youtube')
equal(parsed[1], 'vTTzwJsHpU8') assert.equal(parsed[1], 'vTTzwJsHpU8')
var parsed = klass.detectProviderAndId('https://www.youtube.com/watch?v=_EYF1-2uiIg') var parsed = klass.detectProviderAndId('https://www.youtube.com/watch?v=_EYF1-2uiIg')
equal(parsed[0], 'youtube') assert.equal(parsed[0], 'youtube')
equal(parsed[1], '_EYF1-2uiIg') assert.equal(parsed[1], '_EYF1-2uiIg')
var parsed = klass.detectProviderAndId('https://www.youtu.be/vTTzwJsHpU8') var parsed = klass.detectProviderAndId('https://www.youtu.be/vTTzwJsHpU8')
equal(parsed[0], 'youtube') assert.equal(parsed[0], 'youtube')
equal(parsed[1], 'vTTzwJsHpU8') assert.equal(parsed[1], 'vTTzwJsHpU8')
var parsed = klass.detectProviderAndId('https://www.youtube.com/embed/vTTzwJsHpU8') var parsed = klass.detectProviderAndId('https://www.youtube.com/embed/vTTzwJsHpU8')
equal(parsed[0], 'youtube') assert.equal(parsed[0], 'youtube')
equal(parsed[1], 'vTTzwJsHpU8') assert.equal(parsed[1], 'vTTzwJsHpU8')
var parsed = klass.detectProviderAndId('https://www.vimeo.com/358296442') var parsed = klass.detectProviderAndId('https://www.vimeo.com/358296442')
equal(parsed[0], 'vimeo') assert.equal(parsed[0], 'vimeo')
equal(parsed[1], '358296442') assert.equal(parsed[1], '358296442')
}) })

View file

@ -0,0 +1,65 @@
window.onload = function() {
QUnit.test('Test item removal from local storage', assert => {
var key = 'test_key_1'
var value = 'test_value_1'
App.LocalStorage.set(key, value)
assert.equal(App.LocalStorage.get(key), value)
App.LocalStorage.delete(key)
assert.equal(App.LocalStorage.get(key), undefined)
});
QUnit.test('Test user-specific item removal from local storage', assert => {
var key = 'test_key_2'
var value = 'test_value_2'
var user_id = 2
App.LocalStorage.set(key, value, user_id)
assert.equal(App.LocalStorage.get(key, user_id), value)
App.LocalStorage.delete(key, user_id)
assert.equal(App.LocalStorage.get(key, user_id), undefined)
});
QUnit.test('Test key lookup', assert => {
App.LocalStorage.clear()
var key = 'test_key_3'
var value = 'test_value_3'
var user_id = 2
var alt_key = 'test_alt_key_3'
// verify no keys initially
assert.equal(App.LocalStorage.keys().length, 0)
App.LocalStorage.set(key, value, user_id)
// has 1 key in total
assert.equal(App.LocalStorage.keys().length, 1)
// doesn't return anything with wrong prefix
assert.equal(App.LocalStorage.keys('a').length, 0)
// doesn't return anything since user id not given
assert.equal(App.LocalStorage.keys('test').length, 0)
// correct
assert.equal(App.LocalStorage.keys('test', user_id).length, 1)
// verify value
assert.equal(App.LocalStorage.keys('test', user_id)[0].match(key + '$'), key)
App.LocalStorage.set(alt_key, value)
// returns 1 key without user id
assert.equal(App.LocalStorage.keys('test').length, 1)
assert.equal(App.LocalStorage.keys('test')[0], alt_key)
});
}

View file

@ -1,7 +1,7 @@
window.onload = function() { window.onload = function() {
// search // search
test( "model search tests", function() { QUnit.test( "model search tests", assert => {
App.TicketPriority.refresh( [ App.TicketPriority.refresh( [
{ {
@ -34,32 +34,32 @@ test( "model search tests", function() {
}, },
] ) ] )
priorities = App.TicketPriority.search({sortBy:'created_at', order: 'ASC'}) priorities = App.TicketPriority.search({sortBy:'created_at', order: 'ASC'})
equal('2 normal', priorities[0].name, 'check 1 entry') assert.equal('2 normal', priorities[0].name, 'check 1 entry')
equal('3 high', priorities[1].name, 'check 2 entry') assert.equal('3 high', priorities[1].name, 'check 2 entry')
equal('4 very high', priorities[2].name, 'check 3 entry') assert.equal('4 very high', priorities[2].name, 'check 3 entry')
equal('1 low', priorities[3].name, 'check 4 entry') assert.equal('1 low', priorities[3].name, 'check 4 entry')
equal(undefined, priorities[4], 'check 5 entry') assert.equal(undefined, priorities[4], 'check 5 entry')
priorities = App.TicketPriority.search({sortBy:'created_at', order: 'DESC'}) priorities = App.TicketPriority.search({sortBy:'created_at', order: 'DESC'})
equal('1 low', priorities[0].name, 'check 4 entry') assert.equal('1 low', priorities[0].name, 'check 4 entry')
equal('4 very high', priorities[1].name, 'check 3 entry') assert.equal('4 very high', priorities[1].name, 'check 3 entry')
equal('3 high', priorities[2].name, 'check 2 entry') assert.equal('3 high', priorities[2].name, 'check 2 entry')
equal('2 normal', priorities[3].name, 'check 1 entry') assert.equal('2 normal', priorities[3].name, 'check 1 entry')
equal(undefined, priorities[4], 'check 5 entry') assert.equal(undefined, priorities[4], 'check 5 entry')
}); });
// model // model
test( "model loadAssets tests - 1", function() { QUnit.test( "model loadAssets tests - 1", assert => {
window.refreshCounter1 = 0 window.refreshCounter1 = 0
var callback1 = function(state, triggerType) { var callback1 = function(state, triggerType) {
window.refreshCounter1 = window.refreshCounter1 + 1 window.refreshCounter1 = window.refreshCounter1 + 1
equal(state.id, 9999, 'id check') assert.equal(state.id, 9999, 'id check')
if (window.refreshCounter1 == 1) { if (window.refreshCounter1 == 1) {
equal('full', triggerType, 'trigger type check') assert.equal('full', triggerType, 'trigger type check')
} }
else { else {
equal('refresh', triggerType, 'trigger type check') assert.equal('refresh', triggerType, 'trigger type check')
} }
if ( window.refreshCounter1 == 1 ) { if ( window.refreshCounter1 == 1 ) {
@ -96,23 +96,23 @@ test( "model loadAssets tests - 1", function() {
}); });
App.Delay.set( function() { App.Delay.set( function() {
test( "model loadAssets tests - 1 / check refresh counter", function() { QUnit.test( "model loadAssets tests - 1 / check refresh counter", assert => {
equal(window.refreshCounter1, 2, 'check refresh counter') assert.equal(window.refreshCounter1, 2, 'check refresh counter')
}); });
}, },
1000 1000
); );
test( "model loadAssets tests - 2", function() { QUnit.test( "model loadAssets tests - 2", assert => {
window.refreshCounter2 = 0 window.refreshCounter2 = 0
var callback2 = function(state, triggerType) { var callback2 = function(state, triggerType) {
window.refreshCounter2 = window.refreshCounter2 + 1 window.refreshCounter2 = window.refreshCounter2 + 1
equal(state.id, 10000, 'id check') assert.equal(state.id, 10000, 'id check')
if (window.refreshCounter2 == 1) { if (window.refreshCounter2 == 1) {
equal('full', triggerType, 'trigger type check') assert.equal('full', triggerType, 'trigger type check')
} }
else { else {
equal('refresh', triggerType, 'trigger type check') assert.equal('refresh', triggerType, 'trigger type check')
} }
if ( window.refreshCounter2 == 1 ) { if ( window.refreshCounter2 == 1 ) {
App.Collection.loadAssets({ App.Collection.loadAssets({
@ -147,23 +147,23 @@ test( "model loadAssets tests - 2", function() {
}); });
App.Delay.set( function() { App.Delay.set( function() {
test( "model loadAssets tests - 2 / check refresh counter", function() { QUnit.test( "model loadAssets tests - 2 / check refresh counter", assert => {
equal(window.refreshCounter2, 2, 'check refresh counter') assert.equal(window.refreshCounter2, 2, 'check refresh counter')
}); });
}, },
1200 1200
); );
test( "model loadAssets tests - 3", function() { QUnit.test( "model loadAssets tests - 3", assert => {
window.refreshCounter3 = 0 window.refreshCounter3 = 0
var callback3 = function(state, triggerType) { var callback3 = function(state, triggerType) {
window.refreshCounter3 = window.refreshCounter3 + 1 window.refreshCounter3 = window.refreshCounter3 + 1
equal(state.id, 10001, 'id check') assert.equal(state.id, 10001, 'id check')
if (window.refreshCounter3 == 1) { if (window.refreshCounter3 == 1) {
equal('full', triggerType, 'trigger type check') assert.equal('full', triggerType, 'trigger type check')
} }
else { else {
equal('refresh', triggerType, 'trigger type check') assert.equal('refresh', triggerType, 'trigger type check')
} }
if ( window.refreshCounter3 == 1 ) { if ( window.refreshCounter3 == 1 ) {
@ -199,14 +199,14 @@ test( "model loadAssets tests - 3", function() {
}); });
App.Delay.set( function() { App.Delay.set( function() {
test( "model loadAssets tests - 3 / check refresh counter", function() { QUnit.test( "model loadAssets tests - 3 / check refresh counter", assert => {
equal(window.refreshCounter3, 3, 'check refresh counter') assert.equal(window.refreshCounter3, 3, 'check refresh counter')
}); });
}, },
1400 1400
); );
test("updateAttributes will change existing attributes and add new ones", function() { QUnit.test("updateAttributes will change existing attributes and add new ones", assert => {
App.Ticket.resetAttributes(); App.Ticket.resetAttributes();
var attributesBefore = _.clone(App.Ticket.configure_attributes); var attributesBefore = _.clone(App.Ticket.configure_attributes);
@ -226,15 +226,15 @@ test("updateAttributes will change existing attributes and add new ones", functi
var attributesAfterUpdate = _.clone(App.Ticket.configure_attributes); var attributesAfterUpdate = _.clone(App.Ticket.configure_attributes);
equal(attributesAfterUpdate.length, attributesBefore.length + 1, 'new attributes list contains 1 more elements') assert.equal(attributesAfterUpdate.length, attributesBefore.length + 1, 'new attributes list contains 1 more elements')
equal(attributesAfterUpdate[attributesAfterUpdate.length - 1]['name'], 'new_attribute_1010101', 'new attributes list contains the new element') assert.equal(attributesAfterUpdate[attributesAfterUpdate.length - 1]['name'], 'new_attribute_1010101', 'new attributes list contains the new element')
equal(attributesAfterUpdate[0]['new_option_1239393'], 1, 'first element of the new attributes got updated with the new option') assert.equal(attributesAfterUpdate[0]['new_option_1239393'], 1, 'first element of the new attributes got updated with the new option')
App.Ticket.resetAttributes(); App.Ticket.resetAttributes();
var attributesAfterReset = _.clone(App.Ticket.configure_attributes); var attributesAfterReset = _.clone(App.Ticket.configure_attributes);
equal(attributesAfterReset.length, attributesBefore.length, 'new attributes list has the same elements after reset') assert.equal(attributesAfterReset.length, attributesBefore.length, 'new attributes list has the same elements after reset')
equal(attributesAfterReset[0]['new_option_1239393'], undefined, 'first element of the new attributes has no attribute new_option_1239393') assert.equal(attributesAfterReset[0]['new_option_1239393'], undefined, 'first element of the new attributes has no attribute new_option_1239393')
}); });
} }

View file

@ -1,51 +1,51 @@
window.onload = function() { window.onload = function() {
test("model bindings and rebinding", function() { QUnit.test("model bindings and rebinding", assert => {
var callback_count1 = 0 var callback_count1 = 0
var callbacks = App.Template._callbacks var callbacks = App.Template._callbacks
Object.keys(callbacks).forEach(function(key) { Object.keys(callbacks).forEach(function(key) {
callback_count1 = callback_count1 + callbacks[key].length callback_count1 = callback_count1 + callbacks[key].length
}); });
equal(callback_count1, 2) assert.equal(callback_count1, 2)
equal(App.Template.SUBSCRIPTION_COLLECTION, undefined) assert.equal(App.Template.SUBSCRIPTION_COLLECTION, undefined)
App.Template.clearInMemory() App.Template.clearInMemory()
equal(App.Template.SUBSCRIPTION_COLLECTION, undefined) assert.equal(App.Template.SUBSCRIPTION_COLLECTION, undefined)
var callback_count2 = 0 var callback_count2 = 0
callbacks = App.Template._callbacks callbacks = App.Template._callbacks
Object.keys(callbacks).forEach(function(key) { Object.keys(callbacks).forEach(function(key) {
callback_count2 = callback_count2 + callbacks[key].length callback_count2 = callback_count2 + callbacks[key].length
}); });
equal(callback_count2, callback_count1) assert.equal(callback_count2, callback_count1)
var render = function() {} var render = function() {}
var subscribe_id = App.Template.subscribe(render, {initFetch: true}) var subscribe_id = App.Template.subscribe(render, {initFetch: true})
ok(_.isObject(App.Template.SUBSCRIPTION_COLLECTION)) assert.ok(_.isObject(App.Template.SUBSCRIPTION_COLLECTION))
ok(!_.isEmpty(App.Template.SUBSCRIPTION_COLLECTION)) assert.ok(!_.isEmpty(App.Template.SUBSCRIPTION_COLLECTION))
var callback_count3 = 0 var callback_count3 = 0
callbacks = App.Template._callbacks callbacks = App.Template._callbacks
Object.keys(callbacks).forEach(function(key) { Object.keys(callbacks).forEach(function(key) {
callback_count3 = callback_count3 + callbacks[key].length callback_count3 = callback_count3 + callbacks[key].length
}); });
equal(callback_count3, 6) assert.equal(callback_count3, 6)
App.Template.clearInMemory() App.Template.clearInMemory()
ok(_.isObject(App.Template.SUBSCRIPTION_COLLECTION)) assert.ok(_.isObject(App.Template.SUBSCRIPTION_COLLECTION))
ok(_.isEmpty(App.Template.SUBSCRIPTION_COLLECTION)) assert.ok(_.isEmpty(App.Template.SUBSCRIPTION_COLLECTION))
var callback_count4 = 0 var callback_count4 = 0
callbacks = App.Template._callbacks callbacks = App.Template._callbacks
Object.keys(callbacks).forEach(function(key) { Object.keys(callbacks).forEach(function(key) {
callback_count4 = callback_count4 + callbacks[key].length callback_count4 = callback_count4 + callbacks[key].length
}); });
equal(callback_count4, callback_count3) assert.equal(callback_count4, callback_count3)
}); });

View file

@ -107,40 +107,40 @@ window.onload = function() {
}, },
]) ])
test('ticket.editabe customer user #1', function() { QUnit.test('ticket.editabe customer user #1', assert => {
App.Session.set(33) App.Session.set(33)
ticket1 = App.Ticket.find(1); ticket1 = App.Ticket.find(1);
ok(ticket1.editable(), 'access via customer_id'); assert.ok(ticket1.editable(), 'access via customer_id');
ticket2 = App.Ticket.find(2); ticket2 = App.Ticket.find(2);
ok(ticket2.editable(), 'access via organization_id'); assert.ok(ticket2.editable(), 'access via organization_id');
ticket3 = App.Ticket.find(3); ticket3 = App.Ticket.find(3);
ok(!ticket3.editable(), 'no access'); assert.ok(!ticket3.editable(), 'no access');
ticket4 = App.Ticket.find(4); ticket4 = App.Ticket.find(4);
ok(!ticket4.editable(), 'no access'); assert.ok(!ticket4.editable(), 'no access');
}); });
test('ticket.editabe customer user #2', function() { QUnit.test('ticket.editabe customer user #2', assert => {
App.Session.set(44) App.Session.set(44)
ticket1 = App.Ticket.find(1); ticket1 = App.Ticket.find(1);
ok(!ticket1.editable(), 'no access'); assert.ok(!ticket1.editable(), 'no access');
ticket2 = App.Ticket.find(2); ticket2 = App.Ticket.find(2);
ok(ticket2.editable(), 'access via customer_id'); assert.ok(ticket2.editable(), 'access via customer_id');
ticket3 = App.Ticket.find(3); ticket3 = App.Ticket.find(3);
ok(!ticket3.editable(), 'no access'); assert.ok(!ticket3.editable(), 'no access');
ticket4 = App.Ticket.find(4); ticket4 = App.Ticket.find(4);
ok(!ticket4.editable(), 'no access'); assert.ok(!ticket4.editable(), 'no access');
}); });
test('ticket.editabe customer user #3', function() { QUnit.test('ticket.editabe customer user #3', assert => {
App.Session.set(55) App.Session.set(55)
ticket1 = App.Ticket.find(1); ticket1 = App.Ticket.find(1);
ok(!ticket1.editable(), 'no access'); assert.ok(!ticket1.editable(), 'no access');
ticket2 = App.Ticket.find(2); ticket2 = App.Ticket.find(2);
ok(!ticket2.editable(), 'no access'); assert.ok(!ticket2.editable(), 'no access');
ticket3 = App.Ticket.find(3); ticket3 = App.Ticket.find(3);
ok(ticket3.editable(), 'access via customer_id'); assert.ok(ticket3.editable(), 'access via customer_id');
ticket4 = App.Ticket.find(4); ticket4 = App.Ticket.find(4);
ok(!ticket4.editable(), 'no access'); assert.ok(!ticket4.editable(), 'no access');
}); });
} }

View file

@ -0,0 +1,110 @@
window.onload = function() {
// model
QUnit.test( "model ui basic tests", assert => {
// load ref object
App.Collection.loadAssets({
TicketState: {
1: {
name: 'new', id: 1, updated_at: "2014-11-07T23:43:08.000Z",
},
2: {
name: 'open', id: 2, updated_at: "2014-11-07T23:43:08.000Z",
},
3: {
name: 'closed <>&', id: 3, updated_at: "2014-11-07T23:43:08.000Z",
},
},
})
// create ticket
var attribute1 = {
name: 'date', display: 'date 1', tag: 'date', null: true
};
App.Ticket.configure_attributes.push( attribute1 )
var attribute2 = {
name: 'textarea', display: 'textarea 1', tag: 'textarea', null: true
};
App.Ticket.configure_attributes.push( attribute2 )
var attribute3 = {
name: 'link1', display: 'link 1', linktemplate: 'http://zammad.com', tag: 'input', null: true, translate: true
};
App.Ticket.configure_attributes.push( attribute3 )
var attribute4 = {
name: 'link2', display: 'link 1', linktemplate: 'http://zammad.com', tag: 'input', null: true
};
App.Ticket.configure_attributes.push( attribute4 )
var ticket = new App.Ticket()
ticket.load({
id: 1000,
title: 'some title <>&',
state_id: 2,
updated_at: '2014-11-07T23:43:08.000Z',
date: '2015-02-07',
textarea: "some new\nline",
link1: 'closed',
link2: 'closed',
})
App.i18n.set('en-us')
assert.equal( App.viewPrint( ticket, 'id' ), 1000)
assert.equal( App.viewPrint( ticket, 'title' ), 'some title &lt;&gt;&amp;')
assert.equal( App.viewPrint( ticket, 'state' ), 'open')
assert.equal( App.viewPrint( ticket, 'state_id' ), 'open')
assert.equal( App.viewPrint( ticket, 'not_existing' ), '-')
assert.equal( App.viewPrint( ticket, 'updated_at' ), '<time class="humanTimeFromNow " datetime="2014-11-07T23:43:08.000Z" title="11/07/2014 23:43">11/07/2014</time>')
assert.equal( App.viewPrint( ticket, 'date' ), '02/07/2015')
assert.equal( App.viewPrint( ticket, 'textarea' ), '<div>some new</div><div>line</div>')
assert.equal( App.viewPrint( ticket, 'link1' ), '<a href="http://zammad.com" target="blank">closed</a>')
assert.equal( App.viewPrint( ticket, 'link2' ), '<a href="http://zammad.com" target="blank">closed</a>')
let stub = sinon.stub(App.Config, 'get')
stub.withArgs('timezone_default').returns('Example/Timezone')
let attr = App.Ticket.configure_attributes.find(e => { return e.name == 'updated_at' })
attr.include_timezone = true
assert.equal( App.viewPrint( ticket, 'updated_at' ), '<time class="humanTimeFromNow " datetime="2014-11-07T23:43:08.000Z" title="11/07/2014 23:43 Example/Timezone" timezone="Example/Timezone">11/07/2014</time>')
attr.include_timezone = false
stub.restore()
App.i18n.set('de-de')
assert.equal( App.viewPrint( ticket, 'id' ), 1000)
assert.equal( App.viewPrint( ticket, 'title' ), 'some title &lt;&gt;&amp;')
assert.equal( App.viewPrint( ticket, 'state' ), 'offen')
assert.equal( App.viewPrint( ticket, 'state_id' ), 'offen')
assert.equal( App.viewPrint( ticket, 'not_existing' ), '-')
assert.equal( App.viewPrint( ticket, 'updated_at' ), '<time class="humanTimeFromNow " datetime="2014-11-07T23:43:08.000Z" title="07.11.2014 23:43">07.11.2014</time>')
assert.equal( App.viewPrint( ticket, 'date' ), '07.02.2015')
assert.equal( App.viewPrint( ticket, 'textarea' ), '<div>some new</div><div>line</div>')
assert.equal( App.viewPrint( ticket, 'link1' ), '<a href="http://zammad.com" target="blank">geschlossen</a>')
assert.equal( App.viewPrint( ticket, 'link2' ), '<a href="http://zammad.com" target="blank">closed</a>')
App.i18n.set('en-us')
ticket.state_id = 3
assert.equal( App.viewPrint( ticket, 'state' ), 'closed &lt;&gt;&amp;')
assert.equal( App.viewPrint( ticket, 'state_id' ), 'closed &lt;&gt;&amp;')
App.i18n.set('de')
assert.equal( App.viewPrint( ticket, 'state' ), 'closed &lt;&gt;&amp;')
assert.equal( App.viewPrint( ticket, 'state_id' ), 'closed &lt;&gt;&amp;')
// normal string
data = {
a: 1,
b: 'abc',
c: {
displayName: function() { return "my displayName <>&" }
},
}
assert.equal( App.viewPrint( data, 'a' ), 1)
assert.equal( App.viewPrint( data, 'b' ), 'abc')
assert.equal( App.viewPrint( data, 'c' ), 'my displayName &lt;&gt;&amp;')
});
}

View file

@ -0,0 +1,82 @@
window.onload = function() {
QUnit.test('test current user behaviour by updating session user via assets', assert => {
// Wenn App.User updated through asset and set as session user
// expect App.Session.get with new values
App.User.refresh([{
"login": "hh@example.com",
"firstname": "Harald",
"lastname": "Habebe",
"email": "hh@example.com",
"role_ids": [ 1, 2, 4 ],
"group_ids": [ 1 ],
"active": true,
"updated_at": "2017-02-09T09:17:04.770Z",
"address": "",
"vip": false,
"custom_key": undefined,
"asdf": "",
"id": 6
}]);
App.Session.set(6)
assert.equal(App.Session.get('id'), 6)
assert.equal(App.Session.get('login'), 'hh@example.com')
assert.equal(App.Session.get('vip'), false)
assert.equal(App.Session.get('custom_key'), undefined)
assert.equal(App.Session.get().id, 6)
assert.equal(App.Session.get().login, 'hh@example.com')
assert.equal(App.Session.get().custom_key, undefined)
assert.equal(App.Session.get().not_existing, undefined)
// Wenn App.User updated through asset
// expect App.Session.get with new values
App.User.refresh([{
"login": "hh_new@example.com",
"firstname": "Harald",
"lastname": "Habebe",
"email": "hh_new@example.com",
"role_ids": [ 1, 2, 4 ],
"group_ids": [ 1 ],
"active": true,
"updated_at": "2017-02-09T09:17:04.770Z",
"address": "",
"vip": false,
"custom_key": undefined,
"asdf": "",
"id": 6
}]);
assert.equal(App.Session.get('id'), 6)
assert.equal(App.Session.get('login'), 'hh_new@example.com')
assert.equal(App.Session.get('vip'), false)
assert.equal(App.Session.get('custom_key'), undefined)
assert.equal(App.Session.get().id, 6)
assert.equal(App.Session.get().login, 'hh_new@example.com')
assert.equal(App.Session.get().custom_key, undefined)
assert.equal(App.Session.get().not_existing, undefined)
// Wenn App.Session is reseted to inital
// expect undefined for all
App.Session.init()
assert.equal(App.Session.get(), undefined)
assert.equal(App.Session.get('id'), undefined)
assert.equal(App.Session.get('login'), undefined)
assert.equal(App.Session.get('vip'), undefined)
assert.equal(App.Session.get('custom_key'), undefined)
// When App.Session is set and set to undefined or null,
// expect @current() to return null
App.Session.set(6)
App.Session.set(undefined)
assert.equal(App.User.current(), null, 'with no active session')
App.Session.set(null)
assert.equal(App.User.current(), null, 'with no active session')
// When App.Session is set with an invalid (not existing) user ID,
// expect @current() to return null
App.Session.set(100)
assert.equal(App.User.current(), null, 'with invalid session user ID')
});
}

View file

@ -0,0 +1,844 @@
// form
QUnit.test('table test', assert => {
App.i18n.set('de-de')
$('#qunit').append('<hr><h1>table simple I</h1><div id="table1"></div>')
var el = $('#table1')
App.TicketPriority.refresh( [
{
id: 1,
name: '1 low',
note: 'some note 1',
active: true,
created_at: '2014-06-10T11:17:34.000Z',
},
{
id: 2,
name: '2 normal',
note: 'some note 2',
active: false,
created_at: '2014-06-10T10:17:34.000Z',
},
] )
var rowClick = function (id, e) {
e.preventDefault()
console.log('rowClick', id, e.target)
};
var rowDblClick = function (id, e) {
e.preventDefault()
console.log('rowDblClick', id, e.target)
};
var rowMouseover = function (id, e) {
e.preventDefault()
console.log('rowMouseover', id, e.target)
};
var rowMouseout = function (id, e) {
e.preventDefault()
console.log('rowMouseout', id, e.target)
};
var colClick = function (id, e) {
e.preventDefault()
console.log('colClick', id, e.target)
};
var colDblClick = function (id, e) {
e.preventDefault()
console.log('colDblClick', id, e.target)
};
var colMouseover = function (id, e) {
e.preventDefault()
console.log('colMouseover', id, e.target)
};
var colMouseout = function (id, e) {
e.preventDefault()
console.log('colMouseout', id, e.target)
};
new App.ControllerTable({
el: el,
overview: ['name', 'created_at', 'active'],
model: App.TicketPriority,
objects: App.TicketPriority.search({sortBy:'name', order: 'ASC'}),
checkbox: false,
radio: false,
bindRow: {
events: {
'click': rowClick,
'mouseover': rowMouseover,
'mouseout': rowMouseout,
'dblclick': rowDblClick,
}
},
bindCol: {
name: {
events: {
'click': colClick,
'mouseover': colMouseover,
'mouseout': colMouseout,
'dblclick': colDblClick,
}
},
created_at: {
events: {
'mouseover': colMouseover,
'mouseout': colMouseout,
}
}
},
})
assert.equal(el.find('table > thead > tr').length, 1, 'row count')
assert.equal(el.find('table > thead > tr > th:nth-child(1)').text().trim(), 'Name', 'check header')
assert.equal(el.find('table > thead > tr > th:nth-child(2)').text().trim(), 'Erstellt', 'check header')
assert.equal(el.find('table > thead > tr > th:nth-child(3)').text().trim(), 'Aktiv', 'check header')
assert.equal(el.find('tbody > tr:nth-child(1) > td').length, 3, 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:first').text().trim(), '1 niedrig', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(2)').text().trim(), '10.06.2014', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(3)').text().trim(), 'true', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(2) > td').length, 3, 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:first').text().trim(), '2 normal', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(2)').text().trim(), '10.06.2014', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(3)').text().trim(), 'false', 'check row 2')
$('#qunit').append('<hr><h1>table simple II</h1><div id="table2"></div>')
el = $('#table2')
new App.ControllerTable({
el: el,
overview: ['name', 'created_at', 'active'],
model: App.TicketPriority,
objects: App.TicketPriority.search({sortBy:'name', order: 'DESC'}),
checkbox: false,
radio: false,
})
assert.equal(el.find('table > thead > tr').length, 1, 'row count')
assert.equal(el.find('table > thead > tr > th:nth-child(1)').text().trim(), 'Name', 'check header')
assert.equal(el.find('table > thead > tr > th:nth-child(2)').text().trim(), 'Erstellt', 'check header')
assert.equal(el.find('table > thead > tr > th:nth-child(3)').text().trim(), 'Aktiv', 'check header')
assert.equal(el.find('tbody > tr:nth-child(1) > td').length, 3, 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:first').text().trim(), '2 normal', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(2)').text().trim(), '10.06.2014', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(3)').text().trim(), 'false', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(2) > td').length, 3, 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:first').text().trim(), '1 niedrig', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(2)').text().trim(), '10.06.2014', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(3)').text().trim(), 'true', 'check row 2')
$('#qunit').append('<hr><h1>table simple III</h1><div id="table3"></div>')
el = $('#table3')
new App.ControllerTable({
el: el,
model: App.TicketPriority,
objects: App.TicketPriority.search({sortBy:'created_at', order: 'DESC'}),
checkbox: false,
radio: false,
})
assert.equal(el.find('table > thead > tr').length, 1, 'row count')
assert.equal(el.find('table > thead > tr > th:nth-child(1)').text().trim(), 'Name', 'check header')
assert.notEqual( el.find('table > thead > tr > th:nth-child(2)').text().trim(), 'Erstellt', 'check header')
assert.notEqual( el.find('table > thead > tr > th:nth-child(3)').text().trim(), 'Aktiv', 'check header')
assert.equal(el.find('tbody > tr:nth-child(2) > td').length, 1, 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:first').text().trim(), '2 normal', 'check row 2')
assert.notEqual( el.find('tbody > tr:nth-child(2) > td:nth-child(2)').text().trim(), '?', 'check row 2')
assert.notEqual( el.find('tbody > tr:nth-child(2) > td:nth-child(3)').text().trim(), 'true', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(1) > td').length, 1, 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:first').text().trim(), '1 niedrig', 'check row 1')
assert.notEqual( el.find('tbody > tr:nth-child(1) > td:nth-child(2)').text().trim(), '?', 'check row 1')
assert.notEqual( el.find('tbody > tr:nth-child(1) > td:nth-child(3)').text().trim(), 'false', 'check row 1')
App.Group.refresh( [
{
id: 1,
name: 'group 1',
active: true,
created_at: '2014-06-10T11:17:34.000Z',
},
{
id: 2,
name: 'group 2',
active: true,
created_at: '2014-06-10T11:17:34.000Z',
},
])
App.User.refresh( [
{
id: 55,
login: 'login55',
firstname: 'firstname55',
lastname: 'lastname55',
email: 'email55',
active: true,
created_at: '2014-06-10T11:17:34.000Z',
},
{
id: 56,
login: 'login56',
firstname: 'firstname56',
lastname: 'lastname56',
email: 'email56',
active: true,
created_at: '2014-06-10T11:17:34.000Z',
},
])
App.TicketState.refresh( [
{
id: 1,
name: 'new',
active: true,
created_at: '2014-06-10T11:17:34.000Z',
},
{
id: 2,
name: 'open',
note: 'some note 2',
active: false,
created_at: '2014-06-10T10:17:34.000Z',
},
])
App.Ticket.refresh( [
{
id: 1,
title: 'some title 1',
number: '4711',
priority_id: 1,
owner_id: 55,
customer_id: 56,
state_id: 1,
group_id: 2,
created_at: '2014-06-10T11:17:34.000Z',
},
{
id: 3,
title: 'some title 3',
number: '4713',
priority_id: 2,
owner_id: 56,
state_id: 1,
group_id: 2,
created_at: '2014-07-11T11:19:34.000Z',
},
{
id: 2,
title: 'some title 2',
number: '4712',
priority_id: 1,
state_id: 2,
group_id: 1,
created_at: '2014-06-10T11:19:34.000Z',
},
])
$('#qunit').append('<hr><h1>table complex I</h1><div id="table4"></div>')
el = $('#table4')
new App.ControllerTable({
el: el,
overview: ['number', 'title', 'owner', 'customer', 'priority', 'group', 'state', 'created_at'],
model: App.Ticket,
objects: App.Ticket.search({sortBy:'created_at', order: 'DESC'}),
checkbox: true,
})
assert.equal(el.find('table > thead > tr').length, 1, 'row count')
assert.equal(el.find('table > thead > tr > th:nth-child(1)').text().trim(), '', 'check header')
assert.equal(el.find('table > thead > tr > th:nth-child(2)').text().trim(), '#', 'check header')
assert.equal(el.find('table > thead > tr > th:nth-child(3)').text().trim(), 'Titel', 'check header')
assert.equal(el.find('table > thead > tr > th:nth-child(4)').text().trim(), 'Besitzer', 'check header')
assert.equal(el.find('table > thead > tr > th:nth-child(5)').text().trim(), 'Kunde', 'check header')
assert.equal(el.find('table > thead > tr > th:nth-child(6)').text().trim(), 'Priorität', 'check header')
assert.equal(el.find('table > thead > tr > th:nth-child(7)').text().trim(), 'Gruppe', 'check header')
assert.equal(el.find('table > thead > tr > th:nth-child(8)').text().trim(), 'Status', 'check header')
assert.equal(el.find('table > thead > tr > th:nth-child(9)').text().trim(), 'Erstellt am', 'check header')
assert.equal(el.find('tbody > tr:nth-child(1) > td').length, 9, 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(1) input').val(), '3', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(1) input').prop('checked'), '', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(1)').text().trim(), '', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(2)').text().trim(), '4713', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(3)').text().trim(), 'some title 3', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(4)').text().trim(), 'firstname56 lastname56', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(5)').text().trim(), '-', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(6)').text().trim(), '2 normal', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(7)').text().trim(), 'group 2', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(8)').text().trim(), 'neu', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(9)').text().trim(), '11.07.2014', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(2) > td').length, 9, 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(1) input').val(), '2', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(1) input').prop('checked'), '', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(1)').text().trim(), '', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(2)').text().trim(), '4712', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(3)').text().trim(), 'some title 2', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(4)').text().trim(), '-', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(5)').text().trim(), '-', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(6)').text().trim(), '1 niedrig', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(7)').text().trim(), 'group 1', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(8)').text().trim(), 'offen', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(9)').text().trim(), '10.06.2014', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(3) > td').length, 9, 'check row 3')
assert.equal(el.find('tbody > tr:nth-child(3) > td:nth-child(1) input').val(), '1', 'check row 3')
assert.equal(el.find('tbody > tr:nth-child(3) > td:nth-child(1) input').prop('checked'), '', 'check row 3')
assert.equal(el.find('tbody > tr:nth-child(3) > td:nth-child(1)').text().trim(), '', 'check row 3')
assert.equal(el.find('tbody > tr:nth-child(3) > td:nth-child(2)').text().trim(), '4711', 'check row 3')
assert.equal(el.find('tbody > tr:nth-child(3) > td:nth-child(3)').text().trim(), 'some title 1', 'check row 3')
assert.equal(el.find('tbody > tr:nth-child(3) > td:nth-child(4)').text().trim(), 'firstname55 lastname55', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(3) > td:nth-child(5)').text().trim(), 'firstname56 lastname56', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(3) > td:nth-child(6)').text().trim(), '1 niedrig', 'check row 3')
assert.equal(el.find('tbody > tr:nth-child(3) > td:nth-child(7)').text().trim(), 'group 2', 'check row 3')
assert.equal(el.find('tbody > tr:nth-child(3) > td:nth-child(8)').text().trim(), 'neu', 'check row 3')
assert.equal(el.find('tbody > tr:nth-child(3) > td:nth-child(9)').text().trim(), '10.06.2014', 'check row 3')
el.find('input[name="bulk_all"]').click()
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(1) input').prop('checked'), true, 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(1) input').val(), '3', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(1) input').prop('checked'), true, 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(1) input').val(), '2', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(3) > td:nth-child(1) input').prop('checked'), true, 'check row 3')
assert.equal(el.find('tbody > tr:nth-child(3) > td:nth-child(1) input').val(), '1', 'check row 3')
$('#qunit').append('<hr><h1>table complex II</h1><div id="table5"></div>')
el = $('#table5')
var clickCheckbox = function (id, checked, e) {
console.log('clickCheckbox', id, checked, e.target)
};
new App.ControllerTable({
el: el,
overview: ['number', 'title', 'owner', 'customer', 'priority', 'group', 'state', 'created_at'],
model: App.Ticket,
objects: App.Ticket.search({sortBy:'created_at', order: 'DESC'}),
checkbox: true,
groupBy: 'group',
bindCheckbox: {
events: {
'click': clickCheckbox,
}
},
})
assert.equal(el.find('table > thead > tr').length, 1, 'row count')
assert.equal(el.find('table > thead > tr > th:nth-child(1)').text().trim(), '', 'check header')
assert.equal(el.find('table > thead > tr > th:nth-child(2)').text().trim(), '#', 'check header')
assert.equal(el.find('table > thead > tr > th:nth-child(3)').text().trim(), 'Titel', 'check header')
assert.equal(el.find('table > thead > tr > th:nth-child(4)').text().trim(), 'Besitzer', 'check header')
assert.equal(el.find('table > thead > tr > th:nth-child(5)').text().trim(), 'Kunde', 'check header')
assert.equal(el.find('table > thead > tr > th:nth-child(6)').text().trim(), 'Priorität', 'check header')
assert.equal(el.find('table > thead > tr > th:nth-child(7)').text().trim(), 'Status', 'check header')
assert.equal(el.find('table > thead > tr > th:nth-child(8)').text().trim(), 'Erstellt am', 'check header')
assert.equal(el.find('tbody > tr:nth-child(1) > td').length, 1, 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(1)').text().trim(), 'group 1', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(2) > td').length, 8, 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(1) input').val(), '2', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(1) input').prop('checked'), '', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(1)').text().trim(), '', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(2)').text().trim(), '4712', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(3)').text().trim(), 'some title 2', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(4)').text().trim(), '-', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(5)').text().trim(), '-', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(6)').text().trim(), '1 niedrig', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(7)').text().trim(), 'offen', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(8)').text().trim(), '10.06.2014', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(3) > td').length, 1, 'check row 3')
assert.equal(el.find('tbody > tr:nth-child(3) > td:nth-child(1)').text().trim(), 'group 2', 'check row 4')
assert.equal(el.find('tbody > tr:nth-child(4) > td').length, 8, 'check row 4')
assert.equal(el.find('tbody > tr:nth-child(4) > td:nth-child(1) input').val(), '3', 'check row 4')
assert.equal(el.find('tbody > tr:nth-child(4) > td:nth-child(1) input').prop('checked'), '', 'check row 4')
assert.equal(el.find('tbody > tr:nth-child(4) > td:nth-child(1)').text().trim(), '', 'check row 4')
assert.equal(el.find('tbody > tr:nth-child(4) > td:nth-child(2)').text().trim(), '4713', 'check row 4')
assert.equal(el.find('tbody > tr:nth-child(4) > td:nth-child(3)').text().trim(), 'some title 3', 'check row 4')
assert.equal(el.find('tbody > tr:nth-child(4) > td:nth-child(4)').text().trim(), 'firstname56 lastname56', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(4) > td:nth-child(5)').text().trim(), '-', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(4) > td:nth-child(6)').text().trim(), '2 normal', 'check row 4')
assert.equal(el.find('tbody > tr:nth-child(4) > td:nth-child(7)').text().trim(), 'neu', 'check row 4')
assert.equal(el.find('tbody > tr:nth-child(4) > td:nth-child(8)').text().trim(), '11.07.2014', 'check row 4')
el.find('input[name="bulk"]:eq(1)').click()
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(1) input').prop('checked'), '', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(1) input').val(), '2', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(4) > td:nth-child(1) input').prop('checked'), true, 'check row 4')
assert.equal(el.find('tbody > tr:nth-child(4) > td:nth-child(1) input').val(), '3', 'check row 4')
assert.equal(el.find('tbody > tr:nth-child(5) > td:nth-child(1) input').prop('checked'), '', 'check row 5')
assert.equal(el.find('tbody > tr:nth-child(5) > td:nth-child(1) input').val(), '1', 'check row 5')
el.find('tbody > tr:nth-child(5) > td:nth-child(1) label').click()
assert.equal(el.find('tbody > tr:nth-child(5) > td:nth-child(1) input').prop('checked'), true, 'check row 5')
assert.equal(el.find('tbody > tr:nth-child(5) > td:nth-child(1) input').val(), '1', 'check row 5')
$('#qunit').append('<hr><h1>table Group By Direction DESC</h1><div id="table6"></div>')
el = $('#table6')
var clickCheckbox = function (id, checked, e) {
console.log('clickCheckbox', id, checked, e.target)
};
new App.ControllerTable({
el: el,
overview: ['number', 'title', 'owner', 'customer', 'priority', 'group', 'state', 'created_at'],
model: App.Ticket,
objects: App.Ticket.search({sortBy:'created_at', order: 'DESC'}),
groupBy: 'priority',
groupDirection: 'DESC',
})
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(1)').text().trim(), '2 normal', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(3) > td:nth-child(1)').text().trim(), '1 niedrig', 'check row 3')
$('#qunit').append('<hr><h1>table Group By Direction ASC</h1><div id="table7"></div>')
el = $('#table7')
var clickCheckbox = function (id, checked, e) {
console.log('clickCheckbox', id, checked, e.target)
};
new App.ControllerTable({
el: el,
overview: ['number', 'title', 'owner', 'customer', 'priority', 'group', 'state', 'created_at'],
model: App.Ticket,
objects: App.Ticket.search({sortBy:'created_at', order: 'DESC'}),
groupBy: 'priority',
groupDirection: 'ASC',
})
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(1)').text().trim(), '1 niedrig', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(4) > td:nth-child(1)').text().trim(), '2 normal', 'check row 4')
});
QUnit.test('table test 2.1', assert => {
App.i18n.set('de-de')
$('#qunit').append('<hr><h1>table with hash</h1><div id="table-hash2_1"></div>')
var el = $('#table-hash2_1')
App.Group.refresh( [
{
id: 5,
name: 'group 5',
active: true,
created_at: '2014-06-10T11:17:34.000Z',
},
])
App.Channel.configure_delete = true
App.Channel.configure_clone = false
App.Channel.configure_attributes = [
{ name: 'adapter', display: 'Type', tag: 'select', multiple: false, null: false, options: { IMAP: 'IMAP', POP3: 'POP3' } },
{ name: 'options::host', display: 'Host', tag: 'input', type: 'text', limit: 120, null: true, autocapitalize: false },
{ name: 'options::user', display: 'User', tag: 'input', type: 'text', limit: 120, null: true, autocapitalize: false },
{ name: 'options::password', display: 'Password', tag: 'input', type: 'password', limit: 120, null: true, autocapitalize: false },
{ name: 'options::ssl', display: 'SSL', tag: 'select', multiple: false, null: true, options: { true: 'yes', false: 'no' }, translate: true, default: true},
{ name: 'options::folder', display: 'Folder', tag: 'input', type: 'text', limit: 120, null: true, autocapitalize: false },
{ name: 'group_id', display: 'Group', tag: 'select', multiple: false, null: false, nulloption: true, relation: 'Group' },
{ name: 'active', display: 'Active', tag: 'select', multiple: false, null: false, options: { true: 'yes', false: 'no' }, translate: true, default: true },
]
App.Channel.refresh( [
{
id: 1,
adapter: 'adapter1',
options: {
host: 'host1',
user: 'user1',
},
group_id: 5,
active: true,
created_at: '2014-06-10T11:17:34.000Z',
},
{
id: 2,
adapter: 'adapter2',
options: {
host: 'host2',
user: 'user2',
},
group_id: 5,
active: true,
created_at: '2014-06-10T11:17:34.000Z',
},
] )
new App.ControllerTable({
el: el,
overview: ['adapter', 'options::host', 'options::user', 'active'],
model: App.Channel,
objects: App.Channel.search({sortBy:'adapter', order: 'ASC'}),
})
assert.equal(el.find('table > thead > tr').length, 1, 'row count')
assert.equal(el.find('table > thead > tr > th:nth-child(1)').text().trim(), 'Typ', 'check header')
assert.equal(el.find('table > thead > tr > th:nth-child(2)').text().trim(), 'Host', 'check header')
assert.equal(el.find('table > thead > tr > th:nth-child(3)').text().trim(), 'Benutzer', 'check header')
assert.equal(el.find('table > thead > tr > th:nth-child(4)').text().trim(), 'Aktiv', 'check header')
assert.equal(el.find('table > thead > tr > th:nth-child(5)').text().trim(), 'Aktion', 'check header')
assert.equal(el.find('tbody > tr:nth-child(1) > td').length, 5, 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(1)').text().trim(), 'adapter1', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(2)').text().trim(), 'host1', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(3)').text().trim(), 'user1', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(4)').text().trim(), 'ja', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(5)').text().trim(), '', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(5) .dropdown.dropdown--actions').length, 0, 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(5) .js-delete').length, 1, 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(5) .js-clone').length, 0, 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(2) > td').length, 5, 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(1)').text().trim(), 'adapter2', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(2)').text().trim(), 'host2', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(3)').text().trim(), 'user2', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(4)').text().trim(), 'ja', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(5)').text().trim(), '', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(5) .dropdown.dropdown--actions').length, 0, 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(5) .js-delete').length, 1, 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(5) .js-clone').length, 0, 'check row 1')
});
QUnit.test('table test 2.2', assert => {
App.i18n.set('de-de')
$('#qunit').append('<hr><h1>table with hash</h1><div id="table-hash2_2"></div>')
var el = $('#table-hash2_2')
App.Group.refresh( [
{
id: 5,
name: 'group 5',
active: true,
created_at: '2014-06-10T11:17:34.000Z',
},
])
App.Channel.configure_delete = false
App.Channel.configure_clone = true
App.Channel.configure_attributes = [
{ name: 'adapter', display: 'Type', tag: 'select', multiple: false, null: false, options: { IMAP: 'IMAP', POP3: 'POP3' } },
{ name: 'options::host', display: 'Host', tag: 'input', type: 'text', limit: 120, null: true, autocapitalize: false },
{ name: 'options::user', display: 'User', tag: 'input', type: 'text', limit: 120, null: true, autocapitalize: false },
{ name: 'options::password', display: 'Password', tag: 'input', type: 'password', limit: 120, null: true, autocapitalize: false },
{ name: 'options::ssl', display: 'SSL', tag: 'select', multiple: false, null: true, options: { true: 'yes', false: 'no' }, translate: true, default: true},
{ name: 'options::folder', display: 'Folder', tag: 'input', type: 'text', limit: 120, null: true, autocapitalize: false },
{ name: 'group_id', display: 'Group', tag: 'select', multiple: false, null: false, nulloption: true, relation: 'Group' },
{ name: 'active', display: 'Active', tag: 'select', multiple: false, null: false, options: { true: 'yes', false: 'no' }, translate: true, default: true },
]
App.Channel.refresh( [
{
id: 1,
adapter: 'adapter1',
options: {
host: 'host1',
user: 'user1',
},
group_id: 5,
active: true,
created_at: '2014-06-10T11:17:34.000Z',
},
{
id: 2,
adapter: 'adapter2',
options: {
host: 'host2',
user: 'user2',
},
group_id: 5,
active: true,
created_at: '2014-06-10T11:17:34.000Z',
},
] )
new App.ControllerTable({
el: el,
overview: ['adapter', 'options::host', 'options::user', 'active'],
model: App.Channel,
objects: App.Channel.search({sortBy:'adapter', order: 'ASC'}),
})
assert.equal(el.find('table > thead > tr').length, 1, 'row count')
assert.equal(el.find('table > thead > tr > th:nth-child(1)').text().trim(), 'Typ', 'check header')
assert.equal(el.find('table > thead > tr > th:nth-child(2)').text().trim(), 'Host', 'check header')
assert.equal(el.find('table > thead > tr > th:nth-child(3)').text().trim(), 'Benutzer', 'check header')
assert.equal(el.find('table > thead > tr > th:nth-child(4)').text().trim(), 'Aktiv', 'check header')
assert.equal(el.find('table > thead > tr > th:nth-child(5)').text().trim(), 'Aktion', 'check header')
assert.equal(el.find('tbody > tr:nth-child(1) > td').length, 5, 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(1)').text().trim(), 'adapter1', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(2)').text().trim(), 'host1', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(3)').text().trim(), 'user1', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(4)').text().trim(), 'ja', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(5)').text().trim(), '', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(5) .dropdown.dropdown--actions').length, 0, 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(5) .js-delete').length, 0, 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(5) .js-clone').length, 1, 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(2) > td').length, 5, 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(1)').text().trim(), 'adapter2', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(2)').text().trim(), 'host2', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(3)').text().trim(), 'user2', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(4)').text().trim(), 'ja', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(5)').text().trim(), '', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(5) .dropdown.dropdown--actions').length, 0, 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(5) .js-delete').length, 0, 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(5) .js-clone').length, 1, 'check row 1')
});
QUnit.test('table test 3', assert => {
App.i18n.set('de-de')
$('#qunit').append('<hr><h1>table with hash</h1><div id="table-hash2"></div>')
var el = $('#table-hash2')
App.Group.refresh( [
{
id: 5,
name: 'group 5',
active: true,
created_at: '2014-06-10T11:17:34.000Z',
},
])
App.Channel.configure_delete = true
App.Channel.configure_clone = true
App.Channel.configure_attributes = [
{ name: 'adapter', display: 'Type', tag: 'select', multiple: false, null: false, options: { IMAP: 'IMAP', POP3: 'POP3' } },
{ name: 'options::host', display: 'Host', tag: 'input', type: 'text', limit: 120, null: true, autocapitalize: false },
{ name: 'options::user', display: 'User', tag: 'input', type: 'text', limit: 120, null: true, autocapitalize: false },
{ name: 'options::password', display: 'Password', tag: 'input', type: 'password', limit: 120, null: true, autocapitalize: false },
{ name: 'options::ssl', display: 'SSL', tag: 'select', multiple: false, null: true, options: { true: 'yes', false: 'no' }, translate: true, default: true},
{ name: 'options::folder', display: 'Folder', tag: 'input', type: 'text', limit: 120, null: true, autocapitalize: false },
{ name: 'group_id', display: 'Group', tag: 'select', multiple: false, null: false, nulloption: true, relation: 'Group' },
{ name: 'active', display: 'Active', tag: 'select', multiple: false, null: false, options: { true: 'yes', false: 'no' }, translate: true, default: true },
]
App.Channel.refresh( [
{
id: 1,
adapter: 'adapter1',
options: {
host: 'host1',
user: 'user1',
},
group_id: 5,
active: true,
created_at: '2014-06-10T11:17:34.000Z',
},
{
id: 2,
adapter: 'adapter2',
options: {
host: 'host2',
user: 'user2',
},
group_id: 5,
active: true,
created_at: '2014-06-10T11:17:34.000Z',
},
] )
new App.ControllerTable({
el: el,
overview: ['adapter', 'options::host', 'options::user', 'active'],
model: App.Channel,
objects: App.Channel.search({sortBy:'adapter', order: 'ASC'}),
})
assert.equal(el.find('table > thead > tr').length, 1, 'row count')
assert.equal(el.find('table > thead > tr > th:nth-child(1)').text().trim(), 'Typ', 'check header')
assert.equal(el.find('table > thead > tr > th:nth-child(2)').text().trim(), 'Host', 'check header')
assert.equal(el.find('table > thead > tr > th:nth-child(3)').text().trim(), 'Benutzer', 'check header')
assert.equal(el.find('table > thead > tr > th:nth-child(4)').text().trim(), 'Aktiv', 'check header')
assert.equal(el.find('table > thead > tr > th:nth-child(5)').text().trim(), 'Aktion', 'check header')
assert.equal(el.find('tbody > tr:nth-child(1) > td').length, 5, 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(1)').text().trim(), 'adapter1', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(2)').text().trim(), 'host1', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(3)').text().trim(), 'user1', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(4)').text().trim(), 'ja', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(5) .dropdown.dropdown--actions .js-delete').length, 1, 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(5) .dropdown.dropdown--actions .js-clone').length, 1, 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(2) > td').length, 5, 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(1)').text().trim(), 'adapter2', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(2)').text().trim(), 'host2', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(3)').text().trim(), 'user2', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(4)').text().trim(), 'ja', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(5) .dropdown.dropdown--actions .js-delete').length, 1, 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(5) .dropdown.dropdown--actions .js-clone').length, 1, 'check row 2')
});
QUnit.test('table test 4', assert => {
App.i18n.set('de-de')
$('#qunit').append('<hr><h1>table with link</h1><div id="table-link1"></div>')
var el = $('#table-link1')
App.EmailAddress.refresh( [
{
id: 55,
realname: 'realname 55',
email: 'email 55',
active: true,
created_at: '2014-06-10T11:17:34.000Z',
},
{
id: 56,
realname: 'realname 56',
email: 'email 56',
active: true,
created_at: '2014-06-10T11:17:34.000Z',
},
])
var callbackHeader = function (header) {
console.log('current header is', header);
// add new header item
var attribute = {
name: 'some name',
display: 'Some Name',
};
header.push(attribute);
console.log('new header is', header);
return header
}
var callbackAttributes = function(value, object, attribute, header, refObject) {
console.log('data of item col', value, object, attribute, header, refObject)
value = ' '
attribute.class = 'glyphicon glyphicon-user'
attribute.link = '#'
attribute.title = App.i18n.translateInline('Switch to')
if (object.id == 55) {
attribute.data = {
some: 'value55',
xxx: 55,
}
}
else {
attribute.data = {
some: 'value56',
xxx: 56,
}
}
return value
}
var switchTo = function(id, e) {
e.preventDefault()
console.log('switchTo with id', id, e.target)
//@disconnectClient()
//App.Auth._logout()
//window.location = App.Config.get('api_path') + '/sessions/switch/' + id
}
new App.ControllerTable({
el: el,
model: App.EmailAddress,
objects: App.EmailAddress.search({sortBy:'realname', order: 'ASC'}),
callbackHeader: [callbackHeader],
callbackAttributes: {
'some name': [ callbackAttributes ]
},
bindCol: {
'some name': {
events: {
'click': switchTo,
}
},
},
})
assert.equal(el.find('table > thead > tr').length, 1, 'row count')
assert.equal(el.find('table > thead > tr > th:nth-child(1)').text().trim(), 'Anzeigename', 'check header')
assert.equal(el.find('table > thead > tr > th:nth-child(3)').text().trim(), 'Some Name', 'check header')
assert.equal(el.find('tbody > tr:nth-child(1) > td').length, 3, 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(1)').text().trim(), 'realname 55', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(2)').text().trim(), 'email 55', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(3)').text().trim(), '', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(3) > a > span').hasClass('glyphicon-user'), true, 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(3) > a > span').hasClass('glyphicon'), true, 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(3)').attr('title'), 'Umschalten zu', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(3) > a > span').data('some'), 'value55', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(3) > a > span').data('xxx'), '55', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td').length, 3, 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(1)').text().trim(), 'realname 56', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(2)').text().trim(), 'email 56', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(3)').text().trim(), '', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(3) > a > span').hasClass('glyphicon-user'), true, 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(3) > a > span').hasClass('glyphicon'), true, 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(3)').attr('title'), 'Umschalten zu', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(3) > a > span').data('some'), 'value56', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(3) > a > span').data('xxx'), '56', 'check row 2')
});
QUnit.test('table test 5', assert => {
App.i18n.set('de-de')
$('#qunit').append('<hr><h1>table with data</h1><div id="table-data1"></div>')
var el = $('#table-data1')
data = [
{ name: 'some name 1', data: 'some data 1', active: true },
{ name: 'some name 2', data: 'some data 2', active: false },
{ name: 'some name 3', data: 'some data 3', active: true },
]
new App.ControllerTable({
el: el,
overview: ['name', 'data', 'active'],
attribute_list: [
{ name: 'name', display: 'Name', type: 'text', style: 'width: 10%' },
{ name: 'data', display: 'Data', type: 'text' },
{ name: 'active', display: 'Active', type: 'text' },
],
objects: data
});
assert.equal(el.find('table > thead > tr').length, 1, 'row count')
assert.equal(el.find('table > thead > tr > th:nth-child(1)').text().trim(), 'Name', 'check header')
assert.equal(el.find('table > thead > tr > th:nth-child(2)').text().trim(), 'Data', 'check header')
assert.equal(el.find('table > thead > tr > th:nth-child(3)').text().trim(), 'Aktiv', 'check header')
assert.equal(el.find('tbody > tr:nth-child(1) > td').length, 3, 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:first').text().trim(), 'some name 1', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(2)').text().trim(), 'some data 1', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(1) > td:nth-child(3)').text().trim(), 'true', 'check row 1')
assert.equal(el.find('tbody > tr:nth-child(2) > td').length, 3, 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:first').text().trim(), 'some name 2', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(2)').text().trim(), 'some data 2', 'check row 2')
assert.equal(el.find('tbody > tr:nth-child(2) > td:nth-child(3)').text().trim(), 'false', 'check row 2')
});
QUnit.test('table test 6/7', assert => {
$('#qunit').append('<hr><h1>sotable table with data</h1><div id="table-data6"></div>')
var el_head_sortable = $('#table-data6')
$('#qunit').append('<hr><h1>not sortable table with data</h1><div id="table-data7"></div>')
var el_not_head_sortable = $('#table-data7')
data = [
{ name: 'a item', data: 'g data', active: true },
{ name: 'b item', data: 'b data', active: false },
{ name: 'c item', data: 'z data', active: false },
{ name: 'd item', data: '', active: false },
]
new App.ControllerTable({
tableId: 'a',
el: el_head_sortable,
overview: ['name', 'data', 'active'],
attribute_list: [
{ name: 'name', display: 'Name', type: 'text', style: 'width: 10%', unsortable: true },
{ name: 'data', display: 'Data', type: 'text' },
{ name: 'active', display: 'Active', type: 'text' },
],
objects: data
});
new App.ControllerTable({
tableId: 'b',
el: el_not_head_sortable,
overview: ['name', 'data', 'active'],
attribute_list: [
{ name: 'name', display: 'Name', type: 'text', style: 'width: 10%', unsortable: true },
{ name: 'data', display: 'Data', type: 'text' },
{ name: 'active', display: 'Active', type: 'text' },
],
objects: data,
dndCallback: function() { return true }
});
assert.equal(el_head_sortable.find('tbody > tr:nth-child(1) > td:first').text().trim(), 'a item', 'check row 1')
assert.equal(el_not_head_sortable.find('tbody > tr:nth-child(1) > td:nth-child(2)').text().trim(), 'a item', 'check row 1')
assert.ok(_.isEqual(list_items(el_head_sortable, 1), ['a item', 'b item', 'c item', 'd item']), 'sortable table is rendered correctly')
assert.ok(_.isEqual(list_items(el_not_head_sortable, 2), ['a item', 'b item', 'c item', 'd item']), 'unsortable table is rendered correctly')
click_sort(el_head_sortable, 2)
click_sort(el_not_head_sortable, 3)
assert.ok(_.isEqual(list_items(el_head_sortable, 1), ['b item', 'a item', 'c item', 'd item']), 'sortable table is sorted')
assert.ok(_.isEqual(list_items(el_not_head_sortable, 2), ['a item', 'b item', 'c item', 'd item']), 'unsortable table is not sorted')
click_sort(el_head_sortable, 3)
assert.ok(_.isEqual(list_items(el_head_sortable, 1), ['b item', 'c item', 'd item', 'a item']), 'sorting by boolean column works')
click_sort(el_head_sortable, 1)
assert.ok(_.isEqual(list_items(el_head_sortable, 1), ['b item', 'c item', 'd item', 'a item']), 'sorting on name column is disabled')
});
function click_sort(table, column_number) {
table
.find(`table > thead > tr > th:nth-child(${column_number}) > .js-sort`)
.click()
}
function list_items(table, column_number) {
return table
.find(`tbody > tr > td:nth-child(${column_number})`)
.text()
.split("\n")
.filter(elem => elem.match(/[\w]+/))
.map(elem => elem.trim())
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,316 @@
window.onload = function() {
QUnit.test( "taskbar basic tests", assert => {
// create task bar div
$('#qunit').append('<hr><h1>taskbar basic tests</h1><div id="taskbar1"></div>')
App.TaskManager.init({
el: $('#taskbar1'),
offlineModus: true,
force: true,
})
// add tasks
App.TaskManager.execute({
key: 'TestKey1',
controller: 'TestController1',
params: {
message: '#1',
},
show: true,
persistent: false,
})
assert.equal($('#qunit .content').length, 1, "check available active contents")
assert.equal($('#qunit .content.active').length, 1, "check available active contents")
assert.equal($('#qunit .content.active').text(), "some test controller message:'#1',show:'true',hide:'false',active:'true'", "check active content!")
// verify
task = App.TaskManager.get('TestKey1')
assert.equal(task.notify, false)
assert.deepEqual(task.state, undefined)
assert.deepEqual(task.params, { "message": "#1", "shown": true })
// update
App.TaskManager.update('TestKey1', { 'state': 'abc' })
App.TaskManager.update('TestKey1', { 'params': { a: 12 } })
App.TaskManager.notify('TestKey1')
// verify
task = App.TaskManager.get('TestKey1')
assert.equal(task.notify, true)
assert.deepEqual(task.state, 'abc')
assert.deepEqual(task.params, { "a": 12 })
App.TaskManager.execute({
key: 'TestKey2',
controller: 'TestController1',
params: {
message: '#2',
},
show: true,
persistent: false,
})
assert.equal($('#qunit .content').length, 2, "check available active contents")
assert.equal($('#qunit .content.active').length, 1, "check available active contents")
assert.equal($('#qunit .content.active').text(), "some test controller message:'#2',show:'true',hide:'false',active:'true'", "check active content!")
assert.equal($('#qunit #content_permanent_TestKey1').text(), "some test controller message:'#1',show:'true',hide:'true',active:'false'", "check active content!")
assert.equal($('#qunit #content_permanent_TestKey2').text(), "some test controller message:'#2',show:'true',hide:'false',active:'true'", "check active content!")
// check task history
assert.equal(App.TaskManager.nextTaskUrl(), '#/some/url/#2')
assert.equal(App.TaskManager.nextTaskUrl(), '#/some/url/#1')
App.TaskManager.execute({
key: 'TestKey3',
controller: 'TestController1',
params: {
message: '#3',
},
show: false,
persistent: false,
})
assert.equal($('#qunit .content').length, 2, "check available active contents")
assert.equal($('#qunit .content.active').length, 1, "check available active contents")
assert.equal($('#qunit .content.active').text(), "some test controller message:'#2',show:'true',hide:'false',active:'true'")
assert.equal($('#qunit #content_permanent_TestKey1').text(), "some test controller message:'#1',show:'true',hide:'true',active:'false'", "check active content!")
assert.equal($('#qunit #content_permanent_TestKey2').text(), "some test controller message:'#2',show:'true',hide:'false',active:'true'", "check active content!")
App.TaskManager.execute({
key: 'TestKey3',
controller: 'TestController1',
params: {
message: '#3',
},
show: true,
persistent: false,
})
assert.equal($('#qunit .content').length, 3, "check available active contents")
assert.equal($('#qunit .content.active').length, 1, "check available active contents")
assert.equal($('#qunit .content.active').text(), "some test controller message:'#3',show:'true',hide:'true',active:'true'", "check active content!")
assert.equal($('#qunit #content_permanent_TestKey1').text(), "some test controller message:'#1',show:'true',hide:'true',active:'false'", "check active content!")
assert.equal($('#qunit #content_permanent_TestKey2').text(), "some test controller message:'#2',show:'true',hide:'true',active:'false'", "check active content!")
assert.equal($('#qunit #content_permanent_TestKey3').text(), "some test controller message:'#3',show:'true',hide:'true',active:'true'", "check active content!")
App.TaskManager.execute({
key: 'TestKey4',
controller: 'TestController1',
params: {
message: '#4',
},
show: false,
persistent: true,
})
assert.equal($('#qunit .content').length, 3, "check available active contents")
assert.equal($('#qunit .content.active').length, 1, "check available active contents")
assert.equal($('#qunit .content.active').text(), "some test controller message:'#3',show:'true',hide:'true',active:'true'", "check active content!")
assert.equal($('#qunit #content_permanent_TestKey1').text(), "some test controller message:'#1',show:'true',hide:'true',active:'false'", "check active content!")
assert.equal($('#qunit #content_permanent_TestKey2').text(), "some test controller message:'#2',show:'true',hide:'true',active:'false'", "check active content!")
assert.equal($('#qunit #content_permanent_TestKey3').text(), "some test controller message:'#3',show:'true',hide:'true',active:'true'", "check active content!")
App.TaskManager.execute({
key: 'TestKey5',
controller: 'TestController1',
params: {
message: '#5',
},
show: true,
persistent: true,
})
assert.equal($('#qunit .content').length, 4, "check available active contents")
assert.equal($('#qunit .content.active').length, 1, "check available active contents")
assert.equal($('#qunit .content.active').text(), "some test controller message:'#5',show:'true',hide:'false',active:'true'")
assert.equal($('#qunit #content_permanent_TestKey1').text(), "some test controller message:'#1',show:'true',hide:'true',active:'false'", "check active content!")
assert.equal($('#qunit #content_permanent_TestKey2').text(), "some test controller message:'#2',show:'true',hide:'true',active:'false'", "check active content!")
assert.equal($('#qunit #content_permanent_TestKey3').text(), "some test controller message:'#3',show:'true',hide:'true',active:'false'", "check active content!")
assert.equal($('#qunit #content_permanent_TestKey5').text(), "some test controller message:'#5',show:'true',hide:'false',active:'true'", "check active content!")
App.TaskManager.execute({
key: 'TestKey6',
controller: 'TestController1',
params: {
message: '#6',
},
show: true,
persistent: false,
})
assert.equal($('#qunit .content').length, 5, "check available active contents")
assert.equal($('#qunit .content.active').length, 1, "check available active contents")
assert.equal($('#qunit .content.active').text(), "some test controller message:'#6',show:'true',hide:'false',active:'true'")
assert.equal($('#qunit #content_permanent_TestKey1').text(), "some test controller message:'#1',show:'true',hide:'true',active:'false'", "check active content!")
assert.equal($('#qunit #content_permanent_TestKey2').text(), "some test controller message:'#2',show:'true',hide:'true',active:'false'", "check active content!")
assert.equal($('#qunit #content_permanent_TestKey3').text(), "some test controller message:'#3',show:'true',hide:'true',active:'false'", "check active content!")
assert.equal($('#qunit #content_permanent_TestKey5').text(), "some test controller message:'#5',show:'true',hide:'true',active:'false'", "check active content!")
assert.equal($('#qunit #content_permanent_TestKey6').text(), "some test controller message:'#6',show:'true',hide:'false',active:'true'", "check active content!")
// remove task#2
App.TaskManager.remove('TestKey2')
assert.equal($('#qunit .content').length, 4, "check available active contents")
assert.equal($('#qunit .content.active').length, 1, "check available active contents")
assert.equal($('#qunit .content.active').text(), "some test controller message:'#6',show:'true',hide:'false',active:'true'")
assert.equal($('#qunit #content_permanent_TestKey1').text(), "some test controller message:'#1',show:'true',hide:'true',active:'false'", "check active content!")
assert.equal($('#qunit #content_permanent_TestKey3').text(), "some test controller message:'#3',show:'true',hide:'true',active:'false'", "check active content!")
assert.equal($('#qunit #content_permanent_TestKey5').text(), "some test controller message:'#5',show:'true',hide:'true',active:'false'", "check active content!")
assert.equal($('#qunit #content_permanent_TestKey6').text(), "some test controller message:'#6',show:'true',hide:'false',active:'true'", "check active content!")
// activate task#3
App.TaskManager.execute({
key: 'TestKey3',
controller: 'TestController1',
params: {
message: '#3',
},
show: true,
persistent: false,
})
assert.equal($('#qunit .content').length, 4, "check available active contents")
assert.equal($('#qunit .content.active').length, 1, "check available active contents")
assert.equal($('#qunit .content.active').text(), "some test controller message:'#3',show:'true',hide:'true',active:'true'")
assert.equal($('#qunit #content_permanent_TestKey1').text(), "some test controller message:'#1',show:'true',hide:'true',active:'false'", "check active content!")
assert.equal($('#qunit #content_permanent_TestKey3').text(), "some test controller message:'#3',show:'true',hide:'true',active:'true'", "check active content!")
assert.equal($('#qunit #content_permanent_TestKey5').text(), "some test controller message:'#5',show:'true',hide:'true',active:'false'", "check active content!")
assert.equal($('#qunit #content_permanent_TestKey6').text(), "some test controller message:'#6',show:'true',hide:'true',active:'false'", "check active content!")
// activate task#1
App.TaskManager.execute({
key: 'TestKey1',
controller: 'TestController1',
params: {
message: '#1',
},
show: true,
persistent: false,
})
assert.equal($('#qunit .content').length, 4, "check available active contents")
assert.equal($('#qunit .content.active').length, 1, "check available active contents")
assert.equal($('#qunit .content.active').text(), "some test controller message:'#1',show:'true',hide:'true',active:'true'")
assert.equal($('#qunit #content_permanent_TestKey1').text(), "some test controller message:'#1',show:'true',hide:'true',active:'true'", "check active content!")
assert.equal($('#qunit #content_permanent_TestKey3').text(), "some test controller message:'#3',show:'true',hide:'true',active:'false'", "check active content!")
assert.equal($('#qunit #content_permanent_TestKey5').text(), "some test controller message:'#5',show:'true',hide:'true',active:'false'", "check active content!")
assert.equal($('#qunit #content_permanent_TestKey6').text(), "some test controller message:'#6',show:'true',hide:'true',active:'false'", "check active content!")
// remove task#1
App.TaskManager.remove('TestKey1')
// verify if task#3 is active
assert.equal($('#qunit .content').length, 3, "check available active contents")
assert.equal($('#qunit .content.active').length, 0, "check available active contents")
assert.equal($('#qunit .content.active').text(), "")
// remove task#3
App.TaskManager.remove('TestKey3')
// verify if task#5 is active
assert.equal($('#qunit .content').length, 2, "check available active contents")
assert.equal($('#qunit .content.active').length, 0, "check available active contents")
assert.equal($('#qunit .content.active').text(), "")
// remove task#5 // can not get removed because of permanent task
App.TaskManager.remove('TestKey5')
// verify if task#5 is active
assert.equal($('#qunit .content').length, 2, "check available active contents")
assert.equal($('#qunit .content.active').length, 0, "check available active contents")
assert.equal($('#qunit .content.active').text(), "")
// create task#7
App.TaskManager.execute({
key: 'TestKey7',
controller: 'TestController1',
params: {
message: '#7',
},
show: true,
persistent: false,
})
assert.equal($('#qunit .content').length, 3, "check available active contents")
assert.equal($('#qunit .content.active').length, 1, "check available active contents")
assert.equal($('#qunit .content.active').text(), "some test controller message:'#7',show:'true',hide:'false',active:'true'", "check active content!")
// remove task#7
App.TaskManager.remove('TestKey7')
// verify if task#5 is active
assert.equal($('#qunit .content').length, 2, "check available active contents")
assert.equal($('#qunit .content.active').length, 0, "check available active contents")
assert.equal($('#qunit .content.active').text(), "")
// check task history
assert.equal(App.TaskManager.nextTaskUrl(), '#/some/url/#6')
assert.equal(App.TaskManager.nextTaskUrl(), '#/some/url/#5')
assert.equal(App.TaskManager.nextTaskUrl(), '#/some/url/#6')
assert.equal(App.TaskManager.nextTaskUrl(), '#/some/url/#6')
// remove task#6
App.TaskManager.remove('TestKey6')
// check task history
assert.equal(App.TaskManager.nextTaskUrl(), false)
assert.equal(App.TaskManager.nextTaskUrl(), false)
// check max tabs
var times = 5;
App.TaskManager.tasksAutoCleanupDelayTime(200)
App.TaskManager.tasksAutoCleanupTaskMax(3)
for(var i=0; i < times; i++){
App.TaskManager.execute({
key: 'TestKeyLoop' + i,
controller: 'TestController1',
params: {
message: "#" + i,
},
show: true,
persistent: false,
})
}
assert.equal(App.TaskManager.all().length, 5)
})
App.Delay.set(function() {
QUnit.test( "taskbar check max tabs 2", assert => {
assert.equal(App.TaskManager.all().length, 3)
var times = 5;
for(var i=0; i < times; i++){
App.TaskManager.execute({
key: 'TestKeyLoop2' + i,
controller: 'TestController1',
params: {
message: "#" + i,
changedState: true
},
show: true,
persistent: false,
})
}
assert.equal(App.TaskManager.all().length, 8)
})
}, 1000);
App.Delay.set(function() {
QUnit.test( "taskbar check max tabs 5", assert => {
assert.equal(App.TaskManager.all().length, 5)
// destroy task bar
App.TaskManager.reset()
// check if any taskar exists
assert.equal($('#qunit .content').length, 0, "check available active contents")
})
}, 2000);
}

View file

@ -1,5 +1,5 @@
// text module // text module
test('test text module behaviour with group_ids', function() { QUnit.test('test text module behaviour with group_ids', assert => {
// active textmodule without group_ids // active textmodule without group_ids
App.TextModule.refresh([ App.TextModule.refresh([
@ -46,9 +46,9 @@ test('test text module behaviour with group_ids', function() {
var currentCollection = textModule.currentCollection(); var currentCollection = textModule.currentCollection();
equal(currentCollection.length, 2, 'active textmodule') assert.equal(currentCollection.length, 2, 'active textmodule')
equal(currentCollection[0].id, 1) assert.equal(currentCollection[0].id, 1)
equal(currentCollection[1].id, 3) assert.equal(currentCollection[1].id, 3)
// trigered TextModulePreconditionUpdate with group_id // trigered TextModulePreconditionUpdate with group_id
@ -59,9 +59,9 @@ test('test text module behaviour with group_ids', function() {
currentCollection = textModule.currentCollection(); currentCollection = textModule.currentCollection();
equal(currentCollection.length, 2, 'trigered TextModulePreconditionUpdate with group_id') assert.equal(currentCollection.length, 2, 'trigered TextModulePreconditionUpdate with group_id')
equal(currentCollection[0].id, 1) assert.equal(currentCollection[0].id, 1)
equal(currentCollection[1].id, 3) assert.equal(currentCollection[1].id, 3)
// trigered TextModulePreconditionUpdate with wrong group_id // trigered TextModulePreconditionUpdate with wrong group_id
@ -72,8 +72,8 @@ test('test text module behaviour with group_ids', function() {
currentCollection = textModule.currentCollection(); currentCollection = textModule.currentCollection();
equal(currentCollection.length, 1, 'trigered TextModulePreconditionUpdate with wrong group_id') assert.equal(currentCollection.length, 1, 'trigered TextModulePreconditionUpdate with wrong group_id')
equal(currentCollection[0].id, 1) assert.equal(currentCollection[0].id, 1)
// trigered TextModulePreconditionUpdate with group_id but wrong taskKey // trigered TextModulePreconditionUpdate with group_id but wrong taskKey
@ -84,8 +84,8 @@ test('test text module behaviour with group_ids', function() {
currentCollection = textModule.currentCollection(); currentCollection = textModule.currentCollection();
equal(currentCollection.length, 1, 'trigered TextModulePreconditionUpdate with group_id but wrong taskKey - nothing has changed') assert.equal(currentCollection.length, 1, 'trigered TextModulePreconditionUpdate with group_id but wrong taskKey - nothing has changed')
equal(currentCollection[0].id, 1) assert.equal(currentCollection[0].id, 1)
// trigered TextModulePreconditionUpdate without group_id // trigered TextModulePreconditionUpdate without group_id
@ -96,8 +96,8 @@ test('test text module behaviour with group_ids', function() {
currentCollection = textModule.currentCollection(); currentCollection = textModule.currentCollection();
equal(currentCollection.length, 2, 'trigered TextModulePreconditionUpdate without group_id') assert.equal(currentCollection.length, 2, 'trigered TextModulePreconditionUpdate without group_id')
equal(currentCollection[0].id, 1) assert.equal(currentCollection[0].id, 1)
equal(currentCollection[1].id, 3) assert.equal(currentCollection[1].id, 3)
}); });

View file

@ -20,7 +20,7 @@ QUnit.module("ticket macro pending time check", hooks => {
return new Date(ticket.pending_time) - new Date() return new Date(ticket.pending_time) - new Date()
} }
test("5 days", assert => { QUnit.test("5 days", assert => {
var rules = { var rules = {
operator: "relative", operator: "relative",
range: "day", range: "day",
@ -30,7 +30,7 @@ QUnit.module("ticket macro pending time check", hooks => {
assert.equal(calculate_travel_on_ticket(rules), 60 * 60 * 24 * 5 * 1000) assert.equal(calculate_travel_on_ticket(rules), 60 * 60 * 24 * 5 * 1000)
}) })
test("5 minutes", assert => { QUnit.test("5 minutes", assert => {
var rules = { var rules = {
operator: "relative", operator: "relative",
range: "minute", range: "minute",
@ -40,7 +40,7 @@ QUnit.module("ticket macro pending time check", hooks => {
assert.equal(calculate_travel_on_ticket(rules), 60 * 3 * 1000) assert.equal(calculate_travel_on_ticket(rules), 60 * 3 * 1000)
}); });
test("10 hours", assert => { QUnit.test("10 hours", assert => {
var rules = { var rules = {
operator: "relative", operator: "relative",
range: "hour", range: "hour",

View file

@ -186,7 +186,7 @@ window.onload = function() {
* ------------------------------------------------------------------------ * ------------------------------------------------------------------------
*/ */
var testContains = function (key, value, ticket) { var testContains = function (assert, key, value, ticket) {
setting = { setting = {
"condition": { "condition": {
[key]: { [key]: {
@ -196,7 +196,7 @@ window.onload = function() {
} }
}; };
result = App.Ticket.selector(ticket, setting['condition']); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, true, result); assert.equal(result, true, result);
setting = { setting = {
"condition": { "condition": {
@ -207,10 +207,10 @@ window.onload = function() {
} }
}; };
result = App.Ticket.selector(ticket, setting['condition']); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, false, result); assert.equal(result, false, result);
}; };
var testIs = function (key, value, ticket) { var testIs = function (assert, key, value, ticket) {
setting = { setting = {
"condition": { "condition": {
[key]: { [key]: {
@ -220,7 +220,7 @@ window.onload = function() {
} }
}; };
result = App.Ticket.selector(ticket, setting['condition']); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, true, result); assert.equal(result, true, result);
setting = { setting = {
"condition": { "condition": {
@ -231,10 +231,10 @@ window.onload = function() {
} }
}; };
result = App.Ticket.selector(ticket, setting['condition']); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, false, result); assert.equal(result, false, result);
}; };
var testPreConditionUser = function (key, specificValue, ticket, session) { var testPreConditionUser = function (assert, key, specificValue, ticket, session) {
App.Session.set(6); App.Session.set(6);
setting = { setting = {
@ -248,7 +248,7 @@ window.onload = function() {
} }
}; };
result = App.Ticket.selector(ticket, setting['condition']); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, true, result); assert.equal(result, true, result);
setting = { setting = {
"condition": { "condition": {
@ -261,7 +261,7 @@ window.onload = function() {
} }
}; };
result = App.Ticket.selector(ticket, setting['condition']); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, false, result); assert.equal(result, false, result);
setting = { setting = {
"condition": { "condition": {
@ -275,7 +275,7 @@ window.onload = function() {
}; };
result = App.Ticket.selector(ticket, setting['condition']); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, true, result); assert.equal(result, true, result);
setting = { setting = {
"condition": { "condition": {
@ -288,7 +288,7 @@ window.onload = function() {
} }
}; };
result = App.Ticket.selector(ticket, setting['condition']); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, false, result); assert.equal(result, false, result);
setting = { setting = {
"condition": { "condition": {
@ -301,7 +301,7 @@ window.onload = function() {
} }
}; };
result = App.Ticket.selector(ticket, setting['condition']); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, false, result); assert.equal(result, false, result);
setting = { setting = {
"condition": { "condition": {
@ -312,7 +312,7 @@ window.onload = function() {
} }
}; };
result = App.Ticket.selector(ticket, setting['condition']); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, false, result); assert.equal(result, false, result);
setting = { setting = {
"condition": { "condition": {
@ -323,10 +323,10 @@ window.onload = function() {
} }
}; };
result = App.Ticket.selector(ticket, setting['condition']); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, true, result); assert.equal(result, true, result);
}; };
var testPreConditionOrganization = function (key, specificValue, ticket, session) { var testPreConditionOrganization = function (assert, key, specificValue, ticket, session) {
App.Session.set(6); App.Session.set(6);
setting = { setting = {
@ -340,7 +340,7 @@ window.onload = function() {
} }
}; };
result = App.Ticket.selector(ticket, setting['condition']); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, true, result); assert.equal(result, true, result);
setting = { setting = {
"condition": { "condition": {
@ -353,7 +353,7 @@ window.onload = function() {
} }
}; };
result = App.Ticket.selector(ticket, setting['condition']); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, false, result); assert.equal(result, false, result);
setting = { setting = {
"condition": { "condition": {
@ -367,7 +367,7 @@ window.onload = function() {
}; };
result = App.Ticket.selector(ticket, setting['condition']); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, true, result); assert.equal(result, true, result);
setting = { setting = {
"condition": { "condition": {
@ -380,7 +380,7 @@ window.onload = function() {
} }
}; };
result = App.Ticket.selector(ticket, setting['condition']); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, false, result); assert.equal(result, false, result);
setting = { setting = {
"condition": { "condition": {
@ -393,7 +393,7 @@ window.onload = function() {
} }
}; };
result = App.Ticket.selector(ticket, setting['condition']); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, false, result); assert.equal(result, false, result);
setting = { setting = {
"condition": { "condition": {
@ -404,7 +404,7 @@ window.onload = function() {
} }
}; };
result = App.Ticket.selector(ticket, setting['condition']); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, false, result); assert.equal(result, false, result);
setting = { setting = {
"condition": { "condition": {
@ -415,10 +415,10 @@ window.onload = function() {
} }
}; };
result = App.Ticket.selector(ticket, setting['condition']); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, true, result); assert.equal(result, true, result);
}; };
var testPreConditionTags = function (key, ticket) { var testPreConditionTags = function (assert, key, ticket) {
App.Session.set(6); App.Session.set(6);
setting = { setting = {
@ -430,7 +430,7 @@ window.onload = function() {
} }
}; };
result = App.Ticket.selector(ticket, setting['condition']); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, true, result); assert.equal(result, true, result);
setting = { setting = {
"condition": { "condition": {
@ -441,7 +441,7 @@ window.onload = function() {
} }
}; };
result = App.Ticket.selector(ticket, setting['condition']); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, false, result); assert.equal(result, false, result);
setting = { setting = {
"condition": { "condition": {
@ -452,7 +452,7 @@ window.onload = function() {
} }
}; };
result = App.Ticket.selector(ticket, setting['condition']); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, true, result); assert.equal(result, true, result);
setting = { setting = {
"condition": { "condition": {
@ -463,7 +463,7 @@ window.onload = function() {
} }
}; };
result = App.Ticket.selector(ticket, setting['condition']); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, false, result); assert.equal(result, false, result);
setting = { setting = {
"condition": { "condition": {
@ -474,7 +474,7 @@ window.onload = function() {
} }
}; };
result = App.Ticket.selector(ticket, setting['condition']); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, false, result); assert.equal(result, false, result);
setting = { setting = {
"condition": { "condition": {
@ -485,7 +485,7 @@ window.onload = function() {
} }
}; };
result = App.Ticket.selector(ticket, setting['condition']); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, false, result); assert.equal(result, false, result);
setting = { setting = {
"condition": { "condition": {
@ -496,7 +496,7 @@ window.onload = function() {
} }
}; };
result = App.Ticket.selector(ticket, setting['condition']); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, false, result); assert.equal(result, false, result);
setting = { setting = {
"condition": { "condition": {
@ -507,7 +507,7 @@ window.onload = function() {
} }
}; };
result = App.Ticket.selector(ticket, setting['condition']); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, true, result); assert.equal(result, true, result);
setting = { setting = {
"condition": { "condition": {
@ -518,7 +518,7 @@ window.onload = function() {
} }
}; };
result = App.Ticket.selector(ticket, setting['condition']); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, true, result); assert.equal(result, true, result);
setting = { setting = {
"condition": { "condition": {
@ -529,7 +529,7 @@ window.onload = function() {
} }
}; };
result = App.Ticket.selector(ticket, setting['condition']); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, false, result); assert.equal(result, false, result);
setting = { setting = {
"condition": { "condition": {
@ -540,7 +540,7 @@ window.onload = function() {
} }
}; };
result = App.Ticket.selector(ticket, setting['condition']); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, true, result); assert.equal(result, true, result);
setting = { setting = {
"condition": { "condition": {
@ -551,11 +551,11 @@ window.onload = function() {
} }
}; };
result = App.Ticket.selector(ticket, setting['condition']); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, true, result); assert.equal(result, true, result);
}; };
var testTime = function (key, value, ticket) { var testTime = function (assert, key, value, ticket) {
valueDate = new Date(value); valueDate = new Date(value);
compareDate = new Date( valueDate.setHours( valueDate.getHours() - 1 ) ).toISOString(); compareDate = new Date( valueDate.setHours( valueDate.getHours() - 1 ) ).toISOString();
setting = { setting = {
@ -567,7 +567,7 @@ window.onload = function() {
} }
}; };
result = App.Ticket.selector(ticket, setting['condition']); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, true, result); assert.equal(result, true, result);
valueDate = new Date(value); valueDate = new Date(value);
compareDate = new Date( valueDate.setHours( valueDate.getHours() + 1 ) ).toISOString(); compareDate = new Date( valueDate.setHours( valueDate.getHours() + 1 ) ).toISOString();
@ -580,7 +580,7 @@ window.onload = function() {
} }
}; };
result = App.Ticket.selector(ticket, setting['condition']); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, false, result); assert.equal(result, false, result);
valueDate = new Date(value); valueDate = new Date(value);
compareDate = new Date( valueDate.setHours( valueDate.getHours() - 1 ) ).toISOString(); compareDate = new Date( valueDate.setHours( valueDate.getHours() - 1 ) ).toISOString();
@ -593,7 +593,7 @@ window.onload = function() {
} }
}; };
result = App.Ticket.selector(ticket, setting['condition']); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, false, result); assert.equal(result, false, result);
valueDate = new Date(value); valueDate = new Date(value);
compareDate = new Date( valueDate.setHours( valueDate.getHours() + 1 ) ).toISOString(); compareDate = new Date( valueDate.setHours( valueDate.getHours() + 1 ) ).toISOString();
@ -606,7 +606,7 @@ window.onload = function() {
} }
}; };
result = App.Ticket.selector(ticket, setting['condition']); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, true, result); assert.equal(result, true, result);
valueDate = new Date(value); valueDate = new Date(value);
compareDate = new Date( valueDate.setHours( valueDate.getHours() + 2 ) ).toISOString(); compareDate = new Date( valueDate.setHours( valueDate.getHours() + 2 ) ).toISOString();
@ -620,10 +620,10 @@ window.onload = function() {
} }
}; };
result = App.Ticket.selector(ticket, setting['condition']); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, true, result); assert.equal(result, true, result);
}; };
var testTimeBeforeRelative = function (key, value, range, expectedResult, ticket) { var testTimeBeforeRelative = function (assert, key, value, range, expectedResult, ticket) {
setting = { setting = {
"condition": { "condition": {
[key]: { [key]: {
@ -634,10 +634,10 @@ window.onload = function() {
} }
}; };
result = App.Ticket.selector(ticket, setting['condition']); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, expectedResult, result); assert.equal(result, expectedResult, result);
}; };
var testTimeAfterRelative = function (key, value, range, expectedResult, ticket) { var testTimeAfterRelative = function (assert, key, value, range, expectedResult, ticket) {
setting = { setting = {
"condition": { "condition": {
[key]: { [key]: {
@ -648,10 +648,10 @@ window.onload = function() {
} }
}; };
result = App.Ticket.selector(ticket, setting['condition']); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, expectedResult, result); assert.equal(result, expectedResult, result);
}; };
var testTimeWithinNextRelative = function (key, value, range, expectedResult, ticket) { var testTimeWithinNextRelative = function (assert, key, value, range, expectedResult, ticket) {
setting = { setting = {
"condition": { "condition": {
[key]: { [key]: {
@ -662,10 +662,10 @@ window.onload = function() {
} }
}; };
result = App.Ticket.selector(ticket, setting['condition']); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, expectedResult, result); assert.equal(result, expectedResult, result);
}; };
var testTimeWithinLastRelative = function (key, value, range, expectedResult, ticket) { var testTimeWithinLastRelative = function (assert, key, value, range, expectedResult, ticket) {
setting = { setting = {
"condition": { "condition": {
[key]: { [key]: {
@ -676,7 +676,7 @@ window.onload = function() {
} }
}; };
result = App.Ticket.selector(ticket, setting['condition']); result = App.Ticket.selector(ticket, setting['condition']);
equal(result, expectedResult, result); assert.equal(result, expectedResult, result);
}; };
/* /*
@ -685,64 +685,64 @@ window.onload = function() {
* ------------------------------------------------------------------------ * ------------------------------------------------------------------------
*/ */
test("ticket number", function() { QUnit.test("ticket number", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testContains('ticket.number', '72', ticket); testContains(assert, 'ticket.number', '72', ticket);
}); });
test("ticket title", function() { QUnit.test("ticket title", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testContains('ticket.title', 'asd', ticket); testContains(assert, 'ticket.title', 'asd', ticket);
}); });
test("ticket customer_id", function() { QUnit.test("ticket customer_id", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
App.Session.set(6); App.Session.set(6);
testPreConditionUser('ticket.customer_id', '6', ticket, sessionData); testPreConditionUser(assert, 'ticket.customer_id', '6', ticket, sessionData);
}); });
test("ticket organization_id", function() { QUnit.test("ticket organization_id", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testPreConditionUser('ticket.organization_id', '6', ticket, sessionData); testPreConditionUser(assert, 'ticket.organization_id', '6', ticket, sessionData);
}); });
test("ticket group_id", function() { QUnit.test("ticket group_id", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testIs('ticket.group_id', ['1'], ticket, sessionData); testIs(assert, 'ticket.group_id', ['1'], ticket, sessionData);
}); });
test("ticket owner_id", function() { QUnit.test("ticket owner_id", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
App.Session.set(6); App.Session.set(6);
testPreConditionUser('ticket.owner_id', '6', ticket, sessionData); testPreConditionUser(assert, 'ticket.owner_id', '6', ticket, sessionData);
}); });
test("ticket state_id", function() { QUnit.test("ticket state_id", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testIs('ticket.state_id', ['4'], ticket, sessionData); testIs(assert, 'ticket.state_id', ['4'], ticket, sessionData);
}); });
test("ticket pending_time", function() { QUnit.test("ticket pending_time", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testTime('ticket.pending_time', ticket.pending_time, ticket); testTime(assert, 'ticket.pending_time', ticket.pending_time, ticket);
// ------------------------- // -------------------------
// BEFORE TIME // BEFORE TIME
@ -750,30 +750,30 @@ window.onload = function() {
// hour // hour
ticket.pending_time = new Date().toISOString(); ticket.pending_time = new Date().toISOString();
testTimeBeforeRelative('ticket.pending_time', 1, 'hour', false, ticket); testTimeBeforeRelative(assert, 'ticket.pending_time', 1, 'hour', false, ticket);
compareDate = new Date(); compareDate = new Date();
compareDate.setTime( compareDate.getTime() - 60 * 60 * 2 * 1000); compareDate.setTime( compareDate.getTime() - 60 * 60 * 2 * 1000);
ticket.pending_time = compareDate.toISOString(); ticket.pending_time = compareDate.toISOString();
testTimeBeforeRelative('ticket.pending_time', 1, 'hour', true, ticket); testTimeBeforeRelative(assert, 'ticket.pending_time', 1, 'hour', true, ticket);
// day // day
ticket.pending_time = new Date().toISOString(); ticket.pending_time = new Date().toISOString();
testTimeBeforeRelative('ticket.pending_time', 1, 'day', false, ticket); testTimeBeforeRelative(assert, 'ticket.pending_time', 1, 'day', false, ticket);
compareDate = new Date(); compareDate = new Date();
compareDate.setTime( compareDate.getTime() - 60 * 60 * 48 * 1000); compareDate.setTime( compareDate.getTime() - 60 * 60 * 48 * 1000);
ticket.pending_time = compareDate.toISOString(); ticket.pending_time = compareDate.toISOString();
testTimeBeforeRelative('ticket.pending_time', 1, 'day', true, ticket); testTimeBeforeRelative(assert, 'ticket.pending_time', 1, 'day', true, ticket);
// year // year
ticket.pending_time = new Date().toISOString(); ticket.pending_time = new Date().toISOString();
testTimeBeforeRelative('ticket.pending_time', 1, 'year', false, ticket); testTimeBeforeRelative(assert, 'ticket.pending_time', 1, 'year', false, ticket);
compareDate = new Date(); compareDate = new Date();
compareDate.setTime( compareDate.getTime() - 60 * 60 * 365 * 2 * 1000); compareDate.setTime( compareDate.getTime() - 60 * 60 * 365 * 2 * 1000);
ticket.pending_time = compareDate.toISOString(); ticket.pending_time = compareDate.toISOString();
testTimeBeforeRelative('ticket.pending_time', 1, 'year', true, ticket); testTimeBeforeRelative(assert, 'ticket.pending_time', 1, 'year', true, ticket);
// ------------------------- // -------------------------
// AFTER TIME // AFTER TIME
@ -781,30 +781,30 @@ window.onload = function() {
// hour // hour
ticket.pending_time = new Date().toISOString(); ticket.pending_time = new Date().toISOString();
testTimeAfterRelative('ticket.pending_time', 1, 'hour', false, ticket); testTimeAfterRelative(assert, 'ticket.pending_time', 1, 'hour', false, ticket);
compareDate = new Date(); compareDate = new Date();
compareDate.setTime( compareDate.getTime() + 60 * 60 * 2 * 1000); compareDate.setTime( compareDate.getTime() + 60 * 60 * 2 * 1000);
ticket.pending_time = compareDate.toISOString(); ticket.pending_time = compareDate.toISOString();
testTimeAfterRelative('ticket.pending_time', 1, 'hour', true, ticket); testTimeAfterRelative(assert, 'ticket.pending_time', 1, 'hour', true, ticket);
// day // day
ticket.pending_time = new Date().toISOString(); ticket.pending_time = new Date().toISOString();
testTimeAfterRelative('ticket.pending_time', 1, 'day', false, ticket); testTimeAfterRelative(assert, 'ticket.pending_time', 1, 'day', false, ticket);
compareDate = new Date(); compareDate = new Date();
compareDate.setTime( compareDate.getTime() + 60 * 60 * 48 * 1000); compareDate.setTime( compareDate.getTime() + 60 * 60 * 48 * 1000);
ticket.pending_time = compareDate.toISOString(); ticket.pending_time = compareDate.toISOString();
testTimeAfterRelative('ticket.pending_time', 1, 'day', true, ticket); testTimeAfterRelative(assert, 'ticket.pending_time', 1, 'day', true, ticket);
// year // year
ticket.pending_time = new Date().toISOString(); ticket.pending_time = new Date().toISOString();
testTimeAfterRelative('ticket.pending_time', 1, 'year', false, ticket); testTimeAfterRelative(assert, 'ticket.pending_time', 1, 'year', false, ticket);
compareDate = new Date(); compareDate = new Date();
compareDate.setTime( compareDate.getTime() + 60 * 60 * 365 * 2 * 1000); compareDate.setTime( compareDate.getTime() + 60 * 60 * 365 * 2 * 1000);
ticket.pending_time = compareDate.toISOString(); ticket.pending_time = compareDate.toISOString();
testTimeAfterRelative('ticket.pending_time', 1, 'year', true, ticket); testTimeAfterRelative(assert, 'ticket.pending_time', 1, 'year', true, ticket);
// ------------------------- // -------------------------
@ -815,12 +815,12 @@ window.onload = function() {
compareDate = new Date(); compareDate = new Date();
compareDate.setTime( compareDate.getTime() - 60 * 60 * 0.5 * 1000); compareDate.setTime( compareDate.getTime() - 60 * 60 * 0.5 * 1000);
ticket.pending_time = compareDate.toISOString(); ticket.pending_time = compareDate.toISOString();
testTimeWithinLastRelative('ticket.pending_time', 1, 'hour', true, ticket); testTimeWithinLastRelative(assert, 'ticket.pending_time', 1, 'hour', true, ticket);
compareDate = new Date(); compareDate = new Date();
compareDate.setTime( compareDate.getTime() - 60 * 60 * 2 * 1000); compareDate.setTime( compareDate.getTime() - 60 * 60 * 2 * 1000);
ticket.pending_time = compareDate.toISOString(); ticket.pending_time = compareDate.toISOString();
testTimeWithinLastRelative('ticket.pending_time', 1, 'hour', false, ticket); testTimeWithinLastRelative(assert, 'ticket.pending_time', 1, 'hour', false, ticket);
// ------------------------- // -------------------------
// WITHIN NEXT TIME // WITHIN NEXT TIME
@ -830,289 +830,289 @@ window.onload = function() {
compareDate = new Date(); compareDate = new Date();
compareDate.setTime( compareDate.getTime() + 60 * 60 * 0.5 * 1000); compareDate.setTime( compareDate.getTime() + 60 * 60 * 0.5 * 1000);
ticket.pending_time = compareDate.toISOString(); ticket.pending_time = compareDate.toISOString();
testTimeWithinNextRelative('ticket.pending_time', 1, 'hour', true, ticket); testTimeWithinNextRelative(assert, 'ticket.pending_time', 1, 'hour', true, ticket);
compareDate = new Date(); compareDate = new Date();
compareDate.setTime( compareDate.getTime() + 60 * 60 * 2 * 1000); compareDate.setTime( compareDate.getTime() + 60 * 60 * 2 * 1000);
ticket.pending_time = compareDate.toISOString(); ticket.pending_time = compareDate.toISOString();
testTimeWithinNextRelative('ticket.pending_time', 1, 'hour', false, ticket); testTimeWithinNextRelative(assert, 'ticket.pending_time', 1, 'hour', false, ticket);
}); });
test("ticket priority_id", function() { QUnit.test("ticket priority_id", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testIs('ticket.priority_id', ['2'], ticket, sessionData); testIs(assert, 'ticket.priority_id', ['2'], ticket, sessionData);
}); });
test("ticket escalation_at", function() { QUnit.test("ticket escalation_at", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testTime('ticket.escalation_at', ticket.escalation_at, ticket); testTime(assert, 'ticket.escalation_at', ticket.escalation_at, ticket);
}); });
test("ticket last_contact_agent_at", function() { QUnit.test("ticket last_contact_agent_at", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testTime('ticket.last_contact_agent_at', ticket.last_contact_agent_at, ticket); testTime(assert, 'ticket.last_contact_agent_at', ticket.last_contact_agent_at, ticket);
}); });
test("ticket last_contact_at", function() { QUnit.test("ticket last_contact_at", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testTime('ticket.last_contact_at', ticket.last_contact_at, ticket); testTime(assert, 'ticket.last_contact_at', ticket.last_contact_at, ticket);
}); });
test("ticket last_contact_customer_at", function() { QUnit.test("ticket last_contact_customer_at", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testTime('ticket.last_contact_customer_at', ticket.last_contact_customer_at, ticket); testTime(assert, 'ticket.last_contact_customer_at', ticket.last_contact_customer_at, ticket);
}); });
test("ticket first_response_at", function() { QUnit.test("ticket first_response_at", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testTime('ticket.first_response_at', ticket.first_response_at, ticket); testTime(assert, 'ticket.first_response_at', ticket.first_response_at, ticket);
}); });
test("ticket close_at", function() { QUnit.test("ticket close_at", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testTime('ticket.close_at', ticket.close_at, ticket); testTime(assert, 'ticket.close_at', ticket.close_at, ticket);
}); });
test("ticket created_by_id", function() { QUnit.test("ticket created_by_id", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
App.Session.set(6); App.Session.set(6);
testPreConditionUser('ticket.created_by_id', '6', ticket, sessionData); testPreConditionUser(assert, 'ticket.created_by_id', '6', ticket, sessionData);
}); });
test("ticket created_at", function() { QUnit.test("ticket created_at", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testTime('ticket.created_at', ticket.created_at, ticket); testTime(assert, 'ticket.created_at', ticket.created_at, ticket);
}); });
test("ticket updated_at", function() { QUnit.test("ticket updated_at", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testTime('ticket.updated_at', ticket.updated_at, ticket); testTime(assert, 'ticket.updated_at', ticket.updated_at, ticket);
}); });
test("ticket updated_by_id", function() { QUnit.test("ticket updated_by_id", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
App.Session.set(6); App.Session.set(6);
testPreConditionUser('ticket.updated_by_id', '6', ticket, sessionData); testPreConditionUser(assert, 'ticket.updated_by_id', '6', ticket, sessionData);
}); });
test("ticket tags", function() { QUnit.test("ticket tags", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testPreConditionTags('ticket.tags', ticket); testPreConditionTags(assert, 'ticket.tags', ticket);
}); });
test("article from", function() { QUnit.test("article from", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testContains('article.from', 'Admin', ticket); testContains(assert, 'article.from', 'Admin', ticket);
}); });
test("article to", function() { QUnit.test("article to", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testContains('article.to', 'agent1', ticket); testContains(assert, 'article.to', 'agent1', ticket);
}); });
test("article cc", function() { QUnit.test("article cc", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testContains('article.cc', 'agent1+cc', ticket); testContains(assert, 'article.cc', 'agent1+cc', ticket);
}); });
test("article subject", function() { QUnit.test("article subject", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testContains('article.subject', 'asdf', ticket); testContains(assert, 'article.subject', 'asdf', ticket);
}); });
test("article type_id", function() { QUnit.test("article type_id", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testIs('article.type_id', ['1'], ticket); testIs(assert, 'article.type_id', ['1'], ticket);
}); });
test("article sender_id", function() { QUnit.test("article sender_id", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testIs('article.sender_id', ['1'], ticket); testIs(assert, 'article.sender_id', ['1'], ticket);
}); });
test("article internal", function() { QUnit.test("article internal", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testIs('article.internal', ['false'], ticket); testIs(assert, 'article.internal', ['false'], ticket);
}); });
test("article created_by_id", function() { QUnit.test("article created_by_id", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testPreConditionUser('article.created_by_id', '6', ticket, sessionData); testPreConditionUser(assert, 'article.created_by_id', '6', ticket, sessionData);
}); });
test("customer login", function() { QUnit.test("customer login", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testContains('customer.login', 'hc', ticket); testContains(assert, 'customer.login', 'hc', ticket);
}); });
test("customer firstname", function() { QUnit.test("customer firstname", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testContains('customer.firstname', 'Harald', ticket); testContains(assert, 'customer.firstname', 'Harald', ticket);
}); });
test("customer lastname", function() { QUnit.test("customer lastname", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testContains('customer.lastname', 'Customer', ticket); testContains(assert, 'customer.lastname', 'Customer', ticket);
}); });
test("customer email", function() { QUnit.test("customer email", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testContains('customer.email', 'hc', ticket); testContains(assert, 'customer.email', 'hc', ticket);
}); });
test("customer organization_id", function() { QUnit.test("customer organization_id", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testPreConditionOrganization('customer.organization_id', '6', ticket, sessionData); testPreConditionOrganization(assert, 'customer.organization_id', '6', ticket, sessionData);
}); });
test("customer created_by_id", function() { QUnit.test("customer created_by_id", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testPreConditionUser('customer.created_by_id', '6', ticket, sessionData); testPreConditionUser(assert, 'customer.created_by_id', '6', ticket, sessionData);
}); });
test("customer created_at", function() { QUnit.test("customer created_at", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testTime('customer.created_at', ticket.customer.created_at, ticket); testTime(assert, 'customer.created_at', ticket.customer.created_at, ticket);
}); });
test("customer updated_by_id", function() { QUnit.test("customer updated_by_id", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testPreConditionUser('customer.updated_by_id', '6', ticket, sessionData); testPreConditionUser(assert, 'customer.updated_by_id', '6', ticket, sessionData);
}); });
test("customer missing_field", function() { QUnit.test("customer missing_field", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testContains('customer.missing_field', '', ticket); testContains(assert, 'customer.missing_field', '', ticket);
}); });
test("customer web", function() { QUnit.test("customer web", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testContains('customer.web', 'cool', ticket); testContains(assert, 'customer.web', 'cool', ticket);
}); });
test("organization name", function() { QUnit.test("organization name", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testContains('organization.name', 'gmbh', ticket); testContains(assert, 'organization.name', 'gmbh', ticket);
}); });
test("organization shared", function() { QUnit.test("organization shared", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testIs('organization.shared', true, ticket); testIs(assert, 'organization.shared', true, ticket);
}); });
test("organization created_by_id", function() { QUnit.test("organization created_by_id", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testPreConditionUser('organization.created_by_id', 6, ticket); testPreConditionUser(assert, 'organization.created_by_id', 6, ticket);
}); });
test("organization updated_by_id", function() { QUnit.test("organization updated_by_id", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testPreConditionUser('organization.updated_by_id', 6, ticket); testPreConditionUser(assert, 'organization.updated_by_id', 6, ticket);
}); });
test("organization created_at", function() { QUnit.test("organization created_at", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testTime('organization.created_at', ticket.organization.created_at, ticket); testTime(assert, 'organization.created_at', ticket.organization.created_at, ticket);
}); });
test("organization updated_at", function() { QUnit.test("organization updated_at", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testTime('organization.updated_at', ticket.organization.updated_at, ticket); testTime(assert, 'organization.updated_at', ticket.organization.updated_at, ticket);
}); });
test("organization domain_assignment", function() { QUnit.test("organization domain_assignment", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testIs('organization.domain_assignment', false, ticket); testIs(assert, 'organization.domain_assignment', false, ticket);
}); });
test("organization domain", function() { QUnit.test("organization domain", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testContains('organization.domain', 'cool', ticket); testContains(assert, 'organization.domain', 'cool', ticket);
}); });
test("ticket mention user_id", function() { QUnit.test("ticket mention user_id", assert => {
ticket = new App.Ticket(); ticket = new App.Ticket();
ticket.load(ticketData); ticket.load(ticketData);
testPreConditionUser('ticket.mention_user_ids', '6', ticket, sessionData); testPreConditionUser(assert, 'ticket.mention_user_ids', '6', ticket, sessionData);
}); });
} }

View file

@ -1,5 +1,5 @@
// date picker timezone conversion for display // date picker timezone conversion for display
test("date picker", function() { QUnit.test("date picker", assert => {
Date.prototype.getTimezoneOffset2 = Date.prototype.getTimezoneOffset Date.prototype.getTimezoneOffset2 = Date.prototype.getTimezoneOffset
Date.prototype.getTimezoneOffset = function() { return -360 } Date.prototype.getTimezoneOffset = function() { return -360 }
@ -12,7 +12,7 @@ test("date picker", function() {
date_time_parsed = new Date(Date.parse(obj_date_time.value)) date_time_parsed = new Date(Date.parse(obj_date_time.value))
date_time_input = el_date_time.find('.js-datepicker').datepicker('getDate') date_time_input = el_date_time.find('.js-datepicker').datepicker('getDate')
equal(date_time_parsed.getDate(), date_time_input.getDate(), 'datetime matching day') assert.equal(date_time_parsed.getDate(), date_time_input.getDate(), 'datetime matching day')
obj_date = { obj_date = {
name: 'test', name: 'test',
@ -23,14 +23,14 @@ test("date picker", function() {
date_parsed = new Date(Date.parse(obj_date.value)) date_parsed = new Date(Date.parse(obj_date.value))
date_input = el_date.find('.js-datepicker').datepicker('getUTCDate') date_input = el_date.find('.js-datepicker').datepicker('getUTCDate')
equal(date_parsed.getDate(), date_input.getDate(), 'date matching day') assert.equal(date_parsed.getDate(), date_input.getDate(), 'date matching day')
Date.prototype.getTimezoneOffset = Date.prototype.getTimezoneOffset2 Date.prototype.getTimezoneOffset = Date.prototype.getTimezoneOffset2
Date.prototype.getTimezoneOffset2 = undefined Date.prototype.getTimezoneOffset2 = undefined
}) })
// pretty date // pretty date
test("check pretty date", function() { QUnit.test("check pretty date", assert => {
var current = new Date() var current = new Date()
// use date formatting as functions to make it more flexible // use date formatting as functions to make it more flexible
prettyDateRelative(current, '', true, 'relative'); prettyDateRelative(current, '', true, 'relative');
@ -41,43 +41,43 @@ test("check pretty date", function() {
function prettyDateRelative(current, escalation, long, type) { function prettyDateRelative(current, escalation, long, type) {
var result = App.PrettyDate.humanTime(current, escalation, long, type); var result = App.PrettyDate.humanTime(current, escalation, long, type);
equal(result, 'just now', 'just now') assert.equal(result, 'just now', 'just now')
result = App.PrettyDate.humanTime(current - 15000, escalation, long, type); result = App.PrettyDate.humanTime(current - 15000, escalation, long, type);
equal(result, 'just now', 'just now') assert.equal(result, 'just now', 'just now')
result = App.PrettyDate.humanTime(current - 60000, escalation, long, type); result = App.PrettyDate.humanTime(current - 60000, escalation, long, type);
equal(result, '1 minute ago', '1 min ago') assert.equal(result, '1 minute ago', '1 min ago')
result = App.PrettyDate.humanTime(current - (2 * 60000), escalation, long, type); result = App.PrettyDate.humanTime(current - (2 * 60000), escalation, long, type);
equal(result, '2 minutes ago', '2 min ago') assert.equal(result, '2 minutes ago', '2 min ago')
result = App.PrettyDate.humanTime(current - (60000 * 60), escalation, long, type); result = App.PrettyDate.humanTime(current - (60000 * 60), escalation, long, type);
equal(result, '1 hour ago', '1 hour') assert.equal(result, '1 hour ago', '1 hour')
result = App.PrettyDate.humanTime(current - (60000 * 60 * 2), escalation, long, type); result = App.PrettyDate.humanTime(current - (60000 * 60 * 2), escalation, long, type);
equal(result, '2 hours ago', '2 hours') assert.equal(result, '2 hours ago', '2 hours')
result = App.PrettyDate.humanTime(current - (60000 * 60 * 2.5), escalation, long, type); result = App.PrettyDate.humanTime(current - (60000 * 60 * 2.5), escalation, long, type);
equal(result, '2 hours 30 minutes ago', '2.5 hours') assert.equal(result, '2 hours 30 minutes ago', '2.5 hours')
result = App.PrettyDate.humanTime(current - (60000 * 60 * 12.5), escalation, long, type); result = App.PrettyDate.humanTime(current - (60000 * 60 * 12.5), escalation, long, type);
equal(result, '12 hours ago', '12.5 hours') assert.equal(result, '12 hours ago', '12.5 hours')
result = App.PrettyDate.humanTime(current - (60000 * 60 * 24), escalation, long, type); result = App.PrettyDate.humanTime(current - (60000 * 60 * 24), escalation, long, type);
equal(result, '1 day ago', '1 day') assert.equal(result, '1 day ago', '1 day')
result = App.PrettyDate.humanTime(current - (60000 * 60 * 24 * 2), escalation, long, type); result = App.PrettyDate.humanTime(current - (60000 * 60 * 24 * 2), escalation, long, type);
equal(result, '2 days ago', '2 days') assert.equal(result, '2 days ago', '2 days')
result = App.PrettyDate.humanTime(current - (60000 * 60 * 24 * 2) - (60000 * 5), escalation, long, type); result = App.PrettyDate.humanTime(current - (60000 * 60 * 24 * 2) - (60000 * 5), escalation, long, type);
equal(result, '2 days ago', '2 days') assert.equal(result, '2 days ago', '2 days')
result = App.PrettyDate.humanTime(current - (60000 * 60 * 24 * 2.5), escalation, long, type); result = App.PrettyDate.humanTime(current - (60000 * 60 * 24 * 2.5), escalation, long, type);
equal(result, '2 days 12 hours ago', '2.5 days') assert.equal(result, '2 days 12 hours ago', '2.5 days')
result = App.PrettyDate.humanTime(current - (60000 * 60 * 24 * 2.5) - (60000 * 5), escalation, long, type); result = App.PrettyDate.humanTime(current - (60000 * 60 * 24 * 2.5) - (60000 * 5), escalation, long, type);
equal(result, '2 days 12 hours ago', '2.5 days') assert.equal(result, '2 days 12 hours ago', '2.5 days')
result = App.PrettyDate.humanTime(current - (60000 * 60 * 24 * 10.5), escalation, long, type); result = App.PrettyDate.humanTime(current - (60000 * 60 * 24 * 10.5), escalation, long, type);
var pastDate = new Date(current - (60000 * 60 * 24 * 10.5)) var pastDate = new Date(current - (60000 * 60 * 24 * 10.5))
@ -91,7 +91,7 @@ test("check pretty date", function() {
} }
var yyyy = pastDate.getFullYear(); var yyyy = pastDate.getFullYear();
// mm/dd/yyyy // mm/dd/yyyy
equal(result, mm+'/'+dd+'/'+yyyy, '10.5 days') assert.equal(result, mm+'/'+dd+'/'+yyyy, '10.5 days')
result = App.PrettyDate.humanTime(current - (60000 * 60 * 24 * 30), escalation, long, type); result = App.PrettyDate.humanTime(current - (60000 * 60 * 24 * 30), escalation, long, type);
var pastDate = new Date(current - (60000 * 60 * 24 * 30)) var pastDate = new Date(current - (60000 * 60 * 24 * 30))
@ -105,228 +105,228 @@ test("check pretty date", function() {
} }
var yyyy = pastDate.getFullYear(); var yyyy = pastDate.getFullYear();
// mm/dd/yyyy // mm/dd/yyyy
equal(result, mm+'/'+dd+'/'+yyyy, '30 days') assert.equal(result, mm+'/'+dd+'/'+yyyy, '30 days')
// future // future
current = new Date() current = new Date()
result = App.PrettyDate.humanTime(current, escalation, long, type); result = App.PrettyDate.humanTime(current, escalation, long, type);
equal(result, 'just now', 'just now') assert.equal(result, 'just now', 'just now')
result = App.PrettyDate.humanTime(current.getTime() + 55000, escalation, long, type); result = App.PrettyDate.humanTime(current.getTime() + 55000, escalation, long, type);
equal(result, 'just now', 'just now') assert.equal(result, 'just now', 'just now')
result = App.PrettyDate.humanTime(current.getTime() + 65000, escalation, long, type); result = App.PrettyDate.humanTime(current.getTime() + 65000, escalation, long, type);
equal(result, 'in 1 minute', 'in 1 min') assert.equal(result, 'in 1 minute', 'in 1 min')
result = App.PrettyDate.humanTime(current.getTime() + (2 * 65000), escalation, long, type); result = App.PrettyDate.humanTime(current.getTime() + (2 * 65000), escalation, long, type);
equal(result, 'in 2 minutes', 'in 2 min') assert.equal(result, 'in 2 minutes', 'in 2 min')
result = App.PrettyDate.humanTime(current.getTime() + (60500 * 60), escalation, long, type); result = App.PrettyDate.humanTime(current.getTime() + (60500 * 60), escalation, long, type);
equal(result, 'in 1 hour', 'in 1 hour') assert.equal(result, 'in 1 hour', 'in 1 hour')
result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 2), escalation, long, type); result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 2), escalation, long, type);
equal(result, 'in 2 hours', 'in 2 hours') assert.equal(result, 'in 2 hours', 'in 2 hours')
result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 2.5), escalation, long, type); result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 2.5), escalation, long, type);
equal(result, 'in 2 hours 30 minutes', 'in 2.5 hours') assert.equal(result, 'in 2 hours 30 minutes', 'in 2.5 hours')
result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 24), escalation, long, type) ; result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 24), escalation, long, type) ;
equal(result, 'in 1 day', 'in 1 day') assert.equal(result, 'in 1 day', 'in 1 day')
result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 24 * 2), escalation, long, type); result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 24 * 2), escalation, long, type);
equal(result, 'in 2 days', 'in 2 days') assert.equal(result, 'in 2 days', 'in 2 days')
result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 24 * 2.5), escalation, long, type); result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 24 * 2.5), escalation, long, type);
equal(result, 'in 2 days 12 hours', 'in 2.5 days') assert.equal(result, 'in 2 days 12 hours', 'in 2.5 days')
result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 24 * 5.5), escalation, long, type); result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 24 * 5.5), escalation, long, type);
equal(result, 'in 5 days 12 hours', 'in 30.5 days') assert.equal(result, 'in 5 days 12 hours', 'in 30.5 days')
result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 24 * 30.5), escalation, long, type); result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 24 * 30.5), escalation, long, type);
equal(result, 'in 30 days', 'in 30.5 days') assert.equal(result, 'in 30 days', 'in 30.5 days')
}; };
function prettyDateAbsolute(current, escalation, long, type) { function prettyDateAbsolute(current, escalation, long, type) {
var result = App.PrettyDate.humanTime(current, escalation, long, type); var result = App.PrettyDate.humanTime(current, escalation, long, type);
equal(result, 'just now', 'just now') // by defaul < 1 min is just now assert.equal(result, 'just now', 'just now') // by defaul < 1 min is just now
result = App.PrettyDate.humanTime(current - 15000, escalation, long, type); result = App.PrettyDate.humanTime(current - 15000, escalation, long, type);
equal(result, 'just now', 'just now') // by default < 1 min is just now assert.equal(result, 'just now', 'just now') // by default < 1 min is just now
result = App.PrettyDate.humanTime(current - 60000, escalation, long, type); result = App.PrettyDate.humanTime(current - 60000, escalation, long, type);
diff = 60 diff = 60
equal(result, getAbsolute(new Date(current - 60000), diff), '1 min ago') assert.equal(result, getAbsolute(new Date(current - 60000), diff), '1 min ago')
result = App.PrettyDate.humanTime(current - (2 * 60000), escalation, long, type); result = App.PrettyDate.humanTime(current - (2 * 60000), escalation, long, type);
diff = 2 * 60 diff = 2 * 60
equal(result, getAbsolute(new Date(current - (2 * 60000)), diff), '2 min ago') assert.equal(result, getAbsolute(new Date(current - (2 * 60000)), diff), '2 min ago')
result = App.PrettyDate.humanTime(current - (60000 * 60), escalation, long, type); result = App.PrettyDate.humanTime(current - (60000 * 60), escalation, long, type);
diff = 60 * 60 diff = 60 * 60
equal(result, getAbsolute(new Date(current - (60000 * 60)), diff), '1 hour') assert.equal(result, getAbsolute(new Date(current - (60000 * 60)), diff), '1 hour')
result = App.PrettyDate.humanTime(current - (60000 * 60 * 2), escalation, long, type); result = App.PrettyDate.humanTime(current - (60000 * 60 * 2), escalation, long, type);
diff = 60 * 60 * 2 diff = 60 * 60 * 2
equal(result, getAbsolute(new Date(current - (60000 * 60 * 2)), diff), '2 hours') assert.equal(result, getAbsolute(new Date(current - (60000 * 60 * 2)), diff), '2 hours')
result = App.PrettyDate.humanTime(current - (60000 * 60 * 2.5), escalation, long, type); result = App.PrettyDate.humanTime(current - (60000 * 60 * 2.5), escalation, long, type);
diff = 60 * 60 * 2.5 diff = 60 * 60 * 2.5
equal(result, getAbsolute(new Date(current - (60000 * 60 * 2.5)), diff), '2.5 hours') assert.equal(result, getAbsolute(new Date(current - (60000 * 60 * 2.5)), diff), '2.5 hours')
result = App.PrettyDate.humanTime(current - (60000 * 60 * 12.5), escalation, long, type); result = App.PrettyDate.humanTime(current - (60000 * 60 * 12.5), escalation, long, type);
diff = 60 * 60 * 12.5 diff = 60 * 60 * 12.5
equal(result, getAbsolute(new Date(current - (60000 * 60 * 12.5)), diff), '12.5 hours') assert.equal(result, getAbsolute(new Date(current - (60000 * 60 * 12.5)), diff), '12.5 hours')
result = App.PrettyDate.humanTime(current - (60000 * 60 * 24), escalation, long, type); result = App.PrettyDate.humanTime(current - (60000 * 60 * 24), escalation, long, type);
diff = 60 * 60 * 25 diff = 60 * 60 * 25
equal(result, getAbsolute(new Date(current - (60000 * 60 * 24)), diff), '1 day') assert.equal(result, getAbsolute(new Date(current - (60000 * 60 * 24)), diff), '1 day')
result = App.PrettyDate.humanTime(current - (60000 * 60 * 24 * 2), escalation, long, type); result = App.PrettyDate.humanTime(current - (60000 * 60 * 24 * 2), escalation, long, type);
diff = 60 * 60 * 25 * 2 diff = 60 * 60 * 25 * 2
equal(result, getAbsolute(new Date(current - (60000 * 60 * 24 * 2)), diff), '2 days') assert.equal(result, getAbsolute(new Date(current - (60000 * 60 * 24 * 2)), diff), '2 days')
result = App.PrettyDate.humanTime(current - (60000 * 60 * 24 * 2) - (60000 * 5), escalation, long, type); result = App.PrettyDate.humanTime(current - (60000 * 60 * 24 * 2) - (60000 * 5), escalation, long, type);
diff = (60 * 60 * 24 * 2) - (60 * 5) diff = (60 * 60 * 24 * 2) - (60 * 5)
equal(result, getAbsolute(new Date(current - (60000 * 60 * 24 * 2) - (60000 * 5)), diff), '2 days') assert.equal(result, getAbsolute(new Date(current - (60000 * 60 * 24 * 2) - (60000 * 5)), diff), '2 days')
result = App.PrettyDate.humanTime(current - (60000 * 60 * 24 * 2.5), escalation, long, type); result = App.PrettyDate.humanTime(current - (60000 * 60 * 24 * 2.5), escalation, long, type);
diff = (60 * 60 * 24 * 2.5) diff = (60 * 60 * 24 * 2.5)
equal(result, getAbsolute(new Date(current - (60000 * 60 * 24 * 2.5)), diff), '2.5 days') assert.equal(result, getAbsolute(new Date(current - (60000 * 60 * 24 * 2.5)), diff), '2.5 days')
result = App.PrettyDate.humanTime(current - (60000 * 60 * 24 * 2.5) - (60000 * 5), escalation, long, type); result = App.PrettyDate.humanTime(current - (60000 * 60 * 24 * 2.5) - (60000 * 5), escalation, long, type);
diff = (60 * 60 * 24 * 2.5) - (60 * 5) diff = (60 * 60 * 24 * 2.5) - (60 * 5)
equal(result, getAbsolute(new Date(current - (60000 * 60 * 24 * 2.5) - (60000 * 5)), diff), '2.5 days') assert.equal(result, getAbsolute(new Date(current - (60000 * 60 * 24 * 2.5) - (60000 * 5)), diff), '2.5 days')
// future // future
current = new Date() current = new Date()
result = App.PrettyDate.humanTime(current, escalation, long, type); result = App.PrettyDate.humanTime(current, escalation, long, type);
equal(result, 'just now', 'just now') // no change, because < 1 min = just now assert.equal(result, 'just now', 'just now') // no change, because < 1 min = just now
result = App.PrettyDate.humanTime(current.getTime() + 55000, escalation, long, type); result = App.PrettyDate.humanTime(current.getTime() + 55000, escalation, long, type);
equal(result, 'just now', 'just now') // no change, because < 1 min = just now assert.equal(result, 'just now', 'just now') // no change, because < 1 min = just now
result = App.PrettyDate.humanTime(current.getTime() + 65000, escalation, long, type); result = App.PrettyDate.humanTime(current.getTime() + 65000, escalation, long, type);
diff = 60 diff = 60
equal(result, getAbsolute(new Date(current.getTime() + 65000), diff), 'in 1 min') assert.equal(result, getAbsolute(new Date(current.getTime() + 65000), diff), 'in 1 min')
result = App.PrettyDate.humanTime(current.getTime() + (2 * 65000), escalation, long, type); result = App.PrettyDate.humanTime(current.getTime() + (2 * 65000), escalation, long, type);
diff = 2 * 60 diff = 2 * 60
equal(result, getAbsolute(new Date(current.getTime() + (2 * 65000)), diff), 'in 2 min') assert.equal(result, getAbsolute(new Date(current.getTime() + (2 * 65000)), diff), 'in 2 min')
result = App.PrettyDate.humanTime(current.getTime() + (60500 * 60), escalation, long, type) ; result = App.PrettyDate.humanTime(current.getTime() + (60500 * 60), escalation, long, type) ;
diff = 60 * 60 diff = 60 * 60
equal(result, getAbsolute(new Date(current.getTime() + (60500 * 60)), diff), 'in 1 hour') assert.equal(result, getAbsolute(new Date(current.getTime() + (60500 * 60)), diff), 'in 1 hour')
result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 2), escalation, long, type); result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 2), escalation, long, type);
diff = 60 * 60 * 2 diff = 60 * 60 * 2
equal(result, getAbsolute(new Date(current.getTime() + (60050 * 60 * 2)), diff), 'in 2 hours') assert.equal(result, getAbsolute(new Date(current.getTime() + (60050 * 60 * 2)), diff), 'in 2 hours')
result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 2.5), escalation, long, type); result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 2.5), escalation, long, type);
diff = 60 * 60 * 2.5 diff = 60 * 60 * 2.5
equal(result, getAbsolute(new Date(current.getTime() + (60050 * 60 * 2.5)), diff), 'in 2.5 hours') assert.equal(result, getAbsolute(new Date(current.getTime() + (60050 * 60 * 2.5)), diff), 'in 2.5 hours')
result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 24), escalation, long, type); result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 24), escalation, long, type);
diff = 60 * 60 * 24 diff = 60 * 60 * 24
equal(result, getAbsolute(new Date(current.getTime() + (60050 * 60 * 24)), diff), 'in 1 day') assert.equal(result, getAbsolute(new Date(current.getTime() + (60050 * 60 * 24)), diff), 'in 1 day')
result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 24 * 2), escalation, long, type); result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 24 * 2), escalation, long, type);
diff = 60 * 60 * 24 * 2 diff = 60 * 60 * 24 * 2
equal(result, getAbsolute(new Date(current.getTime() + (60050 * 60 * 24 * 2)), diff), 'in 2 days') assert.equal(result, getAbsolute(new Date(current.getTime() + (60050 * 60 * 24 * 2)), diff), 'in 2 days')
result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 24 * 2.5), escalation, long, type); result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 24 * 2.5), escalation, long, type);
diff = 60 * 60 * 24 * 2.5 diff = 60 * 60 * 24 * 2.5
equal(result, getAbsolute(new Date(current.getTime() + (60050 * 60 * 24 * 2.5)), diff), 'in 2.5 days') assert.equal(result, getAbsolute(new Date(current.getTime() + (60050 * 60 * 24 * 2.5)), diff), 'in 2.5 days')
result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 24 * 5.5), escalation, long, type); result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 24 * 5.5), escalation, long, type);
diff = 60 * 60 * 24 * 5.5 diff = 60 * 60 * 24 * 5.5
equal(result, getAbsolute(new Date(current.getTime() + (60050 * 60 * 24 * 5.5)), diff), 'in 5.5 days') assert.equal(result, getAbsolute(new Date(current.getTime() + (60050 * 60 * 24 * 5.5)), diff), 'in 5.5 days')
result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 24 * 30.5), escalation, long, type); result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 24 * 30.5), escalation, long, type);
diff = (60 * 60 * 24 * 30.5); diff = (60 * 60 * 24 * 30.5);
equal(result, getAbsolute(new Date(current.getTime() + 60050 * 60 * 24 * 30.5), diff), 'in 30.5 days') assert.equal(result, getAbsolute(new Date(current.getTime() + 60050 * 60 * 24 * 30.5), diff), 'in 30.5 days')
}; };
function prettyDateTimestamp(current, escalation, long, type) { function prettyDateTimestamp(current, escalation, long, type) {
var result = App.PrettyDate.humanTime(current, escalation, long, type); var result = App.PrettyDate.humanTime(current, escalation, long, type);
equal(result, 'just now', 'just now') // by defaul < 1 min is just now assert.equal(result, 'just now', 'just now') // by defaul < 1 min is just now
result = App.PrettyDate.humanTime(current - 15000, escalation, long, type); result = App.PrettyDate.humanTime(current - 15000, escalation, long, type);
equal(result, 'just now', 'just now') // by default < 1 min is just now assert.equal(result, 'just now', 'just now') // by default < 1 min is just now
result = App.PrettyDate.humanTime(current - 60000, escalation, long, type); result = App.PrettyDate.humanTime(current - 60000, escalation, long, type);
equal(result, getTimestamp(new Date(current - 60000)), '1 min ago') assert.equal(result, getTimestamp(new Date(current - 60000)), '1 min ago')
result = App.PrettyDate.humanTime(current - (2 * 60000), escalation, long, type); result = App.PrettyDate.humanTime(current - (2 * 60000), escalation, long, type);
equal(result, getTimestamp(new Date(current - (2 * 60000))), '2 min ago') assert.equal(result, getTimestamp(new Date(current - (2 * 60000))), '2 min ago')
result = App.PrettyDate.humanTime(current - (60000 * 60), escalation, long, type); result = App.PrettyDate.humanTime(current - (60000 * 60), escalation, long, type);
equal(result, getTimestamp(new Date(current - (60000 * 60))), '1 hour') assert.equal(result, getTimestamp(new Date(current - (60000 * 60))), '1 hour')
result = App.PrettyDate.humanTime(current - (60000 * 60 * 2), escalation, long, type); result = App.PrettyDate.humanTime(current - (60000 * 60 * 2), escalation, long, type);
equal(result, getTimestamp(new Date(current - (60000 * 60 * 2))), '2 hours') assert.equal(result, getTimestamp(new Date(current - (60000 * 60 * 2))), '2 hours')
result = App.PrettyDate.humanTime(current - (60000 * 60 * 2.5), escalation, long, type); result = App.PrettyDate.humanTime(current - (60000 * 60 * 2.5), escalation, long, type);
equal(result, getTimestamp(new Date(current - (60000 * 60 * 2.5))), '2.5 hours') assert.equal(result, getTimestamp(new Date(current - (60000 * 60 * 2.5))), '2.5 hours')
result = App.PrettyDate.humanTime(current - (60000 * 60 * 12.5), escalation, long, type); result = App.PrettyDate.humanTime(current - (60000 * 60 * 12.5), escalation, long, type);
equal(result, getTimestamp(new Date(current - (60000 * 60 * 12.5))), '12.5 hours') assert.equal(result, getTimestamp(new Date(current - (60000 * 60 * 12.5))), '12.5 hours')
result = App.PrettyDate.humanTime(current - (60000 * 60 * 24), escalation, long, type); result = App.PrettyDate.humanTime(current - (60000 * 60 * 24), escalation, long, type);
equal(result, getTimestamp(new Date(current - (60000 * 60 * 24))), '1 day') assert.equal(result, getTimestamp(new Date(current - (60000 * 60 * 24))), '1 day')
result = App.PrettyDate.humanTime(current - (60000 * 60 * 24 * 2), escalation, long, type); result = App.PrettyDate.humanTime(current - (60000 * 60 * 24 * 2), escalation, long, type);
equal(result, getTimestamp(new Date(current - (60000 * 60 * 24 * 2))), '2 days') assert.equal(result, getTimestamp(new Date(current - (60000 * 60 * 24 * 2))), '2 days')
result = App.PrettyDate.humanTime(current - (60000 * 60 * 24 * 2) - (60000 * 5), escalation, long, type); result = App.PrettyDate.humanTime(current - (60000 * 60 * 24 * 2) - (60000 * 5), escalation, long, type);
equal(result, getTimestamp(new Date(current - (60000 * 60 * 24 * 2) - (60000 * 5))), '2 days') assert.equal(result, getTimestamp(new Date(current - (60000 * 60 * 24 * 2) - (60000 * 5))), '2 days')
result = App.PrettyDate.humanTime(current - (60000 * 60 * 24 * 2.5), escalation, long, type); result = App.PrettyDate.humanTime(current - (60000 * 60 * 24 * 2.5), escalation, long, type);
equal(result, getTimestamp(new Date(current - (60000 * 60 * 24 * 2.5))), '2.5 days') assert.equal(result, getTimestamp(new Date(current - (60000 * 60 * 24 * 2.5))), '2.5 days')
result = App.PrettyDate.humanTime(current - (60000 * 60 * 24 * 2.5) - (60000 * 5), escalation, long, type); result = App.PrettyDate.humanTime(current - (60000 * 60 * 24 * 2.5) - (60000 * 5), escalation, long, type);
equal(result, getTimestamp(new Date(current - (60000 * 60 * 24 * 2.5) - (60000 * 5))), '2.5 days') assert.equal(result, getTimestamp(new Date(current - (60000 * 60 * 24 * 2.5) - (60000 * 5))), '2.5 days')
// future // future
current = new Date() current = new Date()
result = App.PrettyDate.humanTime(current, escalation, long, type); result = App.PrettyDate.humanTime(current, escalation, long, type);
equal(result, 'just now', 'just now') // no change, because < 1 min = just now assert.equal(result, 'just now', 'just now') // no change, because < 1 min = just now
result = App.PrettyDate.humanTime(current.getTime() + 55000, escalation, long, type); result = App.PrettyDate.humanTime(current.getTime() + 55000, escalation, long, type);
equal(result, 'just now', 'just now') // no change, because < 1 min = just now assert.equal(result, 'just now', 'just now') // no change, because < 1 min = just now
result = App.PrettyDate.humanTime(current.getTime() + 65000, escalation, long, type); result = App.PrettyDate.humanTime(current.getTime() + 65000, escalation, long, type);
equal(result, getTimestamp(new Date(current.getTime() + 65000)), 'in 1 min') assert.equal(result, getTimestamp(new Date(current.getTime() + 65000)), 'in 1 min')
result = App.PrettyDate.humanTime(current.getTime() + (2 * 65000), escalation, long, type); result = App.PrettyDate.humanTime(current.getTime() + (2 * 65000), escalation, long, type);
equal(result, getTimestamp(new Date(current.getTime() + (2 * 65000))), 'in 2 min') assert.equal(result, getTimestamp(new Date(current.getTime() + (2 * 65000))), 'in 2 min')
result = App.PrettyDate.humanTime(current.getTime() + (60500 * 60), escalation, long, type) ; result = App.PrettyDate.humanTime(current.getTime() + (60500 * 60), escalation, long, type) ;
equal(result, getTimestamp(new Date(current.getTime() + (60500 * 60))), 'in 1 hour') assert.equal(result, getTimestamp(new Date(current.getTime() + (60500 * 60))), 'in 1 hour')
result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 2), escalation, long, type); result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 2), escalation, long, type);
equal(result, getTimestamp(new Date(current.getTime() + (60050 * 60 * 2))), 'in 2 hours') assert.equal(result, getTimestamp(new Date(current.getTime() + (60050 * 60 * 2))), 'in 2 hours')
result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 2.5), escalation, long, type); result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 2.5), escalation, long, type);
equal(result, getTimestamp(new Date(current.getTime() + (60050 * 60 * 2.5))), 'in 2.5 hours') assert.equal(result, getTimestamp(new Date(current.getTime() + (60050 * 60 * 2.5))), 'in 2.5 hours')
result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 24), escalation, long, type); result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 24), escalation, long, type);
equal(result, getTimestamp(new Date(current.getTime() + (60050 * 60 * 24))), 'in 1 day') assert.equal(result, getTimestamp(new Date(current.getTime() + (60050 * 60 * 24))), 'in 1 day')
result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 24 * 2), escalation, long, type); result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 24 * 2), escalation, long, type);
equal(result, getTimestamp(new Date(current.getTime() + (60050 * 60 * 24 * 2))), 'in 2 days') assert.equal(result, getTimestamp(new Date(current.getTime() + (60050 * 60 * 24 * 2))), 'in 2 days')
result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 24 * 2.5), escalation, long, type); result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 24 * 2.5), escalation, long, type);
equal(result, getTimestamp(new Date(current.getTime() + (60050 * 60 * 24 * 2.5))), 'in 2.5 days') assert.equal(result, getTimestamp(new Date(current.getTime() + (60050 * 60 * 24 * 2.5))), 'in 2.5 days')
result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 24 * 5.5), escalation, long, type); result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 24 * 5.5), escalation, long, type);
equal(result, getTimestamp(new Date(current.getTime() + (60050 * 60 * 24 * 5.5))), 'in 5.5 days') assert.equal(result, getTimestamp(new Date(current.getTime() + (60050 * 60 * 24 * 5.5))), 'in 5.5 days')
result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 24 * 30.5), escalation, long, type); result = App.PrettyDate.humanTime(current.getTime() + (60050 * 60 * 24 * 30.5), escalation, long, type);
equal(result, getTimestamp(new Date(current.getTime() + 60050 * 60 * 24 * 30.5)), 'in 30.5 days') assert.equal(result, getTimestamp(new Date(current.getTime() + 60050 * 60 * 24 * 30.5)), 'in 30.5 days')
}; };
@ -369,9 +369,9 @@ test("check pretty date", function() {
}); });
test("PrettyDate getISOWeeks", function() { QUnit.test("PrettyDate getISOWeeks", assert => {
equal(App.PrettyDate.getISOWeeks(2026), 53, '53 weeks') assert.equal(App.PrettyDate.getISOWeeks(2026), 53, '53 weeks')
equal(App.PrettyDate.getISOWeeks(2020), 53, 'leap year and 53 weeks') assert.equal(App.PrettyDate.getISOWeeks(2020), 53, 'leap year and 53 weeks')
equal(App.PrettyDate.getISOWeeks(2019), 52, '52 weeks') assert.equal(App.PrettyDate.getISOWeeks(2019), 52, '52 weeks')
equal(App.PrettyDate.getISOWeeks(2024), 52, 'leap year and 52 weeks') assert.equal(App.PrettyDate.getISOWeeks(2024), 52, 'leap year and 52 weeks')
}) })

View file

@ -1,82 +0,0 @@
window.onload = function() {
test('test current user behaviour by updating session user via assets', function() {
// Wenn App.User updated through asset and set as session user
// expect App.Session.get with new values
App.User.refresh([{
"login": "hh@example.com",
"firstname": "Harald",
"lastname": "Habebe",
"email": "hh@example.com",
"role_ids": [ 1, 2, 4 ],
"group_ids": [ 1 ],
"active": true,
"updated_at": "2017-02-09T09:17:04.770Z",
"address": "",
"vip": false,
"custom_key": undefined,
"asdf": "",
"id": 6
}]);
App.Session.set(6)
equal(App.Session.get('id'), 6)
equal(App.Session.get('login'), 'hh@example.com')
equal(App.Session.get('vip'), false)
equal(App.Session.get('custom_key'), undefined)
equal(App.Session.get().id, 6)
equal(App.Session.get().login, 'hh@example.com')
equal(App.Session.get().custom_key, undefined)
equal(App.Session.get().not_existing, undefined)
// Wenn App.User updated through asset
// expect App.Session.get with new values
App.User.refresh([{
"login": "hh_new@example.com",
"firstname": "Harald",
"lastname": "Habebe",
"email": "hh_new@example.com",
"role_ids": [ 1, 2, 4 ],
"group_ids": [ 1 ],
"active": true,
"updated_at": "2017-02-09T09:17:04.770Z",
"address": "",
"vip": false,
"custom_key": undefined,
"asdf": "",
"id": 6
}]);
equal(App.Session.get('id'), 6)
equal(App.Session.get('login'), 'hh_new@example.com')
equal(App.Session.get('vip'), false)
equal(App.Session.get('custom_key'), undefined)
equal(App.Session.get().id, 6)
equal(App.Session.get().login, 'hh_new@example.com')
equal(App.Session.get().custom_key, undefined)
equal(App.Session.get().not_existing, undefined)
// Wenn App.Session is reseted to inital
// expect undefined for all
App.Session.init()
equal(App.Session.get(), undefined)
equal(App.Session.get('id'), undefined)
equal(App.Session.get('login'), undefined)
equal(App.Session.get('vip'), undefined)
equal(App.Session.get('custom_key'), undefined)
// When App.Session is set and set to undefined or null,
// expect @current() to return null
App.Session.set(6)
App.Session.set(undefined)
equal(App.User.current(), null, 'with no active session')
App.Session.set(null)
equal(App.User.current(), null, 'with no active session')
// When App.Session is set with an invalid (not existing) user ID,
// expect @current() to return null
App.Session.set(100)
equal(App.User.current(), null, 'with invalid session user ID')
});
}

View file

@ -1,3 +1,35 @@
/*[process-shim]*/
(function(global, env) {
// jshint ignore:line
if (typeof process === "undefined") {
global.process = {
argv: [],
cwd: function() {
return "";
},
browser: true,
env: {
NODE_ENV: env || "development"
},
version: "",
platform:
global.navigator &&
global.navigator.userAgent &&
/Windows/.test(global.navigator.userAgent)
? "win"
: ""
};
}
})(
typeof self == "object" && self.Object == Object
? self
: typeof process === "object" &&
Object.prototype.toString.call(process) === "[object process]"
? global
: window,
"development"
);
/*[global-shim-start]*/ /*[global-shim-start]*/
(function(exports, global, doEval) { (function(exports, global, doEval) {
// jshint ignore:line // jshint ignore:line
@ -74,8 +106,9 @@
}; };
args[1] = module.exports; args[1] = module.exports;
args[2] = module; args[2] = module;
} else if (!args[0] && deps[0] === "exports") { }
// Babel uses the exports and module object. // Babel uses the exports and module object.
else if (!args[0] && deps[0] === "exports") {
module = { exports: {} }; module = { exports: {} };
args[0] = module.exports; args[0] = module.exports;
if (deps[1] === "module") { if (deps[1] === "module") {
@ -120,7 +153,12 @@
}); });
})( })(
{}, {},
typeof self == "object" && self.Object == Object ? self : window, typeof self == "object" && self.Object == Object
? self
: typeof process === "object" &&
Object.prototype.toString.call(process) === "[object process]"
? global
: window,
function(__$source__, __$global__) { function(__$source__, __$global__) {
// jshint ignore:line // jshint ignore:line
eval("(function() { " + __$source__ + " \n }).call(__$global__);"); eval("(function() { " + __$source__ + " \n }).call(__$global__);");
@ -613,6 +651,52 @@ define('syn/synthetic', function (require, exports, module) {
} }
module.exports = syn; module.exports = syn;
}); });
/*syn@0.14.1#keyboard-event-keys*/
define('syn/keyboard-event-keys', [
'require',
'exports',
'module',
'syn/synthetic'
], function (require, exports, module) {
var syn = require('syn/synthetic');
syn.key.keyboardEventKeys = {
'\b': 'Backspace',
'\t': 'Tab',
'\r': 'Enter',
'shift': 'Shift',
'ctrl': 'Control',
'alt': 'Alt',
'meta': 'Meta',
'pause-break': 'Pause',
'caps': 'CapsLock',
'escape': 'Escape',
'num-lock': 'NumLock',
'scroll-lock': 'ScrollLock',
'print': 'Print',
'page-up': 'PageUp',
'page-down': 'PageDown',
'end': 'End',
'home': 'Home',
'left': 'ArrowLeft',
'up': 'ArrowUp',
'right': 'ArrowRight',
'down': 'ArrowDown',
'insert': 'Insert',
'delete': 'Delete',
'f1': 'F1',
'f2': 'F2',
'f3': 'F3',
'f4': 'F4',
'f5': 'F5',
'f6': 'F6',
'f7': 'F7',
'f8': 'F8',
'f9': 'F9',
'f10': 'F10',
'f11': 'F11',
'f12': 'F12'
};
});
/*syn@0.14.1#mouse*/ /*syn@0.14.1#mouse*/
define('syn/mouse', [ define('syn/mouse', [
'require', 'require',
@ -702,6 +786,7 @@ define('syn/mouse', [
var doc = getWin(element).document || document, event; var doc = getWin(element).document || document, event;
if (doc.createEvent) { if (doc.createEvent) {
try { try {
defaults.view = doc.defaultView;
event = doc.createEvent('MouseEvents'); event = doc.createEvent('MouseEvents');
event.initMouseEvent(type, defaults.bubbles, defaults.cancelable, defaults.view, defaults.detail, defaults.screenX, defaults.screenY, defaults.clientX, defaults.clientY, defaults.ctrlKey, defaults.altKey, defaults.shiftKey, defaults.metaKey, defaults.button, defaults.relatedTarget); event.initMouseEvent(type, defaults.bubbles, defaults.cancelable, defaults.view, defaults.detail, defaults.screenX, defaults.screenY, defaults.clientX, defaults.clientY, defaults.ctrlKey, defaults.altKey, defaults.shiftKey, defaults.metaKey, defaults.button, defaults.relatedTarget);
} catch (e) { } catch (e) {
@ -1918,7 +2003,7 @@ define('syn/key', [
if (!keyData[event]) { if (!keyData[event]) {
return null; return null;
} }
var charCode = keyData[event][0], keyCode = keyData[event][1], result = {}; var charCode = keyData[event][0], keyCode = keyData[event][1], result = { key: key };
if (keyCode === 'key') { if (keyCode === 'key') {
result.keyCode = syn.keycodes[key]; result.keyCode = syn.keycodes[key];
} else if (keyCode === 'char') { } else if (keyCode === 'char') {
@ -2220,7 +2305,15 @@ define('syn/key', [
}, },
event: function (type, options, element) { event: function (type, options, element) {
var doc = h.getWindow(element).document || document, event; var doc = h.getWindow(element).document || document, event;
if (doc.createEvent) { if (typeof KeyboardEvent !== 'undefined') {
var keyboardEventKeys = syn.key.keyboardEventKeys;
if (options.key && keyboardEventKeys[options.key]) {
options.key = keyboardEventKeys[options.key];
}
event = new KeyboardEvent(type, options);
event.synthetic = true;
return event;
} else if (doc.createEvent) {
try { try {
event = doc.createEvent('KeyEvents'); event = doc.createEvent('KeyEvents');
event.initKeyEvent(type, true, true, window, options.ctrlKey, options.altKey, options.shiftKey, options.metaKey, options.keyCode, options.charCode); event.initKeyEvent(type, true, true, window, options.ctrlKey, options.altKey, options.shiftKey, options.metaKey, options.keyCode, options.charCode);
@ -2425,25 +2518,54 @@ define('syn/drag', [
DragonDrop.cleanup(); DragonDrop.cleanup();
}); });
}, },
_dragStart: function (node, options) { _dragStart: function (node) {
var options = {
bubbles: false,
cancelable: false
};
this.createAndDispatchEvent(node, 'dragstart', options); this.createAndDispatchEvent(node, 'dragstart', options);
}, },
_drag: function (node, options) { _drag: function (node) {
var options = {
bubbles: true,
cancelable: true
};
this.createAndDispatchEvent(node, 'drag', options); this.createAndDispatchEvent(node, 'drag', options);
}, },
_dragEnter: function (node, options) { _dragEnter: function (node) {
var options = {
bubbles: true,
cancelable: true
};
this.createAndDispatchEvent(node, 'dragenter', options); this.createAndDispatchEvent(node, 'dragenter', options);
}, },
_dragOver: function (node, options) { _dragOver: function (node) {
var options = {
bubbles: true,
cancelable: true
};
this.createAndDispatchEvent(node, 'dragover', options); this.createAndDispatchEvent(node, 'dragover', options);
}, },
_dragLeave: function (node, options) { _dragLeave: function (node) {
var options = {
bubbles: true,
cancelable: false
};
this.createAndDispatchEvent(node, 'dragleave', options); this.createAndDispatchEvent(node, 'dragleave', options);
}, },
_drop: function (node, options) { _drop: function (node) {
var options = {
bubbles: true,
cancelable: true,
buttons: 1
};
this.createAndDispatchEvent(node, 'drop', options); this.createAndDispatchEvent(node, 'drop', options);
}, },
_dragEnd: function (node, options) { _dragEnd: function (node) {
var options = {
bubbles: true,
cancelable: false
};
this.createAndDispatchEvent(node, 'dragend', options); this.createAndDispatchEvent(node, 'dragend', options);
}, },
_mouseDown: function (node, options) { _mouseDown: function (node, options) {
@ -2797,12 +2919,14 @@ define('syn', [
'exports', 'exports',
'module', 'module',
'syn/synthetic', 'syn/synthetic',
'syn/keyboard-event-keys',
'syn/mouse.support', 'syn/mouse.support',
'syn/browsers', 'syn/browsers',
'syn/key.support', 'syn/key.support',
'syn/drag' 'syn/drag'
], function (require, exports, module) { ], function (require, exports, module) {
var syn = require('syn/synthetic'); var syn = require('syn/synthetic');
require('syn/keyboard-event-keys');
require('syn/mouse.support'); require('syn/mouse.support');
require('syn/browsers'); require('syn/browsers');
require('syn/key.support'); require('syn/key.support');
@ -2815,4 +2939,4 @@ define('syn', [
global._define = global.define; global._define = global.define;
global.define = global.define.orig; global.define = global.define.orig;
} }
)(typeof self == "object" && self.Object == Object ? self : window); )(typeof self == "object" && self.Object == Object ? self : (typeof process === "object" && Object.prototype.toString.call(process) === "[object process]") ? global : window);

View file

@ -1,844 +0,0 @@
// form
test('table test', function() {
App.i18n.set('de-de')
$('#table').append('<hr><h1>table simple I</h1><div id="table1"></div>')
var el = $('#table1')
App.TicketPriority.refresh( [
{
id: 1,
name: '1 low',
note: 'some note 1',
active: true,
created_at: '2014-06-10T11:17:34.000Z',
},
{
id: 2,
name: '2 normal',
note: 'some note 2',
active: false,
created_at: '2014-06-10T10:17:34.000Z',
},
] )
var rowClick = function (id, e) {
e.preventDefault()
console.log('rowClick', id, e.target)
};
var rowDblClick = function (id, e) {
e.preventDefault()
console.log('rowDblClick', id, e.target)
};
var rowMouseover = function (id, e) {
e.preventDefault()
console.log('rowMouseover', id, e.target)
};
var rowMouseout = function (id, e) {
e.preventDefault()
console.log('rowMouseout', id, e.target)
};
var colClick = function (id, e) {
e.preventDefault()
console.log('colClick', id, e.target)
};
var colDblClick = function (id, e) {
e.preventDefault()
console.log('colDblClick', id, e.target)
};
var colMouseover = function (id, e) {
e.preventDefault()
console.log('colMouseover', id, e.target)
};
var colMouseout = function (id, e) {
e.preventDefault()
console.log('colMouseout', id, e.target)
};
new App.ControllerTable({
el: el,
overview: ['name', 'created_at', 'active'],
model: App.TicketPriority,
objects: App.TicketPriority.search({sortBy:'name', order: 'ASC'}),
checkbox: false,
radio: false,
bindRow: {
events: {
'click': rowClick,
'mouseover': rowMouseover,
'mouseout': rowMouseout,
'dblclick': rowDblClick,
}
},
bindCol: {
name: {
events: {
'click': colClick,
'mouseover': colMouseover,
'mouseout': colMouseout,
'dblclick': colDblClick,
}
},
created_at: {
events: {
'mouseover': colMouseover,
'mouseout': colMouseout,
}
}
},
})
equal(el.find('table > thead > tr').length, 1, 'row count')
equal(el.find('table > thead > tr > th:nth-child(1)').text().trim(), 'Name', 'check header')
equal(el.find('table > thead > tr > th:nth-child(2)').text().trim(), 'Erstellt', 'check header')
equal(el.find('table > thead > tr > th:nth-child(3)').text().trim(), 'Aktiv', 'check header')
equal(el.find('tbody > tr:nth-child(1) > td').length, 3, 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:first').text().trim(), '1 niedrig', 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(2)').text().trim(), '10.06.2014', 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(3)').text().trim(), 'true', 'check row 1')
equal(el.find('tbody > tr:nth-child(2) > td').length, 3, 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:first').text().trim(), '2 normal', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(2)').text().trim(), '10.06.2014', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(3)').text().trim(), 'false', 'check row 2')
$('#table').append('<hr><h1>table simple II</h1><div id="table2"></div>')
el = $('#table2')
new App.ControllerTable({
el: el,
overview: ['name', 'created_at', 'active'],
model: App.TicketPriority,
objects: App.TicketPriority.search({sortBy:'name', order: 'DESC'}),
checkbox: false,
radio: false,
})
equal(el.find('table > thead > tr').length, 1, 'row count')
equal(el.find('table > thead > tr > th:nth-child(1)').text().trim(), 'Name', 'check header')
equal(el.find('table > thead > tr > th:nth-child(2)').text().trim(), 'Erstellt', 'check header')
equal(el.find('table > thead > tr > th:nth-child(3)').text().trim(), 'Aktiv', 'check header')
equal(el.find('tbody > tr:nth-child(1) > td').length, 3, 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:first').text().trim(), '2 normal', 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(2)').text().trim(), '10.06.2014', 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(3)').text().trim(), 'false', 'check row 1')
equal(el.find('tbody > tr:nth-child(2) > td').length, 3, 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:first').text().trim(), '1 niedrig', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(2)').text().trim(), '10.06.2014', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(3)').text().trim(), 'true', 'check row 2')
$('#table').append('<hr><h1>table simple III</h1><div id="table3"></div>')
el = $('#table3')
new App.ControllerTable({
el: el,
model: App.TicketPriority,
objects: App.TicketPriority.search({sortBy:'created_at', order: 'DESC'}),
checkbox: false,
radio: false,
})
equal(el.find('table > thead > tr').length, 1, 'row count')
equal(el.find('table > thead > tr > th:nth-child(1)').text().trim(), 'Name', 'check header')
notEqual( el.find('table > thead > tr > th:nth-child(2)').text().trim(), 'Erstellt', 'check header')
notEqual( el.find('table > thead > tr > th:nth-child(3)').text().trim(), 'Aktiv', 'check header')
equal(el.find('tbody > tr:nth-child(2) > td').length, 1, 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:first').text().trim(), '2 normal', 'check row 2')
notEqual( el.find('tbody > tr:nth-child(2) > td:nth-child(2)').text().trim(), '?', 'check row 2')
notEqual( el.find('tbody > tr:nth-child(2) > td:nth-child(3)').text().trim(), 'true', 'check row 2')
equal(el.find('tbody > tr:nth-child(1) > td').length, 1, 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:first').text().trim(), '1 niedrig', 'check row 1')
notEqual( el.find('tbody > tr:nth-child(1) > td:nth-child(2)').text().trim(), '?', 'check row 1')
notEqual( el.find('tbody > tr:nth-child(1) > td:nth-child(3)').text().trim(), 'false', 'check row 1')
App.Group.refresh( [
{
id: 1,
name: 'group 1',
active: true,
created_at: '2014-06-10T11:17:34.000Z',
},
{
id: 2,
name: 'group 2',
active: true,
created_at: '2014-06-10T11:17:34.000Z',
},
])
App.User.refresh( [
{
id: 55,
login: 'login55',
firstname: 'firstname55',
lastname: 'lastname55',
email: 'email55',
active: true,
created_at: '2014-06-10T11:17:34.000Z',
},
{
id: 56,
login: 'login56',
firstname: 'firstname56',
lastname: 'lastname56',
email: 'email56',
active: true,
created_at: '2014-06-10T11:17:34.000Z',
},
])
App.TicketState.refresh( [
{
id: 1,
name: 'new',
active: true,
created_at: '2014-06-10T11:17:34.000Z',
},
{
id: 2,
name: 'open',
note: 'some note 2',
active: false,
created_at: '2014-06-10T10:17:34.000Z',
},
])
App.Ticket.refresh( [
{
id: 1,
title: 'some title 1',
number: '4711',
priority_id: 1,
owner_id: 55,
customer_id: 56,
state_id: 1,
group_id: 2,
created_at: '2014-06-10T11:17:34.000Z',
},
{
id: 3,
title: 'some title 3',
number: '4713',
priority_id: 2,
owner_id: 56,
state_id: 1,
group_id: 2,
created_at: '2014-07-11T11:19:34.000Z',
},
{
id: 2,
title: 'some title 2',
number: '4712',
priority_id: 1,
state_id: 2,
group_id: 1,
created_at: '2014-06-10T11:19:34.000Z',
},
])
$('#table').append('<hr><h1>table complex I</h1><div id="table4"></div>')
el = $('#table4')
new App.ControllerTable({
el: el,
overview: ['number', 'title', 'owner', 'customer', 'priority', 'group', 'state', 'created_at'],
model: App.Ticket,
objects: App.Ticket.search({sortBy:'created_at', order: 'DESC'}),
checkbox: true,
})
equal(el.find('table > thead > tr').length, 1, 'row count')
equal(el.find('table > thead > tr > th:nth-child(1)').text().trim(), '', 'check header')
equal(el.find('table > thead > tr > th:nth-child(2)').text().trim(), '#', 'check header')
equal(el.find('table > thead > tr > th:nth-child(3)').text().trim(), 'Titel', 'check header')
equal(el.find('table > thead > tr > th:nth-child(4)').text().trim(), 'Besitzer', 'check header')
equal(el.find('table > thead > tr > th:nth-child(5)').text().trim(), 'Kunde', 'check header')
equal(el.find('table > thead > tr > th:nth-child(6)').text().trim(), 'Priorität', 'check header')
equal(el.find('table > thead > tr > th:nth-child(7)').text().trim(), 'Gruppe', 'check header')
equal(el.find('table > thead > tr > th:nth-child(8)').text().trim(), 'Status', 'check header')
equal(el.find('table > thead > tr > th:nth-child(9)').text().trim(), 'Erstellt am', 'check header')
equal(el.find('tbody > tr:nth-child(1) > td').length, 9, 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(1) input').val(), '3', 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(1) input').prop('checked'), '', 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(1)').text().trim(), '', 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(2)').text().trim(), '4713', 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(3)').text().trim(), 'some title 3', 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(4)').text().trim(), 'firstname56 lastname56', 'check row 2')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(5)').text().trim(), '-', 'check row 2')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(6)').text().trim(), '2 normal', 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(7)').text().trim(), 'group 2', 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(8)').text().trim(), 'neu', 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(9)').text().trim(), '11.07.2014', 'check row 1')
equal(el.find('tbody > tr:nth-child(2) > td').length, 9, 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(1) input').val(), '2', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(1) input').prop('checked'), '', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(1)').text().trim(), '', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(2)').text().trim(), '4712', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(3)').text().trim(), 'some title 2', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(4)').text().trim(), '-', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(5)').text().trim(), '-', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(6)').text().trim(), '1 niedrig', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(7)').text().trim(), 'group 1', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(8)').text().trim(), 'offen', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(9)').text().trim(), '10.06.2014', 'check row 2')
equal(el.find('tbody > tr:nth-child(3) > td').length, 9, 'check row 3')
equal(el.find('tbody > tr:nth-child(3) > td:nth-child(1) input').val(), '1', 'check row 3')
equal(el.find('tbody > tr:nth-child(3) > td:nth-child(1) input').prop('checked'), '', 'check row 3')
equal(el.find('tbody > tr:nth-child(3) > td:nth-child(1)').text().trim(), '', 'check row 3')
equal(el.find('tbody > tr:nth-child(3) > td:nth-child(2)').text().trim(), '4711', 'check row 3')
equal(el.find('tbody > tr:nth-child(3) > td:nth-child(3)').text().trim(), 'some title 1', 'check row 3')
equal(el.find('tbody > tr:nth-child(3) > td:nth-child(4)').text().trim(), 'firstname55 lastname55', 'check row 2')
equal(el.find('tbody > tr:nth-child(3) > td:nth-child(5)').text().trim(), 'firstname56 lastname56', 'check row 2')
equal(el.find('tbody > tr:nth-child(3) > td:nth-child(6)').text().trim(), '1 niedrig', 'check row 3')
equal(el.find('tbody > tr:nth-child(3) > td:nth-child(7)').text().trim(), 'group 2', 'check row 3')
equal(el.find('tbody > tr:nth-child(3) > td:nth-child(8)').text().trim(), 'neu', 'check row 3')
equal(el.find('tbody > tr:nth-child(3) > td:nth-child(9)').text().trim(), '10.06.2014', 'check row 3')
el.find('input[name="bulk_all"]').click()
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(1) input').prop('checked'), true, 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(1) input').val(), '3', 'check row 1')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(1) input').prop('checked'), true, 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(1) input').val(), '2', 'check row 2')
equal(el.find('tbody > tr:nth-child(3) > td:nth-child(1) input').prop('checked'), true, 'check row 3')
equal(el.find('tbody > tr:nth-child(3) > td:nth-child(1) input').val(), '1', 'check row 3')
$('#table').append('<hr><h1>table complex II</h1><div id="table5"></div>')
el = $('#table5')
var clickCheckbox = function (id, checked, e) {
console.log('clickCheckbox', id, checked, e.target)
};
new App.ControllerTable({
el: el,
overview: ['number', 'title', 'owner', 'customer', 'priority', 'group', 'state', 'created_at'],
model: App.Ticket,
objects: App.Ticket.search({sortBy:'created_at', order: 'DESC'}),
checkbox: true,
groupBy: 'group',
bindCheckbox: {
events: {
'click': clickCheckbox,
}
},
})
equal(el.find('table > thead > tr').length, 1, 'row count')
equal(el.find('table > thead > tr > th:nth-child(1)').text().trim(), '', 'check header')
equal(el.find('table > thead > tr > th:nth-child(2)').text().trim(), '#', 'check header')
equal(el.find('table > thead > tr > th:nth-child(3)').text().trim(), 'Titel', 'check header')
equal(el.find('table > thead > tr > th:nth-child(4)').text().trim(), 'Besitzer', 'check header')
equal(el.find('table > thead > tr > th:nth-child(5)').text().trim(), 'Kunde', 'check header')
equal(el.find('table > thead > tr > th:nth-child(6)').text().trim(), 'Priorität', 'check header')
equal(el.find('table > thead > tr > th:nth-child(7)').text().trim(), 'Status', 'check header')
equal(el.find('table > thead > tr > th:nth-child(8)').text().trim(), 'Erstellt am', 'check header')
equal(el.find('tbody > tr:nth-child(1) > td').length, 1, 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(1)').text().trim(), 'group 1', 'check row 1')
equal(el.find('tbody > tr:nth-child(2) > td').length, 8, 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(1) input').val(), '2', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(1) input').prop('checked'), '', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(1)').text().trim(), '', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(2)').text().trim(), '4712', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(3)').text().trim(), 'some title 2', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(4)').text().trim(), '-', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(5)').text().trim(), '-', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(6)').text().trim(), '1 niedrig', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(7)').text().trim(), 'offen', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(8)').text().trim(), '10.06.2014', 'check row 2')
equal(el.find('tbody > tr:nth-child(3) > td').length, 1, 'check row 3')
equal(el.find('tbody > tr:nth-child(3) > td:nth-child(1)').text().trim(), 'group 2', 'check row 4')
equal(el.find('tbody > tr:nth-child(4) > td').length, 8, 'check row 4')
equal(el.find('tbody > tr:nth-child(4) > td:nth-child(1) input').val(), '3', 'check row 4')
equal(el.find('tbody > tr:nth-child(4) > td:nth-child(1) input').prop('checked'), '', 'check row 4')
equal(el.find('tbody > tr:nth-child(4) > td:nth-child(1)').text().trim(), '', 'check row 4')
equal(el.find('tbody > tr:nth-child(4) > td:nth-child(2)').text().trim(), '4713', 'check row 4')
equal(el.find('tbody > tr:nth-child(4) > td:nth-child(3)').text().trim(), 'some title 3', 'check row 4')
equal(el.find('tbody > tr:nth-child(4) > td:nth-child(4)').text().trim(), 'firstname56 lastname56', 'check row 2')
equal(el.find('tbody > tr:nth-child(4) > td:nth-child(5)').text().trim(), '-', 'check row 2')
equal(el.find('tbody > tr:nth-child(4) > td:nth-child(6)').text().trim(), '2 normal', 'check row 4')
equal(el.find('tbody > tr:nth-child(4) > td:nth-child(7)').text().trim(), 'neu', 'check row 4')
equal(el.find('tbody > tr:nth-child(4) > td:nth-child(8)').text().trim(), '11.07.2014', 'check row 4')
el.find('input[name="bulk"]:eq(1)').click()
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(1) input').prop('checked'), '', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(1) input').val(), '2', 'check row 1')
equal(el.find('tbody > tr:nth-child(4) > td:nth-child(1) input').prop('checked'), true, 'check row 4')
equal(el.find('tbody > tr:nth-child(4) > td:nth-child(1) input').val(), '3', 'check row 4')
equal(el.find('tbody > tr:nth-child(5) > td:nth-child(1) input').prop('checked'), '', 'check row 5')
equal(el.find('tbody > tr:nth-child(5) > td:nth-child(1) input').val(), '1', 'check row 5')
el.find('tbody > tr:nth-child(5) > td:nth-child(1) label').click()
equal(el.find('tbody > tr:nth-child(5) > td:nth-child(1) input').prop('checked'), true, 'check row 5')
equal(el.find('tbody > tr:nth-child(5) > td:nth-child(1) input').val(), '1', 'check row 5')
$('#table').append('<hr><h1>table Group By Direction DESC</h1><div id="table6"></div>')
el = $('#table6')
var clickCheckbox = function (id, checked, e) {
console.log('clickCheckbox', id, checked, e.target)
};
new App.ControllerTable({
el: el,
overview: ['number', 'title', 'owner', 'customer', 'priority', 'group', 'state', 'created_at'],
model: App.Ticket,
objects: App.Ticket.search({sortBy:'created_at', order: 'DESC'}),
groupBy: 'priority',
groupDirection: 'DESC',
})
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(1)').text().trim(), '2 normal', 'check row 1')
equal(el.find('tbody > tr:nth-child(3) > td:nth-child(1)').text().trim(), '1 niedrig', 'check row 3')
$('#table').append('<hr><h1>table Group By Direction ASC</h1><div id="table7"></div>')
el = $('#table7')
var clickCheckbox = function (id, checked, e) {
console.log('clickCheckbox', id, checked, e.target)
};
new App.ControllerTable({
el: el,
overview: ['number', 'title', 'owner', 'customer', 'priority', 'group', 'state', 'created_at'],
model: App.Ticket,
objects: App.Ticket.search({sortBy:'created_at', order: 'DESC'}),
groupBy: 'priority',
groupDirection: 'ASC',
})
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(1)').text().trim(), '1 niedrig', 'check row 1')
equal(el.find('tbody > tr:nth-child(4) > td:nth-child(1)').text().trim(), '2 normal', 'check row 4')
});
test('table test 2.1', function() {
App.i18n.set('de-de')
$('#table').append('<hr><h1>table with hash</h1><div id="table-hash2_1"></div>')
var el = $('#table-hash2_1')
App.Group.refresh( [
{
id: 5,
name: 'group 5',
active: true,
created_at: '2014-06-10T11:17:34.000Z',
},
])
App.Channel.configure_delete = true
App.Channel.configure_clone = false
App.Channel.configure_attributes = [
{ name: 'adapter', display: 'Type', tag: 'select', multiple: false, null: false, options: { IMAP: 'IMAP', POP3: 'POP3' } },
{ name: 'options::host', display: 'Host', tag: 'input', type: 'text', limit: 120, null: true, autocapitalize: false },
{ name: 'options::user', display: 'User', tag: 'input', type: 'text', limit: 120, null: true, autocapitalize: false },
{ name: 'options::password', display: 'Password', tag: 'input', type: 'password', limit: 120, null: true, autocapitalize: false },
{ name: 'options::ssl', display: 'SSL', tag: 'select', multiple: false, null: true, options: { true: 'yes', false: 'no' }, translate: true, default: true},
{ name: 'options::folder', display: 'Folder', tag: 'input', type: 'text', limit: 120, null: true, autocapitalize: false },
{ name: 'group_id', display: 'Group', tag: 'select', multiple: false, null: false, nulloption: true, relation: 'Group' },
{ name: 'active', display: 'Active', tag: 'select', multiple: false, null: false, options: { true: 'yes', false: 'no' }, translate: true, default: true },
]
App.Channel.refresh( [
{
id: 1,
adapter: 'adapter1',
options: {
host: 'host1',
user: 'user1',
},
group_id: 5,
active: true,
created_at: '2014-06-10T11:17:34.000Z',
},
{
id: 2,
adapter: 'adapter2',
options: {
host: 'host2',
user: 'user2',
},
group_id: 5,
active: true,
created_at: '2014-06-10T11:17:34.000Z',
},
] )
new App.ControllerTable({
el: el,
overview: ['adapter', 'options::host', 'options::user', 'active'],
model: App.Channel,
objects: App.Channel.search({sortBy:'adapter', order: 'ASC'}),
})
equal(el.find('table > thead > tr').length, 1, 'row count')
equal(el.find('table > thead > tr > th:nth-child(1)').text().trim(), 'Typ', 'check header')
equal(el.find('table > thead > tr > th:nth-child(2)').text().trim(), 'Host', 'check header')
equal(el.find('table > thead > tr > th:nth-child(3)').text().trim(), 'Benutzer', 'check header')
equal(el.find('table > thead > tr > th:nth-child(4)').text().trim(), 'Aktiv', 'check header')
equal(el.find('table > thead > tr > th:nth-child(5)').text().trim(), 'Aktion', 'check header')
equal(el.find('tbody > tr:nth-child(1) > td').length, 5, 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(1)').text().trim(), 'adapter1', 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(2)').text().trim(), 'host1', 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(3)').text().trim(), 'user1', 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(4)').text().trim(), 'ja', 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(5)').text().trim(), '', 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(5) .dropdown.dropdown--actions').length, 0, 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(5) .js-delete').length, 1, 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(5) .js-clone').length, 0, 'check row 1')
equal(el.find('tbody > tr:nth-child(2) > td').length, 5, 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(1)').text().trim(), 'adapter2', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(2)').text().trim(), 'host2', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(3)').text().trim(), 'user2', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(4)').text().trim(), 'ja', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(5)').text().trim(), '', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(5) .dropdown.dropdown--actions').length, 0, 'check row 1')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(5) .js-delete').length, 1, 'check row 1')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(5) .js-clone').length, 0, 'check row 1')
});
test('table test 2.2', function() {
App.i18n.set('de-de')
$('#table').append('<hr><h1>table with hash</h1><div id="table-hash2_2"></div>')
var el = $('#table-hash2_2')
App.Group.refresh( [
{
id: 5,
name: 'group 5',
active: true,
created_at: '2014-06-10T11:17:34.000Z',
},
])
App.Channel.configure_delete = false
App.Channel.configure_clone = true
App.Channel.configure_attributes = [
{ name: 'adapter', display: 'Type', tag: 'select', multiple: false, null: false, options: { IMAP: 'IMAP', POP3: 'POP3' } },
{ name: 'options::host', display: 'Host', tag: 'input', type: 'text', limit: 120, null: true, autocapitalize: false },
{ name: 'options::user', display: 'User', tag: 'input', type: 'text', limit: 120, null: true, autocapitalize: false },
{ name: 'options::password', display: 'Password', tag: 'input', type: 'password', limit: 120, null: true, autocapitalize: false },
{ name: 'options::ssl', display: 'SSL', tag: 'select', multiple: false, null: true, options: { true: 'yes', false: 'no' }, translate: true, default: true},
{ name: 'options::folder', display: 'Folder', tag: 'input', type: 'text', limit: 120, null: true, autocapitalize: false },
{ name: 'group_id', display: 'Group', tag: 'select', multiple: false, null: false, nulloption: true, relation: 'Group' },
{ name: 'active', display: 'Active', tag: 'select', multiple: false, null: false, options: { true: 'yes', false: 'no' }, translate: true, default: true },
]
App.Channel.refresh( [
{
id: 1,
adapter: 'adapter1',
options: {
host: 'host1',
user: 'user1',
},
group_id: 5,
active: true,
created_at: '2014-06-10T11:17:34.000Z',
},
{
id: 2,
adapter: 'adapter2',
options: {
host: 'host2',
user: 'user2',
},
group_id: 5,
active: true,
created_at: '2014-06-10T11:17:34.000Z',
},
] )
new App.ControllerTable({
el: el,
overview: ['adapter', 'options::host', 'options::user', 'active'],
model: App.Channel,
objects: App.Channel.search({sortBy:'adapter', order: 'ASC'}),
})
equal(el.find('table > thead > tr').length, 1, 'row count')
equal(el.find('table > thead > tr > th:nth-child(1)').text().trim(), 'Typ', 'check header')
equal(el.find('table > thead > tr > th:nth-child(2)').text().trim(), 'Host', 'check header')
equal(el.find('table > thead > tr > th:nth-child(3)').text().trim(), 'Benutzer', 'check header')
equal(el.find('table > thead > tr > th:nth-child(4)').text().trim(), 'Aktiv', 'check header')
equal(el.find('table > thead > tr > th:nth-child(5)').text().trim(), 'Aktion', 'check header')
equal(el.find('tbody > tr:nth-child(1) > td').length, 5, 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(1)').text().trim(), 'adapter1', 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(2)').text().trim(), 'host1', 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(3)').text().trim(), 'user1', 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(4)').text().trim(), 'ja', 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(5)').text().trim(), '', 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(5) .dropdown.dropdown--actions').length, 0, 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(5) .js-delete').length, 0, 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(5) .js-clone').length, 1, 'check row 1')
equal(el.find('tbody > tr:nth-child(2) > td').length, 5, 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(1)').text().trim(), 'adapter2', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(2)').text().trim(), 'host2', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(3)').text().trim(), 'user2', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(4)').text().trim(), 'ja', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(5)').text().trim(), '', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(5) .dropdown.dropdown--actions').length, 0, 'check row 1')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(5) .js-delete').length, 0, 'check row 1')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(5) .js-clone').length, 1, 'check row 1')
});
test('table test 3', function() {
App.i18n.set('de-de')
$('#table').append('<hr><h1>table with hash</h1><div id="table-hash2"></div>')
var el = $('#table-hash2')
App.Group.refresh( [
{
id: 5,
name: 'group 5',
active: true,
created_at: '2014-06-10T11:17:34.000Z',
},
])
App.Channel.configure_delete = true
App.Channel.configure_clone = true
App.Channel.configure_attributes = [
{ name: 'adapter', display: 'Type', tag: 'select', multiple: false, null: false, options: { IMAP: 'IMAP', POP3: 'POP3' } },
{ name: 'options::host', display: 'Host', tag: 'input', type: 'text', limit: 120, null: true, autocapitalize: false },
{ name: 'options::user', display: 'User', tag: 'input', type: 'text', limit: 120, null: true, autocapitalize: false },
{ name: 'options::password', display: 'Password', tag: 'input', type: 'password', limit: 120, null: true, autocapitalize: false },
{ name: 'options::ssl', display: 'SSL', tag: 'select', multiple: false, null: true, options: { true: 'yes', false: 'no' }, translate: true, default: true},
{ name: 'options::folder', display: 'Folder', tag: 'input', type: 'text', limit: 120, null: true, autocapitalize: false },
{ name: 'group_id', display: 'Group', tag: 'select', multiple: false, null: false, nulloption: true, relation: 'Group' },
{ name: 'active', display: 'Active', tag: 'select', multiple: false, null: false, options: { true: 'yes', false: 'no' }, translate: true, default: true },
]
App.Channel.refresh( [
{
id: 1,
adapter: 'adapter1',
options: {
host: 'host1',
user: 'user1',
},
group_id: 5,
active: true,
created_at: '2014-06-10T11:17:34.000Z',
},
{
id: 2,
adapter: 'adapter2',
options: {
host: 'host2',
user: 'user2',
},
group_id: 5,
active: true,
created_at: '2014-06-10T11:17:34.000Z',
},
] )
new App.ControllerTable({
el: el,
overview: ['adapter', 'options::host', 'options::user', 'active'],
model: App.Channel,
objects: App.Channel.search({sortBy:'adapter', order: 'ASC'}),
})
equal(el.find('table > thead > tr').length, 1, 'row count')
equal(el.find('table > thead > tr > th:nth-child(1)').text().trim(), 'Typ', 'check header')
equal(el.find('table > thead > tr > th:nth-child(2)').text().trim(), 'Host', 'check header')
equal(el.find('table > thead > tr > th:nth-child(3)').text().trim(), 'Benutzer', 'check header')
equal(el.find('table > thead > tr > th:nth-child(4)').text().trim(), 'Aktiv', 'check header')
equal(el.find('table > thead > tr > th:nth-child(5)').text().trim(), 'Aktion', 'check header')
equal(el.find('tbody > tr:nth-child(1) > td').length, 5, 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(1)').text().trim(), 'adapter1', 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(2)').text().trim(), 'host1', 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(3)').text().trim(), 'user1', 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(4)').text().trim(), 'ja', 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(5) .dropdown.dropdown--actions .js-delete').length, 1, 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(5) .dropdown.dropdown--actions .js-clone').length, 1, 'check row 1')
equal(el.find('tbody > tr:nth-child(2) > td').length, 5, 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(1)').text().trim(), 'adapter2', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(2)').text().trim(), 'host2', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(3)').text().trim(), 'user2', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(4)').text().trim(), 'ja', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(5) .dropdown.dropdown--actions .js-delete').length, 1, 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(5) .dropdown.dropdown--actions .js-clone').length, 1, 'check row 2')
});
test('table test 4', function() {
App.i18n.set('de-de')
$('#table').append('<hr><h1>table with link</h1><div id="table-link1"></div>')
var el = $('#table-link1')
App.EmailAddress.refresh( [
{
id: 55,
realname: 'realname 55',
email: 'email 55',
active: true,
created_at: '2014-06-10T11:17:34.000Z',
},
{
id: 56,
realname: 'realname 56',
email: 'email 56',
active: true,
created_at: '2014-06-10T11:17:34.000Z',
},
])
var callbackHeader = function (header) {
console.log('current header is', header);
// add new header item
var attribute = {
name: 'some name',
display: 'Some Name',
};
header.push(attribute);
console.log('new header is', header);
return header
}
var callbackAttributes = function(value, object, attribute, header, refObject) {
console.log('data of item col', value, object, attribute, header, refObject)
value = ' '
attribute.class = 'glyphicon glyphicon-user'
attribute.link = '#'
attribute.title = App.i18n.translateInline('Switch to')
if (object.id == 55) {
attribute.data = {
some: 'value55',
xxx: 55,
}
}
else {
attribute.data = {
some: 'value56',
xxx: 56,
}
}
return value
}
var switchTo = function(id, e) {
e.preventDefault()
console.log('switchTo with id', id, e.target)
//@disconnectClient()
//App.Auth._logout()
//window.location = App.Config.get('api_path') + '/sessions/switch/' + id
}
new App.ControllerTable({
el: el,
model: App.EmailAddress,
objects: App.EmailAddress.search({sortBy:'realname', order: 'ASC'}),
callbackHeader: [callbackHeader],
callbackAttributes: {
'some name': [ callbackAttributes ]
},
bindCol: {
'some name': {
events: {
'click': switchTo,
}
},
},
})
equal(el.find('table > thead > tr').length, 1, 'row count')
equal(el.find('table > thead > tr > th:nth-child(1)').text().trim(), 'Anzeigename', 'check header')
equal(el.find('table > thead > tr > th:nth-child(3)').text().trim(), 'Some Name', 'check header')
equal(el.find('tbody > tr:nth-child(1) > td').length, 3, 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(1)').text().trim(), 'realname 55', 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(2)').text().trim(), 'email 55', 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(3)').text().trim(), '', 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(3) > a > span').hasClass('glyphicon-user'), true, 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(3) > a > span').hasClass('glyphicon'), true, 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(3)').attr('title'), 'Umschalten zu', 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(3) > a > span').data('some'), 'value55', 'check row 2')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(3) > a > span').data('xxx'), '55', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td').length, 3, 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(1)').text().trim(), 'realname 56', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(2)').text().trim(), 'email 56', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(3)').text().trim(), '', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(3) > a > span').hasClass('glyphicon-user'), true, 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(3) > a > span').hasClass('glyphicon'), true, 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(3)').attr('title'), 'Umschalten zu', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(3) > a > span').data('some'), 'value56', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(3) > a > span').data('xxx'), '56', 'check row 2')
});
test('table test 5', function() {
App.i18n.set('de-de')
$('#table').append('<hr><h1>table with data</h1><div id="table-data1"></div>')
var el = $('#table-data1')
data = [
{ name: 'some name 1', data: 'some data 1', active: true },
{ name: 'some name 2', data: 'some data 2', active: false },
{ name: 'some name 3', data: 'some data 3', active: true },
]
new App.ControllerTable({
el: el,
overview: ['name', 'data', 'active'],
attribute_list: [
{ name: 'name', display: 'Name', type: 'text', style: 'width: 10%' },
{ name: 'data', display: 'Data', type: 'text' },
{ name: 'active', display: 'Active', type: 'text' },
],
objects: data
});
equal(el.find('table > thead > tr').length, 1, 'row count')
equal(el.find('table > thead > tr > th:nth-child(1)').text().trim(), 'Name', 'check header')
equal(el.find('table > thead > tr > th:nth-child(2)').text().trim(), 'Data', 'check header')
equal(el.find('table > thead > tr > th:nth-child(3)').text().trim(), 'Aktiv', 'check header')
equal(el.find('tbody > tr:nth-child(1) > td').length, 3, 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:first').text().trim(), 'some name 1', 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(2)').text().trim(), 'some data 1', 'check row 1')
equal(el.find('tbody > tr:nth-child(1) > td:nth-child(3)').text().trim(), 'true', 'check row 1')
equal(el.find('tbody > tr:nth-child(2) > td').length, 3, 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:first').text().trim(), 'some name 2', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(2)').text().trim(), 'some data 2', 'check row 2')
equal(el.find('tbody > tr:nth-child(2) > td:nth-child(3)').text().trim(), 'false', 'check row 2')
});
test('table test 6/7', function() {
$('#table').append('<hr><h1>sotable table with data</h1><div id="table-data6"></div>')
var el_head_sortable = $('#table-data6')
$('#table').append('<hr><h1>not sortable table with data</h1><div id="table-data7"></div>')
var el_not_head_sortable = $('#table-data7')
data = [
{ name: 'a item', data: 'g data', active: true },
{ name: 'b item', data: 'b data', active: false },
{ name: 'c item', data: 'z data', active: false },
{ name: 'd item', data: '', active: false },
]
new App.ControllerTable({
tableId: 'a',
el: el_head_sortable,
overview: ['name', 'data', 'active'],
attribute_list: [
{ name: 'name', display: 'Name', type: 'text', style: 'width: 10%', unsortable: true },
{ name: 'data', display: 'Data', type: 'text' },
{ name: 'active', display: 'Active', type: 'text' },
],
objects: data
});
new App.ControllerTable({
tableId: 'b',
el: el_not_head_sortable,
overview: ['name', 'data', 'active'],
attribute_list: [
{ name: 'name', display: 'Name', type: 'text', style: 'width: 10%', unsortable: true },
{ name: 'data', display: 'Data', type: 'text' },
{ name: 'active', display: 'Active', type: 'text' },
],
objects: data,
dndCallback: function() { return true }
});
equal(el_head_sortable.find('tbody > tr:nth-child(1) > td:first').text().trim(), 'a item', 'check row 1')
equal(el_not_head_sortable.find('tbody > tr:nth-child(1) > td:nth-child(2)').text().trim(), 'a item', 'check row 1')
ok(_.isEqual(list_items(el_head_sortable, 1), ['a item', 'b item', 'c item', 'd item']), 'sortable table is rendered correctly')
ok(_.isEqual(list_items(el_not_head_sortable, 2), ['a item', 'b item', 'c item', 'd item']), 'unsortable table is rendered correctly')
click_sort(el_head_sortable, 2)
click_sort(el_not_head_sortable, 3)
ok(_.isEqual(list_items(el_head_sortable, 1), ['b item', 'a item', 'c item', 'd item']), 'sortable table is sorted')
ok(_.isEqual(list_items(el_not_head_sortable, 2), ['a item', 'b item', 'c item', 'd item']), 'unsortable table is not sorted')
click_sort(el_head_sortable, 3)
ok(_.isEqual(list_items(el_head_sortable, 1), ['b item', 'c item', 'd item', 'a item']), 'sorting by boolean column works')
click_sort(el_head_sortable, 1)
ok(_.isEqual(list_items(el_head_sortable, 1), ['b item', 'c item', 'd item', 'a item']), 'sorting on name column is disabled')
});
function click_sort(table, column_number) {
table
.find(`table > thead > tr > th:nth-child(${column_number}) > .js-sort`)
.click()
}
function list_items(table, column_number) {
return table
.find(`tbody > tr > td:nth-child(${column_number})`)
.text()
.split("\n")
.filter(elem => elem.match(/[\w]+/))
.map(elem => elem.trim())
}

File diff suppressed because it is too large Load diff

View file

@ -1,316 +0,0 @@
window.onload = function() {
test( "taskbar basic tests", function() {
// create task bar div
$('#taskbars').append('<hr><h1>taskbar basic tests</h1><div id="taskbar1"></div>')
App.TaskManager.init({
el: $('#taskbar1'),
offlineModus: true,
force: true,
})
// add tasks
App.TaskManager.execute({
key: 'TestKey1',
controller: 'TestController1',
params: {
message: '#1',
},
show: true,
persistent: false,
})
equal($('#taskbars .content').length, 1, "check available active contents")
equal($('#taskbars .content.active').length, 1, "check available active contents")
equal($('#taskbars .content.active').text(), "some test controller message:'#1',show:'true',hide:'false',active:'true'", "check active content!")
// verify
task = App.TaskManager.get('TestKey1')
equal(task.notify, false)
deepEqual(task.state, undefined)
deepEqual(task.params, { "message": "#1", "shown": true })
// update
App.TaskManager.update('TestKey1', { 'state': 'abc' })
App.TaskManager.update('TestKey1', { 'params': { a: 12 } })
App.TaskManager.notify('TestKey1')
// verify
task = App.TaskManager.get('TestKey1')
equal(task.notify, true)
deepEqual(task.state, 'abc')
deepEqual(task.params, { "a": 12 })
App.TaskManager.execute({
key: 'TestKey2',
controller: 'TestController1',
params: {
message: '#2',
},
show: true,
persistent: false,
})
equal($('#taskbars .content').length, 2, "check available active contents")
equal($('#taskbars .content.active').length, 1, "check available active contents")
equal($('#taskbars .content.active').text(), "some test controller message:'#2',show:'true',hide:'false',active:'true'", "check active content!")
equal($('#taskbars #content_permanent_TestKey1').text(), "some test controller message:'#1',show:'true',hide:'true',active:'false'", "check active content!")
equal($('#taskbars #content_permanent_TestKey2').text(), "some test controller message:'#2',show:'true',hide:'false',active:'true'", "check active content!")
// check task history
equal(App.TaskManager.nextTaskUrl(), '#/some/url/#2')
equal(App.TaskManager.nextTaskUrl(), '#/some/url/#1')
App.TaskManager.execute({
key: 'TestKey3',
controller: 'TestController1',
params: {
message: '#3',
},
show: false,
persistent: false,
})
equal($('#taskbars .content').length, 2, "check available active contents")
equal($('#taskbars .content.active').length, 1, "check available active contents")
equal($('#taskbars .content.active').text(), "some test controller message:'#2',show:'true',hide:'false',active:'true'")
equal($('#taskbars #content_permanent_TestKey1').text(), "some test controller message:'#1',show:'true',hide:'true',active:'false'", "check active content!")
equal($('#taskbars #content_permanent_TestKey2').text(), "some test controller message:'#2',show:'true',hide:'false',active:'true'", "check active content!")
App.TaskManager.execute({
key: 'TestKey3',
controller: 'TestController1',
params: {
message: '#3',
},
show: true,
persistent: false,
})
equal($('#taskbars .content').length, 3, "check available active contents")
equal($('#taskbars .content.active').length, 1, "check available active contents")
equal($('#taskbars .content.active').text(), "some test controller message:'#3',show:'true',hide:'true',active:'true'", "check active content!")
equal($('#taskbars #content_permanent_TestKey1').text(), "some test controller message:'#1',show:'true',hide:'true',active:'false'", "check active content!")
equal($('#taskbars #content_permanent_TestKey2').text(), "some test controller message:'#2',show:'true',hide:'true',active:'false'", "check active content!")
equal($('#taskbars #content_permanent_TestKey3').text(), "some test controller message:'#3',show:'true',hide:'true',active:'true'", "check active content!")
App.TaskManager.execute({
key: 'TestKey4',
controller: 'TestController1',
params: {
message: '#4',
},
show: false,
persistent: true,
})
equal($('#taskbars .content').length, 3, "check available active contents")
equal($('#taskbars .content.active').length, 1, "check available active contents")
equal($('#taskbars .content.active').text(), "some test controller message:'#3',show:'true',hide:'true',active:'true'", "check active content!")
equal($('#taskbars #content_permanent_TestKey1').text(), "some test controller message:'#1',show:'true',hide:'true',active:'false'", "check active content!")
equal($('#taskbars #content_permanent_TestKey2').text(), "some test controller message:'#2',show:'true',hide:'true',active:'false'", "check active content!")
equal($('#taskbars #content_permanent_TestKey3').text(), "some test controller message:'#3',show:'true',hide:'true',active:'true'", "check active content!")
App.TaskManager.execute({
key: 'TestKey5',
controller: 'TestController1',
params: {
message: '#5',
},
show: true,
persistent: true,
})
equal($('#taskbars .content').length, 4, "check available active contents")
equal($('#taskbars .content.active').length, 1, "check available active contents")
equal($('#taskbars .content.active').text(), "some test controller message:'#5',show:'true',hide:'false',active:'true'")
equal($('#taskbars #content_permanent_TestKey1').text(), "some test controller message:'#1',show:'true',hide:'true',active:'false'", "check active content!")
equal($('#taskbars #content_permanent_TestKey2').text(), "some test controller message:'#2',show:'true',hide:'true',active:'false'", "check active content!")
equal($('#taskbars #content_permanent_TestKey3').text(), "some test controller message:'#3',show:'true',hide:'true',active:'false'", "check active content!")
equal($('#taskbars #content_permanent_TestKey5').text(), "some test controller message:'#5',show:'true',hide:'false',active:'true'", "check active content!")
App.TaskManager.execute({
key: 'TestKey6',
controller: 'TestController1',
params: {
message: '#6',
},
show: true,
persistent: false,
})
equal($('#taskbars .content').length, 5, "check available active contents")
equal($('#taskbars .content.active').length, 1, "check available active contents")
equal($('#taskbars .content.active').text(), "some test controller message:'#6',show:'true',hide:'false',active:'true'")
equal($('#taskbars #content_permanent_TestKey1').text(), "some test controller message:'#1',show:'true',hide:'true',active:'false'", "check active content!")
equal($('#taskbars #content_permanent_TestKey2').text(), "some test controller message:'#2',show:'true',hide:'true',active:'false'", "check active content!")
equal($('#taskbars #content_permanent_TestKey3').text(), "some test controller message:'#3',show:'true',hide:'true',active:'false'", "check active content!")
equal($('#taskbars #content_permanent_TestKey5').text(), "some test controller message:'#5',show:'true',hide:'true',active:'false'", "check active content!")
equal($('#taskbars #content_permanent_TestKey6').text(), "some test controller message:'#6',show:'true',hide:'false',active:'true'", "check active content!")
// remove task#2
App.TaskManager.remove('TestKey2')
equal($('#taskbars .content').length, 4, "check available active contents")
equal($('#taskbars .content.active').length, 1, "check available active contents")
equal($('#taskbars .content.active').text(), "some test controller message:'#6',show:'true',hide:'false',active:'true'")
equal($('#taskbars #content_permanent_TestKey1').text(), "some test controller message:'#1',show:'true',hide:'true',active:'false'", "check active content!")
equal($('#taskbars #content_permanent_TestKey3').text(), "some test controller message:'#3',show:'true',hide:'true',active:'false'", "check active content!")
equal($('#taskbars #content_permanent_TestKey5').text(), "some test controller message:'#5',show:'true',hide:'true',active:'false'", "check active content!")
equal($('#taskbars #content_permanent_TestKey6').text(), "some test controller message:'#6',show:'true',hide:'false',active:'true'", "check active content!")
// activate task#3
App.TaskManager.execute({
key: 'TestKey3',
controller: 'TestController1',
params: {
message: '#3',
},
show: true,
persistent: false,
})
equal($('#taskbars .content').length, 4, "check available active contents")
equal($('#taskbars .content.active').length, 1, "check available active contents")
equal($('#taskbars .content.active').text(), "some test controller message:'#3',show:'true',hide:'true',active:'true'")
equal($('#taskbars #content_permanent_TestKey1').text(), "some test controller message:'#1',show:'true',hide:'true',active:'false'", "check active content!")
equal($('#taskbars #content_permanent_TestKey3').text(), "some test controller message:'#3',show:'true',hide:'true',active:'true'", "check active content!")
equal($('#taskbars #content_permanent_TestKey5').text(), "some test controller message:'#5',show:'true',hide:'true',active:'false'", "check active content!")
equal($('#taskbars #content_permanent_TestKey6').text(), "some test controller message:'#6',show:'true',hide:'true',active:'false'", "check active content!")
// activate task#1
App.TaskManager.execute({
key: 'TestKey1',
controller: 'TestController1',
params: {
message: '#1',
},
show: true,
persistent: false,
})
equal($('#taskbars .content').length, 4, "check available active contents")
equal($('#taskbars .content.active').length, 1, "check available active contents")
equal($('#taskbars .content.active').text(), "some test controller message:'#1',show:'true',hide:'true',active:'true'")
equal($('#taskbars #content_permanent_TestKey1').text(), "some test controller message:'#1',show:'true',hide:'true',active:'true'", "check active content!")
equal($('#taskbars #content_permanent_TestKey3').text(), "some test controller message:'#3',show:'true',hide:'true',active:'false'", "check active content!")
equal($('#taskbars #content_permanent_TestKey5').text(), "some test controller message:'#5',show:'true',hide:'true',active:'false'", "check active content!")
equal($('#taskbars #content_permanent_TestKey6').text(), "some test controller message:'#6',show:'true',hide:'true',active:'false'", "check active content!")
// remove task#1
App.TaskManager.remove('TestKey1')
// verify if task#3 is active
equal($('#taskbars .content').length, 3, "check available active contents")
equal($('#taskbars .content.active').length, 0, "check available active contents")
equal($('#taskbars .content.active').text(), "")
// remove task#3
App.TaskManager.remove('TestKey3')
// verify if task#5 is active
equal($('#taskbars .content').length, 2, "check available active contents")
equal($('#taskbars .content.active').length, 0, "check available active contents")
equal($('#taskbars .content.active').text(), "")
// remove task#5 // can not get removed because of permanent task
App.TaskManager.remove('TestKey5')
// verify if task#5 is active
equal($('#taskbars .content').length, 2, "check available active contents")
equal($('#taskbars .content.active').length, 0, "check available active contents")
equal($('#taskbars .content.active').text(), "")
// create task#7
App.TaskManager.execute({
key: 'TestKey7',
controller: 'TestController1',
params: {
message: '#7',
},
show: true,
persistent: false,
})
equal($('#taskbars .content').length, 3, "check available active contents")
equal($('#taskbars .content.active').length, 1, "check available active contents")
equal($('#taskbars .content.active').text(), "some test controller message:'#7',show:'true',hide:'false',active:'true'", "check active content!")
// remove task#7
App.TaskManager.remove('TestKey7')
// verify if task#5 is active
equal($('#taskbars .content').length, 2, "check available active contents")
equal($('#taskbars .content.active').length, 0, "check available active contents")
equal($('#taskbars .content.active').text(), "")
// check task history
equal(App.TaskManager.nextTaskUrl(), '#/some/url/#6')
equal(App.TaskManager.nextTaskUrl(), '#/some/url/#5')
equal(App.TaskManager.nextTaskUrl(), '#/some/url/#6')
equal(App.TaskManager.nextTaskUrl(), '#/some/url/#6')
// remove task#6
App.TaskManager.remove('TestKey6')
// check task history
equal(App.TaskManager.nextTaskUrl(), false)
equal(App.TaskManager.nextTaskUrl(), false)
// check max tabs
var times = 5;
App.TaskManager.tasksAutoCleanupDelayTime(200)
App.TaskManager.tasksAutoCleanupTaskMax(3)
for(var i=0; i < times; i++){
App.TaskManager.execute({
key: 'TestKeyLoop' + i,
controller: 'TestController1',
params: {
message: "#" + i,
},
show: true,
persistent: false,
})
}
equal(App.TaskManager.all().length, 5)
})
App.Delay.set(function() {
test( "taskbar check max tabs 2", function() {
equal(App.TaskManager.all().length, 3)
var times = 5;
for(var i=0; i < times; i++){
App.TaskManager.execute({
key: 'TestKeyLoop2' + i,
controller: 'TestController1',
params: {
message: "#" + i,
changedState: true
},
show: true,
persistent: false,
})
}
equal(App.TaskManager.all().length, 8)
})
}, 1000);
App.Delay.set(function() {
test( "taskbar check max tabs 5", function() {
equal(App.TaskManager.all().length, 5)
// destroy task bar
App.TaskManager.reset()
// check if any taskar exists
equal($('#taskbars .content').length, 0, "check available active contents")
})
}, 2000);
}

View file

@ -2,174 +2,62 @@
require 'rails_helper' require 'rails_helper'
RSpec.describe 'QUnit', type: :system, authenticated_as: false, set_up: true, websocket: false do RSpec.describe 'QUnit', type: :system, authenticated_as: false, set_up: true, websocket: false, time_zone: 'Europe/London' do
matcher :pass_qunit_test do
match do
actual.has_css?('.total', wait: 120)
def q_unit_tests(test_name) actual.has_css? '.result .failed', text: '0', wait: 0
visit "/tests_#{test_name}"
yield if block_given?
expect(page).to have_css('.result', text: 'Tests completed')
expect(page).to have_css('.result .failed', text: '0')
end end
def async_q_unit_tests(*args) failure_message do
q_unit_tests(*args) do messages = actual
wait(120, interval: 3).until_constant do .all('.qunit-assert-list li.fail')
page.has_css?('.total', wait: 0) ? find('.total').text : nil .map { |elem| "> #{failure_name(elem)}\n#{failure_source(elem)}" }
.join("\n")
"Failed #{failed_count} out of #{total_count}:\n#{messages}"
end end
def failure_source(row)
row
.find('.test-source pre')
.text
.strip
.lines[0, 2]
.reject { |line| line.include? 'qunit-' }
.join
end
def failure_name(row)
row
.find('.test-message')
.text
.strip
end
def failed_count
actual.find('.result .failed').text
end
def total_count
actual.find('.result .total').text
end end
end end
it 'Core' do files = if (basename = ENV['QUNIT_TEST'])
async_q_unit_tests('core') [basename]
else
Pathname
.glob('public/assets/tests/qunit/*.js')
.map { |elem| elem.basename(elem.extname).to_s }
.sort
end end
it 'I18n' do files.each do |elem|
async_q_unit_tests('i18n') it elem.humanize do
end visit "/tests_#{elem}"
expect(page).to pass_qunit_test
context 'UI' do
it 'Base' do
q_unit_tests('ui')
end
it 'Local storage' do
q_unit_tests('local_storage')
end
it 'Model' do
async_q_unit_tests('model')
end
it 'Model binding' do
q_unit_tests('model_binding')
end
it 'Model UI' do
if !ENV['CI']
skip("Can't run locally because of dependence of special Timezone")
end
q_unit_tests('model_ui')
end
it 'Model Ticket' do
q_unit_tests('model_ticket')
end
it 'Ticket selector' do
q_unit_tests('ticket_selector')
end
it 'Image Service' do
q_unit_tests('image_service')
end
end
context 'Form' do
it 'Base' do
async_q_unit_tests('form')
end
it 'Trim' do
q_unit_tests('form_trim')
end
it 'Find' do
q_unit_tests('form_find')
end
it 'Timer' do
q_unit_tests('form_timer')
end
it 'Color' do
q_unit_tests('form_color')
end
it 'Extended' do
q_unit_tests('form_extended')
end
it 'Searchable select' do
q_unit_tests('form_searchable_select')
end
it 'Tree select' do
q_unit_tests('form_tree_select')
end
it 'Column select' do
q_unit_tests('form_column_select')
end
it 'Ticket perform action' do
async_q_unit_tests('form_ticket_perform_action')
end
it 'Ticket macro' do
q_unit_tests('ticket_macro')
end
it 'Validation' do
q_unit_tests('form_validation')
end
it 'Skip rendering' do
q_unit_tests('form_skip_rendering')
end
it 'SLA times' do
q_unit_tests('form_sla_times')
end
it 'DateTime' do
q_unit_tests('form_datetime')
end
it 'Core Workflow' do
q_unit_tests('form_core_workflow')
end
end
context 'Form AJAX', searchindex: true do
before do
configure_elasticsearch
rebuild_searchindex
end
it 'autocompletion ajax' do
async_q_unit_tests('form_autocompletion_ajax')
end
end
context 'Table' do
it 'Base' do
q_unit_tests('table')
end
it 'Extended' do
q_unit_tests('table_extended')
end
it 'HTML utils' do
q_unit_tests('html_utils')
end
it 'Taskbar' do
q_unit_tests('taskbar')
end
end
context 'Knowlede Base Editor' do
it 'Vdeo Embeding' do
q_unit_tests('kb_video_embeding')
end end
end end
end end