Remove obsolete JavaScript tests

This commit is contained in:
Thomas Gelf 2014-03-29 15:27:01 +00:00
parent afc905f090
commit 8ca9437a9c
11 changed files with 0 additions and 1095 deletions

View File

@ -1 +0,0 @@
../../library/vendor/**

View File

@ -1,6 +0,0 @@
/* See http://www.jshint.com/docs/#usage on how to use this file */
{
}

View File

@ -1,153 +0,0 @@
#!/usr/bin/env python
import os
import sys
import subprocess
from pipes import quote
from fnmatch import fnmatch
from optparse import OptionParser, BadOptionError, AmbiguousOptionError
APPLICATION = 'jshint'
DEFAULT_ARGS = []
VAGRANT_SCRIPT = '/vagrant/test/js/checkswag'
REPORT_DIRECTORY = '../../build/log'
class PassThroughOptionParser(OptionParser):
"""
An unknown option pass-through implementation of OptionParser.
When unknown arguments are encountered, bundle with largs and try again,
until rargs is depleted.
sys.exit(status) will still be called if a known argument is passed
incorrectly (e.g. missing arguments or bad argument types, etc.)
Borrowed from: http://stackoverflow.com/a/9307174
"""
def _process_args(self, largs, rargs, values):
while rargs:
try:
OptionParser._process_args(self, largs, rargs, values)
except (BadOptionError, AmbiguousOptionError), error:
largs.append(error.opt_str)
def execute_command(command, return_output=False, shell=False):
prog = subprocess.Popen(command, shell=shell,
stdout=subprocess.PIPE
if return_output
else None)
return prog.wait() if not return_output else \
prog.communicate()[0]
def get_report_directory():
path = os.path.abspath(REPORT_DIRECTORY)
try:
os.makedirs(REPORT_DIRECTORY)
except OSError:
pass
return path
def get_script_directory():
return os.path.dirname(os.path.abspath(sys.argv[0]))
def parse_commandline():
parser = PassThroughOptionParser(usage='%prog [options] [additional arguments'
' for {0}]'.format(APPLICATION))
parser.add_option('-b', '--build', action='store_true',
help='Enable reporting.')
parser.add_option('-v', '--verbose', action='store_true',
help='Be more verbose.')
parser.add_option('-i', '--include', metavar='PATTERN', action='append',
help='Include only specific files/test cases.'
' (Can be supplied multiple times.)')
parser.add_option('-e', '--exclude', metavar='PATTERN', action='append',
help='Exclude specific files/test cases. '
'(Can be supplied multiple times.)')
parser.add_option('-V', '--vagrant', action='store_true',
help='Run in vagrant VM')
return parser.parse_args()
def main():
options, arguments = parse_commandline()
if options.vagrant and os.environ['USER'] != 'vagrant':
# Check if vagrant is installed
vagrant_path = execute_command('which vagrant', True, True).strip()
if not vagrant_path:
print 'ERROR: vagrant not found!'
return 2
# Call the script in the Vagrant VM with the same parameters
commandline = ' '.join(quote(p) for p in sys.argv[1:])
return execute_command('vagrant ssh -c "{0} {1}"'
''.format(VAGRANT_SCRIPT, commandline),
shell=True)
else:
# Environment preparation and verification
os.chdir(get_script_directory())
application_path = execute_command('which {0}'.format(APPLICATION),
True, True).strip()
if not application_path:
print 'ERROR: {0} not found!'.format(APPLICATION)
return 2
# Commandline preparation
command_options = []
if options.build:
command_options.extend(['--reporter', 'jslint'])
else:
command_options.append('--verbose')
if options.verbose:
command_options.append('--show-non-errors')
path_args = [arguments.remove(a) or a
for a in arguments[:len(arguments)]
if os.path.isfile(a) or os.path.isdir(a)]
if not path_args:
path_args = ['../../public/js/icinga', '../../bin',
'../../modules/']
if options.include:
path_args = [os.path.join(r, f)
for a in path_args
for r, _, fs in os.walk(a)
for f in fs
if any(fnmatch(os.path.join(r, f), p)
for p in options.include)]
if options.exclude:
walk = lambda p: os.walk(p) if os.path.isdir(p) else \
[(os.path.dirname(p), None,
[os.path.basename(p)])]
path_args = [os.path.join(r, f)
for a in path_args
for r, _, fs in walk(a)
for f in fs
if not any(fnmatch(os.path.join(r, f), p)
for p in options.exclude)]
# Application invocation..
if options.build:
result_data = execute_command([application_path] + DEFAULT_ARGS +
command_options + arguments +
path_args, True)
result_path = os.path.join(get_report_directory(),
'jshint_results.xml')
with open(result_path, 'w') as result_file:
result_file.write(result_data)
else:
print (application_path )
execute_command([application_path] + DEFAULT_ARGS +
command_options + arguments + path_args)
return 0
if __name__ == '__main__':
sys.exit(main())

