Skip to content

Commit

Permalink
Relate-Bug: #1476413
Browse files Browse the repository at this point in the history
1. file name changes for test, test suites, mock data - .test.js, .test.suite.js, .mock.data.js
2. adding infra for running library api tests.
3. new grunt target grunt api for starting api task.
4. updated test runner functions for common and lib tests.
5. TODO current GridView lib tests are not functoinal. needs update in *.lib.test.suite.js

Change-Id: I92e916a3ff4ca2de478d61dd6ca90f6a4c1d24b0
  • Loading branch information
skizhak committed Aug 24, 2015
1 parent 4be9a56 commit bd4dee8
Show file tree
Hide file tree
Showing 12 changed files with 760 additions and 9 deletions.
85 changes: 85 additions & 0 deletions webroot/test/ui/Gruntfile.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
/*
* Copyright (c) 2015 Juniper Networks, Inc. All rights reserved.
*/
module.exports = function (grunt) {
grunt.loadNpmTasks("grunt-contrib-jshint");
grunt.loadNpmTasks("grunt-contrib-qunit");
grunt.loadNpmTasks('grunt-qunit-junit');
grunt.loadNpmTasks('grunt-karma');
//this option is to avoid interruption of test case execution on failure of one in sequence
//grunt.option('force',true);
grunt.option('stack', true);

var commonFiles = [
{pattern: 'contrail-web-core/webroot/assets/**/!(tests)/*.js', included: false},
{pattern: 'contrail-web-core/webroot/assets/**/*.css', included: false},
{pattern: 'contrail-web-core/webroot/css/**/*.css', included: false},
{pattern: 'contrail-web-core/webroot/test/ui/**/*.css', included: false},

{pattern: 'contrail-web-core/webroot/font/**/*.woff', included: false},
{pattern: 'contrail-web-core/webroot/assets/**/*.woff', included: false},
{pattern: 'contrail-web-core/webroot/assets/**/*.ttf', included: false},

{pattern: 'contrail-web-core/webroot/img/**/*.png', included: false},
{pattern: 'contrail-web-core/webroot/css/**/*.png', included: false},
{pattern: 'contrail-web-core/webroot/assets/select2/styles/**/*.png', included: false},
{pattern: 'contrail-web-core/webroot/css/**/*.gif', included: false},

{pattern: 'contrail-web-core/webroot/test/ui/js/co.test.app.js'},
{pattern: 'contrail-web-core/webroot/test/ui/js/**/co.test.*.js', included: false},
{pattern: 'contrail-web-core/webroot/test/ui/js/**/*.lib.test.suite.js', included: false},
{pattern: 'contrail-web-core/webroot/test/ui/js/**/*.lib.test.js', included: false},
//{pattern: 'contrail-web-core/webroot/test/ui/js/**/*.lib.test.js', included: false},
//{pattern: 'contrail-web-core/webroot/test/ui/js/**/*.lib.test.suite.js', included: false},
//{pattern: 'contrail-web-core/webroot/test/ui/js/**/{!(*.lib.test.js), !(*.test.suite.js)}', included: false},
//{pattern: 'contrail-web-core/webroot/test/ui/js/**/*.js', included: false},

{pattern: 'contrail-web-core/webroot/js/**/*.js', included: false},
{pattern: 'contrail-web-core/webroot/templates/*.tmpl', included: false}
];

var karmaConfig = {
options: {
configFile: 'karma.config.js',
},
grid: {
options: {
files: [
//{pattern: 'contrail-web-core/webroot/assets/slickgrid/js/slick.*.js'},
{pattern: 'contrail-web-core/webroot/test/ui/js/grid/GridView.lib.test.js', included: false}
],
preprocessors: {
'contrail-web-core/webroot/assets/slickgrid/js/slick.*.js': ['coverage']
}
}
}
};

for (var feature in karmaConfig) {
if (feature != 'options') {
karmaConfig[feature]['options']['files'] = commonFiles.concat(karmaConfig[feature]['options']['files']);
}
}

grunt.initConfig({
pkg: grunt.file.readJSON(__dirname + "/../../../../contrail-web-core/package.json"),
karma: karmaConfig,
jshint: {
options: {
jshintrc: ".jshintrc"
},
files: ["Gruntfile.js"]
},
api: {
grid: 'grid'
}

});

grunt.registerMultiTask('api', 'Core libs API Test Cases', function () {
if (this.target == 'grid') {
grunt.task.run('karma:grid');

}
});
};
71 changes: 71 additions & 0 deletions webroot/test/ui/js/co.test.app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
/*
* Copyright (c) 2014 Juniper Networks, Inc. All rights reserved.
*/

