From 0f013ad3aaa3fea1c5deb31c5169b3ee5fe188b8 Mon Sep 17 00:00:00 2001 From: Vitaly Kramskikh Date: Sat, 2 Jan 2016 16:20:07 +0300 Subject: [PATCH] Use sinon for mocking server response in UI func tests for logs Closes-Bug: #1519752 Change-Id: I62859dca7fa5c138b012d4c5fd4e184c941fb992 --- gulpfile.js | 4 ++++ package.json | 2 +- static/tests/functional/test_cluster_logs.js | 17 ++++++++++++++++- webpack.config.js | 4 +++- 4 files changed, 24 insertions(+), 3 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index 4160be39d..0d349e010 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -286,6 +286,10 @@ gulp.task('build', function(cb) { new webpack.DefinePlugin({'process.env': {NODE_ENV: '"production"'}}) ); } + if (argv['extra-entries']) { + config.entry = config.entry.concat(argv['extra-entries'].split(',')); + } + if (argv.uglify !== false) { config.devtool = 'source-map'; config.plugins.push( diff --git a/package.json b/package.json index edb3a777d..48be6250e 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,7 @@ "nlf": "~1.3.2", "react-addons-test-utils": "0.14.3", "selenium-standalone": "~4.4.0", - "sinon": "~1.15.3", + "sinon": "1.17.2", "webpack-dev-server": "1.14.0" } } diff --git a/static/tests/functional/test_cluster_logs.js b/static/tests/functional/test_cluster_logs.js index 06cae6592..c0020a0f9 100644 --- a/static/tests/functional/test_cluster_logs.js +++ b/static/tests/functional/test_cluster_logs.js @@ -57,9 +57,24 @@ define([ // Change the selected value for the "Level" dropdown to DEBUG .clickByCssSelector('.sticker select[name=level] option[value=DEBUG]') .assertElementEnabled(showLogsButtonSelector, '"Show" button is enabled after source change') + .execute(function() { + window.fakeServer = sinon.fakeServer.create(); + window.fakeServer.autoRespond = true; + window.fakeServer.autoRespondAfter = 1000; + window.fakeServer.respondWith(/\/api\/logs.*/, [ + 200, {'Content-Type': 'application/json'}, + JSON.stringify({ + from: 1, + entries: [['Date', 'INFO', 'Test Log Entry']] + }) + ]); + }) .clickByCssSelector(showLogsButtonSelector) .assertElementDisappears('.logs-tab div.progress', 5000, 'Wait till Progress bar disappears') - .assertElementsAppear('.log-entries > tbody > tr', 5000, 'Log entries are loaded') + .assertElementsAppear('.log-entries > tbody > tr', 5000, 'Log entries are shown') + .execute(function() { + window.fakeServer.restore(); + }) // "Other servers" option is present in "Logs" dropdown .clickByCssSelector('.sticker select[name=type] > option[value=remote]') .assertElementExists('.sticker select[name=node] > option', '"Node" dropdown is present'); diff --git a/webpack.config.js b/webpack.config.js index a1e954022..48529fefb 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -21,6 +21,7 @@ module.exports = { }, {test: /\/expression\/parser\.js$/, loader: 'exports?parser'}, {test: require.resolve('jquery'), loader: 'expose?jQuery!expose?$'}, + {test: /\/sinon\.js$/, loader: 'imports?this=>window,define=>false,exports=>false,module=>false,require=>false'}, {test: /\.css$/, loader: 'style!css!postcss'}, {test: /\.less$/, loader: 'style!css!postcss!less'}, {test: /\.html$/, loader: 'raw'}, @@ -34,7 +35,8 @@ module.exports = { modulesDirectories: ['static', 'node_modules', 'vendor/custom'], extensions: ['', '.js'], alias: { - underscore: 'lodash' + underscore: 'lodash', + sinon: 'sinon/pkg/sinon.js' } }, node: {},