View File

@ -1,39 +0,0 @@
// {{{ICINGA_LICENSE_HEADER}}}
/**
* This file is part of Icinga Web 2.
*
* Icinga Web 2 - Head for multiple monitoring backends.
* Copyright (C) 2013 Icinga Development Team
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* @copyright 2013 Icinga Development Team <info@icinga.org>
* @license http://www.gnu.org/licenses/gpl-2.0.txt GPL, version 2
* @author Icinga Development Team <info@icinga.org>
*
*/
// {{{ICINGA_LICENSE_HEADER}}}
describe('regression test for bug #4102', function(){
it('Object.create', function(){
Object.create.should.be.a('function');
var t = {
name: 'test123'
};
t.should.have.property('name').and.equal('test123');
});
});

View File

@ -1,149 +0,0 @@
#!/usr/bin/env python
import os
import sys
import subprocess
from pipes import quote
from optparse import OptionParser, BadOptionError, AmbiguousOptionError
APPLICATION = 'mocha'
DEFAULT_ARGS = ['--recursive', '--require', 'should']
VAGRANT_SCRIPT = '/vagrant/test/js/runtests'
REPORT_DIRECTORY = '../../build/log'
class PassThroughOptionParser(OptionParser):
"""
An unknown option pass-through implementation of OptionParser.
When unknown arguments are encountered, bundle with largs and try again,
until rargs is depleted.
sys.exit(status) will still be called if a known argument is passed
incorrectly (e.g. missing arguments or bad argument types, etc.)
Borrowed from: http://stackoverflow.com/a/9307174
"""
def _process_args(self, largs, rargs, values):
while rargs:
try:
OptionParser._process_args(self, largs, rargs, values)
except (BadOptionError, AmbiguousOptionError), error:
largs.append(error.opt_str)
def execute_command(command, return_output=False, shell=False):
prog = subprocess.Popen(command, shell=shell,
stdout=subprocess.PIPE
if return_output
else None)
return prog.wait() if not return_output else \
prog.communicate()[0]
def get_report_directory():
path = os.path.abspath(REPORT_DIRECTORY)
try:
os.makedirs(REPORT_DIRECTORY)
except OSError:
pass
return path
def get_script_directory():
return os.path.dirname(os.path.abspath(sys.argv[0]))
def parse_commandline():
parser = PassThroughOptionParser(usage='%prog [options] [additional arguments'
' for {0}]'.format(APPLICATION))
parser.add_option('-b', '--build', action='store_true',
help='Enable reporting.')
parser.add_option('-v', '--verbose', action='store_true',
help='Be more verbose.')
parser.add_option('-i', '--include', metavar='PATTERN', action='append',
help='Include only specific files/test cases.'
' (Can be supplied multiple times.)')
parser.add_option('-e', '--exclude', metavar='PATTERN', action='append',
help='Exclude specific files/test cases. '
'(Can be supplied multiple times.)')
parser.add_option('-V', '--vagrant', action='store_true',
help='Run in vagrant VM')
return parser.parse_args()
def main():
options, arguments = parse_commandline()
if options.vagrant and os.environ['USER'] != 'vagrant':
# Check if vagrant is installed
vagrant_path = execute_command('which vagrant', True, True).strip()
if not vagrant_path:
print 'ERROR: vagrant not found!'
return 2
# Call the script in the Vagrant VM with the same parameters
commandline = ' '.join(quote(p) for p in sys.argv[1:])
return execute_command('vagrant ssh -c "{0} {1}"'
''.format(VAGRANT_SCRIPT, commandline),
shell=True)
else:
# Environment preparation and verification
os.chdir(get_script_directory())
application_path = execute_command('which {0}'.format(APPLICATION),
True, True).strip()
if not application_path:
print 'ERROR: {0} not found!'.format(APPLICATION)
return 2
os.environ['NODE_PATH'] = os.environ.get('NODE_PATH', '') + \
':/usr/local/lib/node_modules' \
':/usr/local/share/npm/lib/node_modules' \
':/usr/lib/node_modules:./testlib'
# Commandline preparation
command_options, more_command_options = [], None
if options.include or options.exclude:
for pattern in (options.include or options.exclude):
command_options.append('--grep')
command_options.append(pattern)
if options.exclude:
command_options.append('--invert')
if options.build:
more_command_options = command_options[:len(command_options)] + \
['--reporter', 'mocha-cobertura-reporter']
command_options.extend(['--reporter', 'xunit'])
elif options.verbose:
command_options.extend(['--reporter', 'spec'])
else:
command_options.extend(['--reporter', 'nyan'])
if not any(os.path.isfile(a) or os.path.isdir(a) for a in arguments):
arguments.append('.')
# Application invocation..
if more_command_options is None:
execute_command([application_path] + DEFAULT_ARGS +
command_options + arguments)
else:
result_data = execute_command([application_path] + DEFAULT_ARGS +
command_options + arguments, True)
coverage_data = execute_command([application_path] + DEFAULT_ARGS +
more_command_options + arguments,
return_output=True)
# Result storage
report_directory = get_report_directory()
result_path = os.path.join(report_directory, 'mocha_results.xml')
coverage_path = os.path.join(report_directory, 'mocha_coverage.xml')
with open(result_path, 'w') as result_file:
result_file.write(result_data)
with open(coverage_path, 'w') as coverage_file:
coverage_file.write(coverage_data)
return 0
if __name__ == '__main__':
sys.exit(main())

