UNPKG

@ictu/testx-keywords-postgres

Version:
83 lines (74 loc) 2.52 kB
// Generated by CoffeeScript 1.12.7 (function() { var _, assertFailedMsg, dbclient, isObjectEqual, parseConn, printable; dbclient = require('./postgres'); parseConn = require('pg-connection-string').parse; _ = require('lodash'); printable = function(obj, delimiter) { var k, v; if (delimiter == null) { delimiter = ', '; } return ((function() { var results; results = []; for (k in obj) { v = obj[k]; results.push(k + ": " + v); } return results; })()).join(delimiter); }; assertFailedMsg = function(msg, ctx) { return msg + " in " + (printable(_.pick(ctx._meta, 'file', 'sheet', 'Row'))); }; isObjectEqual = function(result, expected, failMsg) { var key, results; if (typeof expected !== 'object') { return expect(result).toBe(expected, failMsg); } else { if (Array.isArray(expected)) { return _.zip(result, expected).map((function(_this) { return function(x) { return isObjectEqual(x[0], x[1], failMsg); }; })(this)); } else { results = []; for (key in expected) { results.push(isObjectEqual(result[key], expected[key], failMsg)); } return results; } } }; module.exports = { 'execute sql': function(args, context) { var flow; if (args.sql) { flow = protractor.promise.controlFlow(); return flow.execute(function() { var connectionString, dbPromise; connectionString = parseConn(args['connection string'] || browser.params.postgresConnectionString); dbPromise = dbclient.executeQuery(connectionString, args.sql); return dbPromise.then(function(result) { var expected, failMsg, save; if (expected = args['expected result']) { failMsg = assertFailedMsg("Expected the following records: " + (JSON.stringify(expected)) + " but found: " + (JSON.stringify(result)), context); isObjectEqual(result, expected, failMsg); } if (save = args['save result to']) { return context[save] = result; } })["catch"](function(err) { var failMsg; failMsg = assertFailedMsg(err, context); throw new Error(failMsg); }); }); } else { throw new Error('Cannot use the "execute sql" keyword without providing "sql" parameter.'); } } }; }).call(this);