var coreBaseDir = "/base/contrail-web-core/webroot",
featurePkg = "testLibApi";

require([
coreBaseDir + '/js/core-app-utils.js',
coreBaseDir + '/test/ui/js/co.test.app.utils.js'
], function () {
globalObj['env'] = "test";


requirejs.config({
baseUrl: coreBaseDir,
paths: getCoreAppAndCoreTestAppPaths(coreBaseDir),
map: coreAppMap,
shim: getCoreAppAndCoreTestAppShims(),
waitSeconds: 0
});

require(['co-test-init'], function () {
setFeaturePkgAndInit(featurePkg);
});


function getCoreAppAndCoreTestAppPaths(coreBaseDir) {
var coreTestAppPathObj = {};
var coreAppPaths = getCoreAppPaths(coreBaseDir);
var coreTestAppPaths = getCoreTestAppPaths(coreBaseDir);

for (var key in coreAppPaths) {
if (coreAppPaths.hasOwnProperty(key)) {
var value = coreAppPaths[key];
coreTestAppPathObj[key] = value;
}
}

for (var key in coreTestAppPaths) {
if (coreTestAppPaths.hasOwnProperty(key)) {
var value = coreTestAppPaths[key];
coreTestAppPathObj[key] = value;
}
}

return coreTestAppPathObj;
};

function getCoreAppAndCoreTestAppShims() {

var coreTestAppShims = {};

for (var key in coreAppShim) {
if (coreAppShim.hasOwnProperty(key)) {
var value = coreAppShim[key];
coreTestAppShims[key] = value;
}
}

for (var key in coreTestAppShim) {
if (coreTestAppShim.hasOwnProperty(key)) {
var value = coreTestAppShim[key];
coreTestAppShims[key] = value;
}
}

return coreTestAppShims;
};

});
19 changes: 14 additions & 5 deletions webroot/test/ui/js/co.test.app.utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,22 @@ function getCoreTestAppPaths(coreBaseDir) {
'co-test-constants' : coreTestAppBaseDir + '/co.test.constants',
'co-test-utils' : coreTestAppBaseDir + '/co.test.utils',
'co-test-messages' : coreTestAppBaseDir + '/co.test.messages',
'co-test-mockdata' : coreTestAppBaseDir + '/co.test.mockdata',
'co-unit-test' : coreTestAppBaseDir + '/co.unit.test',
'co-test-grid-listmodel': coreTestAppBaseDir + '/grid/listmodel.test',
'co-test-grid-gridview' : coreTestAppBaseDir + '/grid/gridview.test'
'co-test-mockdata' : coreTestAppBaseDir + '/co.test.mock.data',
'co-test-unit' : coreTestAppBaseDir + '/co.test.unit',
'co-grid-contrail-list-model-test-suite' : coreTestAppBaseDir + '/grid/ContrailListModel.test.suite',
'co-grid-view-test-suite' : coreTestAppBaseDir + '/grid/GridView.test.suite',
'co-grid-contrail-list-model-lib-test-suite' : coreTestAppBaseDir + '/grid/ContrailListModel.lib.test.suite',
'co-grid-view-lib-test-suite' : coreTestAppBaseDir + '/grid/GridView.lib.test.suite'
};
}