View File

@ -1,168 +0,0 @@
// {{{ICINGA_LICENSE_HEADER}}}
/**
* This file is part of Icinga Web 2.
*
* Icinga Web 2 - Head for multiple monitoring backends.
* Copyright (C) 2013 Icinga Development Team
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* @copyright 2013 Icinga Development Team <info@icinga.org>
* @license http://www.gnu.org/licenses/gpl-2.0.txt GPL, version 2
* @author Icinga Development Team <info@icinga.org>
*
*/
// {{{ICINGA_LICENSE_HEADER}}}
require('should');
var rjsmock = require('requiremock.js');
GLOBAL.document = $('body');
var component;
/**
* Set up the test fixture
*
* @param registry The optional registry mock that should be used.
*/
var setUp = function(registry)
{
rjsmock.purgeDependencies();
requireNew('icinga/componentRegistry.js');
registry = registry || rjsmock.getDefine();
rjsmock.registerDependencies({
'icinga/componentRegistry': registry,
/*
* Available components
*/
'components/app/component1': function(cmp) {
cmp.test = 'changed-by-component-1';
this.type = function() {
return "app/component1";
};
return this;
},
'components/app/component2': function(cmp) {
cmp.test = 'changed-by-component-2';
this.type = function() {
return "app/component2";
};
return this;
},
'components/module/component3': function(cmp) {
cmp.test = 'changed-by-component-3-from-module';
this.type = function() {
return "module/component3";
};
return this;
}
});
$('body').empty();
requireNew('icinga/componentLoader.js');
component = rjsmock.getDefine();
};
/**
* Add a new component to the current test-DOM
*
* @param type {String} The type of the component in the form: "<module>/<type>"
* @param id {String} The optional id of the component
*/
var addComponent = function(type, id) {
var txt = '<div ' + ( id ? ( ' id= "' + id + '" ' ) : '' ) +
' data-icinga-component="' + type + '" >test</div>';
$('body').append(txt);
};
describe('Component loader', function() {
it('Component loaded with automatic id', function() {
setUp();
addComponent('app/component1');
component.load(function() {
var cmpNode = $('#icinga-component-0');
cmpNode.length.should.equal(1);
cmpNode[0].test.should.equal('changed-by-component-1');
component.getById('icinga-component-0').type().should.equal('app/component1');
});
});
xit('Component load with user-defined id', function() {
setUp();
addComponent('app/component2','some-id');
component.load(function() {
var cmpNode = $('#some-id');
cmpNode.length.should.equal(1);
cmpNode[0].test.should.equal('changed-by-component-2');
component.getById('some-id').type().should.equal('app/component2');
});
});
it('Garbage collection removes deleted components', function() {
setUp();
addComponent('app/component1');
addComponent('app/component2');
addComponent('app/component2');
addComponent('module/component3');
component.load(function() {
var components = component.getComponents();
components.length.should.equal(4);
$('body').empty();
component.load(function() {
var components = component.getComponents();
components.length.should.equal(0);
});
});
});
it('Component queries are delegated to the registry correctly', function() {
var getByIdCalled = false;
var getByTypeCalled = false;
var getComponentsCalled = false;
var registryMock = {
getById: function(id) {
getByIdCalled = true;
id.should.equal('some-id');
},
getByType: function(type) {
getByTypeCalled = true;
type.should.equal('some-type');
},
getComponents: function() {
getComponentsCalled = true;
}
};
setUp(registryMock);
component.getById('some-id');
getByIdCalled.should.be.true;
component.getByType('some-type');
getByTypeCalled.should.be.true;
component.getComponents();
getComponentsCalled.should.be.true;
});
});

View File

@ -1,115 +0,0 @@
// {{{ICINGA_LICENSE_HEADER}}}
/**
* This file is part of Icinga Web 2.
*
* Icinga Web 2 - Head for multiple monitoring backends.
* Copyright (C) 2013 Icinga Development Team
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* @copyright 2013 Icinga Development Team <info@icinga.org>
* @license http://www.gnu.org/licenses/gpl-2.0.txt GPL, version 2
* @author Icinga Development Team <info@icinga.org>
*
*/
// {{{ICINGA_LICENSE_HEADER}}}
/*global requireNew:false, describe: false, it:false */
/**
* The assertion framework
*
* @type {should}
*/
var should = require('should');
/**
* RequireJS mocks for dynamically loading modules
*
* @type {requiremock}
*/
var rjsmock = require('requiremock.js');
/**
* URIjs object for easier URL manipulation
*
* @type {URIjs}
*/
var URI = require('URIjs');
// Setup required globals for this test
GLOBAL.document = $('body');
GLOBAL.History = require('historymock.js');
GLOBAL.Modernizr = {
history: true
};
/**
* Workaround as jQuery.contains doesn't work with the nodejs jQuery library on some test systems
*
* @returns {boolean}
*/
jQuery.contains = function() {
'use strict';
return true;
};
/**
* Create a basic dom only containing a main and detail container
*
*/
var createDOM = function() {
'use strict';
document.empty();
document.append(
$('<div>').attr('id', 'icingamain')
).append(
$('<div>').attr('id', 'icingadetail')
);
};
$.ajax = function(obj) {
obj.success("<div></div>");
};
/**
* Test case
*
*/
describe('The container component', function() {
'use strict';
/**
* Test dom selectors and instance creation
*/
it('should provide access to the main and detail component', function() {
createDOM();
rjsmock.registerDependencies({
'URIjs/URI' : URI,
'icinga/util/url' : 'icinga/util/url.js'
});
requireNew('icinga/components/container.js');
var Container = rjsmock.getDefine();
should.exist(Container.getMainContainer().containerDom, 'Assert that the main container has an DOM attached');
should.exist(Container.getDetailContainer().containerDom, 'Assert that the detail container has an DOM attached');
Container.getMainContainer().containerDom[0].should.equal(
$('#icingamain')[0], 'Assert the DOM of the main container being #icingamain');
Container.getDetailContainer().containerDom[0].should.equal(
$('#icingadetail')[0], 'Assert the DOM of the detail container being #icingadetail');
});
});

View File