function coreTestAppShim() {
return {};
return {
'co-grid-contrail-list-model-lib-test-suite' : {
deps: ['slick.core', 'slick.dataview']
},
'co-grid-view-lib-test-suite' : {
deps: ['slick.core', 'slick.grid', 'jquery-ui', 'slick.enhancementpager']
}
};
}
48 changes: 46 additions & 2 deletions webroot/test/ui/js/co.test.init.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@
* Copyright (c) 2014 Juniper Networks, Inc. All rights reserved.
*/

var cowc, cowu, cowf, cowch, cowm, cotc;
var cowc, cowu, cowf, cowl, cowch, cowm, cotc;

var allTestFiles = [], nmTestKarma = window.__karma__;

for (var file in nmTestKarma.files) {
if (/Test\.js$/.test(file)) {
if (/\.test\.js$/.test(file)) {
allTestFiles.push(file);
}
}
Expand Down Expand Up @@ -62,6 +62,9 @@ function setFeaturePkgAndInit(featurePkg) {
featurePkgObj.webServerInfo = 'smWebServerInfoMockData';
break;

case 'testLibApi':
return testLibApiAppInit({});

}

testAppInit(getTestAppConfig(featurePkgObj));
Expand Down Expand Up @@ -124,3 +127,44 @@ function testAppInit(testAppConfig) {
});
});
}

function testLibApiAppInit(testAppConfig) {

require(['jquery', 'knockout', 'bezier'], function ($, Knockout, Bezier) {
window.ko = Knockout;
window.Bezier = Bezier;

if (document.location.pathname.indexOf('/vcenter') == 0) {
$('head').append('<base href="/vcenter/" />');
}

require(depArray, function ($, _, validation, CoreConstants, CoreUtils, CoreFormatters, CoreMessages, CoreLabels, Knockout, Cache,
contrailCommon, CoreCommonTmpl, CoreTestUtils, CoreTestConstants, LayoutHandler) {
cowc = new CoreConstants();
cowu = new CoreUtils();
cowf = new CoreFormatters();
cowm = new CoreMessages();
cowl = new CoreLabels();
cowch = new Cache();
cotc = CoreTestConstants;

$("body").addClass('navbar-fixed');
$("body").append(CoreTestUtils.getPageHeaderHTML());
$("body").append(CoreTestUtils.getSidebarHTML());
$("body").append(CoreCommonTmpl);

var cssList = CoreTestUtils.getCSSList();

for (var i = 0; i < cssList.length; i++) {
$("body").append(cssList[i]);
}
require(allTestFiles, function () {
requirejs.config({
deps: allTestFiles,
callback: window.__karma__.start
});
});
});
});

}
42 changes: 42 additions & 0 deletions webroot/test/ui/js/co.test.mock.data.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
/*
* Copyright (c) 2015 Juniper Networks, Inc. All rights reserved.
*/
define(['underscore'], function (_) {

//Compares client UTC time with the server UTC time and display alert if mismatch exceeds the threshold
var webServerInfoMockData = {
"orchestrationModel": [
"openstack"
],
"serverUTCTime": 1436203008000,
"hostName": "a7s14",
"role": [
"superAdmin"
],
"featurePkg": {
"webController": false,
"webStorage": false,
"serverManager": false
},
"uiConfig": {
"nodemanager": {
"installed": true
}
},
"loggedInOrchestrationMode": "openstack"
};

var disabledFeatureMockData = {"disabled":["config_alarms","mon_infra_mx"]},
webControllerMockData = {"webController":{"path":"/usr/src/contrail-web-controller","enable":true}},
ctWebServerInfoMockData = _.extend({}, webServerInfoMockData, {"featurePkg": { "webController": true }}),
smWebServerInfoMockData = _.extend({}, webServerInfoMockData, {"featurePkg": { "serverManager": true }}),
sWebServerInfoMockData = _.extend({}, webServerInfoMockData, {"featurePkg": { "webStorage": true }});

return {
ctWebServerInfoMockData: ctWebServerInfoMockData,
smWebServerInfoMockData: smWebServerInfoMockData,
sWebServerInfoMockData: sWebServerInfoMockData,
disabledFeatureMockData: disabledFeatureMockData,
webControllerMockData: webControllerMockData
}
});

0 comments on commit bd4dee8

Please sign in to comment.