@ -1,139 +0,0 @@
// {{{ICINGA_LICENSE_HEADER}}}
/**
* This file is part of Icinga Web 2.
*
* Icinga Web 2 - Head for multiple monitoring backends.
* Copyright (C) 2013 Icinga Development Team
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* @copyright 2013 Icinga Development Team <info@icinga.org>
* @license http://www.gnu.org/licenses/gpl-2.0.txt GPL, version 2
* @author Icinga Development Team <info@icinga.org>
*
*/
// {{{ICINGA_LICENSE_HEADER}}}
var should = require('should');
var rjsmock = require('requiremock.js');
GLOBAL.document = $('body');
var registry;
var setUp = function() {
requireNew('icinga/componentRegistry.js');
registry = rjsmock.getDefine();
};
var cleanTestDom = function() {
$('body').empty();
};
describe('Component registry',function() {
it('Ids are created automatically in the form "icinga-component-<id>"', function() {
setUp();
registry.add({}, null, null).should.equal('icinga-component-0');
registry.add({}, null, null).should.equal('icinga-component-1');
registry.add({}, null, null).should.equal('icinga-component-2');
cleanTestDom();
});
xit('Existing ids are preserved', function() {
setUp();
registry.add({}, 'user-defined-id', null).should.equal('user-defined-id');
cleanTestDom();
});
it('Components are correctly added to the library', function() {
setUp();
var cmp2 = { component: "cmp2" };
registry.add(cmp2, null, null);
registry.getById('icinga-component-0').should.equal(cmp2);
cleanTestDom();
});
/**
* Not supported anymore
*/
xit('getId(component) should return the components assigned id.', function() {
setUp();
var cmp1 = { component: "cmp1" };
registry.add(cmp1, 'user-defined-id', null);
registry.getId(cmp1).should.equal('user-defined-id');
var cmp2 = { component: "cmp2" };
registry.add(cmp2, 'user-defined-id-2',null);
registry.getId(cmp2).should.equal('user-defined-id-2');
should.not.exist(registry.getId({}));
cleanTestDom();
});
it('getByType() should return all components of a certain type', function() {
setUp();
var cmp1 = { component: "some/type" };
registry.add(cmp1,'some/type');
var cmp2 = { component: "some/type" };
registry.add(cmp2, "some/type");
var cmp3 = { component: "other/type" };
registry.add(cmp3, "other/type");
var cmps = registry.getByType('some/type');
cmps.length.should.equal(2);
cmps[0].component.should.equal('some/type');
cmps[1].component.should.equal('some/type');
cleanTestDom();
});
it('getComponents() should return all components', function() {
setUp();
var cmp1 = { component: "cmp1" };
registry.add(cmp1, null, null);
var cmp2 = { component: "cmp2" };
registry.add(cmp2, null, null);
var cmp3 = { component: "cmp3" };
registry.add(cmp3, null, null);
var cmps = registry.getComponents();
cmps.length.should.equal(3);
cmps[0].should.equal(cmp1);
cmps[1].should.equal(cmp2);
cmps[2].should.equal(cmp3);
cleanTestDom();
});
/*
* NOTE: The functionality of the garbage collection of this class is
* tested in the componentTest.js
*/
});

View File

@ -1,61 +0,0 @@
// {{{ICINGA_LICENSE_HEADER}}}
/**
* This file is part of Icinga Web 2.
*
* Icinga Web 2 - Head for multiple monitoring backends.
* Copyright (C) 2013 Icinga Development Team
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* @copyright 2013 Icinga Development Team <info@icinga.org>
* @license http://www.gnu.org/licenses/gpl-2.0.txt GPL, version 2
* @author Icinga Development Team <info@icinga.org>
*
*/
// {{{ICINGA_LICENSE_HEADER}}}
/**
* Helper for mocking $.async's XHR requests
*
*/
var getCallback = function(empty, response, succeed, headers) {
if (empty)
return function() {};
return function(callback) {
callback(response, succeed, {
getAllResponseHeaders: function() {
return headers;
},
getResponseHeader: function(header) {
return headers[header] || null;
}
});
};
};
module.exports = {
setNextAsyncResult: function(async, response, fails, headers) {
headers = headers || {};
var succeed = fails ? "fail" : "success";
async.__internalXHRImplementation = function(config) {
return {
done: getCallback(fails, response, succeed, headers),
fail: getCallback(!fails, response, succeed, headers)
};
};
}
};

View File

@ -1,92 +0,0 @@
// {{{ICINGA_LICENSE_HEADER}}}
/**
* This file is part of Icinga Web 2.
*
* Icinga Web 2 - Head for multiple monitoring backends.
* Copyright (C) 2013 Icinga Development Team
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* @copyright 2013 Icinga Development Team <info@icinga.org>
* @license http://www.gnu.org/licenses/gpl-2.0.txt GPL, version 2
* @author Icinga Development Team <info@icinga.org>
*
*/
// {{{ICINGA_LICENSE_HEADER}}}
/**
* {{LICENSE_HEADER}}
* {{LICENSE_HEADER}}
*/
var URI = require('URIjs');
(function() {
GLOBAL.window = {
location: {
href: 'http://localhost/icinga2-web/testcase',
pathname: '/icinga2-web/testcase',
query: '',
hash: '',
host: 'localhost',
protocol: 'http'
}
};
"use strict";
var states = [];
/**
* Api for setting the window URL
*
* @param {string} url The new url to use for window.location
*/
window.setWindowUrl = function(url) {
var url = URI(url);
window.location.protocol = url.protocol();
window.location.pathname = url.pathname();
window.location.query = url.query();
window.location.search = url.search();
window.location.hash = url.hash();
window.location.href = url.href();
};
/**
* Mock for the History API
*
* @type {{pushState: Function, popState: Function, replaceState: Function, clear: Function}}
*/
module.exports = {
pushState: function(state, title, url) {
window.setWindowUrl(url);
states.push(arguments);
},
popState: function() {
return states.pop();
},
replaceState: function(state, title, url) {
states.pop();
window.setWindowUrl(url);
states.push(arguments);
},
clearState: function() {
states = [];
},
getState: function() {
return states;
}
};
})();

View File

@ -1,172 +0,0 @@
// {{{ICINGA_LICENSE_HEADER}}}
/**
* This file is part of Icinga Web 2.
*
* Icinga Web 2 - Head for multiple monitoring backends.
* Copyright (C) 2013 Icinga Development Team
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* @copyright 2013 Icinga Development Team <info@icinga.org>
* @license http://www.gnu.org/licenses/gpl-2.0.txt GPL, version 2
* @author Icinga Development Team <info@icinga.org>
*
*/
// {{{ICINGA_LICENSE_HEADER}}}
/**
* {{LICENSE_HEADER}}
* {{LICENSE_HEADER}}
**/
/**
* This node module acts as a mock for requirejs and allows you to
* define your own dependencies in your tests. It also removes the
* asynchronous character of dependency loading, so you don't need
* to handle everthing in the callbacks.
*
* Per default it resolves the 'logging' dependency by routing it
* to console.
*
**/
var path = require('path');
var registeredDependencies = {};
/**
* Mock for the requirejs(dependencyList, callback) function, loads
* all dependencies that have been registered under the given names
* in dependencies and calls fn with them as the parameter
*
**/
var debug = false;
var requireJsMock = function(dependencies, fn) {
var fnArgs = [];
for (var i=0;i<dependencies.length;i++) {
if (typeof registeredDependencies[dependencies[i]] === "undefined") {
if (debug === true)
console.warn("Unknown dependency "+dependencies[i]+" in define()");
}
fnArgs.push(registeredDependencies[dependencies[i]]);
}
fn.apply(this,fnArgs);
};
/**
* Mock the Logger
*/
var logger = {
debug: function() {},
warn: function() {},
error: function() {},
emergency: function() {}
};
/**
* Mock for the 'define' function of requireJS, behaves exactly the same
* except that it looks up the dependencies in the list provided by registerDependencies()
* A module that hasn't been defined with a name can be fetched with getDefined() (without parameter)
*
**/
var defineMock = function() {
var fn = function() {},
fnargs = [],
currentArg = 0,
scopeName = '__define__';
do {
var argType = typeof arguments[currentArg];
if( argType === "string") {
scopeName = arguments[currentArg];
currentArg++;
continue;
} else if (argType === "function") {
fn = arguments[currentArg];
} else if (Array.isArray(arguments[currentArg])) {
var argList = arguments[currentArg];
fn = arguments[currentArg+1];
for (var i=0;i<argList.length;i++) {
if (typeof registerDependencies[argList[i]] === "undefined" && debug) {
// console.warn("Unknown dependency "+argList[i]+" in define()");
}
fnargs.push(registeredDependencies[argList[i]]);
}
}
break;
} while(true);
registeredDependencies[scopeName] = fn.apply(this,fnargs);
};
/**
* Called on module initialisation, will register the
* requirejs, define and jquery '$' methods globally
* and also purge any module-global dependencies
*
**/
function initRequireMethods() {
GLOBAL.$ = require('jquery');
GLOBAL.jQuery = GLOBAL.$;
GLOBAL.requirejs = requireJsMock;
GLOBAL.define = defineMock;
registeredDependencies = {
'jquery' : GLOBAL.$,
'logging' : logger
};
}
initRequireMethods();
/**
* Resets all additional dependencies, i.e. all dependencies
* without a name
**/
function purgeDependencies() {
registeredDependencies = {
'jquery' : GLOBAL.$,
'logging' : logger
};
}
// helper to log debug messages with console
console.debug = function() {};
/**
* Registers a name=>object map of dependencies
* for lookup with requirejs()/define()
**/
function registerDependencies(obj) {
for(var name in obj) {
registeredDependencies[name] = obj[name];
}
}
var base = path.normalize(__dirname+"../../../../public/js");
GLOBAL.requireNew = function(key) {
key = path.normalize(base+"/"+key);
delete require.cache[key];
return require(key);
};
/**
* The API for this module
**/
module.exports = {
purgeDependencies: purgeDependencies,
registerDependencies: registerDependencies,
getDefine: function(name) {
if (typeof name === "undefined") {
return registeredDependencies.__define__;
} else {
return registeredDependencies[name];
}
}
};