UNPKG

justo-reporter

Version:

The Justo.js reporter library.

262 lines (131 loc) 7.37 kB
"use strict";Object.defineProperty(exports, "__esModule", { value: true });var _createClass = function () {function defineProperties(target, props) {for (var i = 0; i < props.length; i++) {var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if ("value" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);}}return function (Constructor, protoProps, staticProps) {if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;};}(); var _deepAssign = require("deep-assign");var _deepAssign2 = _interopRequireDefault(_deepAssign); var _justoConsole = require("justo-console");var _justoConsole2 = _interopRequireDefault(_justoConsole); var _justoResult = require("justo-result"); var _Reporter2 = require("../Reporter");var _Reporter3 = _interopRequireDefault(_Reporter2);function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function _classCallCheck(instance, Constructor) {if (!(instance instanceof Constructor)) {throw new TypeError("Cannot call a class as a function");}}function _possibleConstructorReturn(self, call) {if (!self) {throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return call && (typeof call === "object" || typeof call === "function") ? call : self;}function _inherits(subClass, superClass) {if (typeof superClass !== "function" && superClass !== null) {throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;} var DEFAULT_THEME = { header: { title: {} }, task: { title: {}, result: { between: ["[ ", " ]"], ok: { text: "OK" }, failed: { text: "ER" }, ignored: { text: "IG" }, running: { text: "CR" } } } }; var printError = Symbol(); var buildSimpleResult = Symbol(); var printSimpleResult = Symbol(); var logSimpleResult = Symbol(); var confirmSimpleResult = Symbol(); var logCompositeResult = Symbol();var ConsoleReporter = function (_Reporter) {_inherits(ConsoleReporter, _Reporter); function ConsoleReporter(opts) {_classCallCheck(this, ConsoleReporter); if (!opts) opts = {};var _this = _possibleConstructorReturn(this, (ConsoleReporter.__proto__ || Object.getPrototypeOf(ConsoleReporter)).call(this, opts)); Object.defineProperty(_this, "theme", { value: (0, _deepAssign2.default)({}, _this.getDefaultTheme(), opts.theme || {}), enumerable: true }); Object.defineProperty(_this, "console", { value: opts.console || new _justoConsole2.default() });return _this; }_createClass(ConsoleReporter, [{ key: "getDefaultTheme", value: function getDefaultTheme() { return JSON.parse(JSON.stringify(DEFAULT_THEME)); } }, { key: "startReport", value: function startReport( title) { this.console.level = 1; this.console.log("\n" + this.formatReportTitle(title)); } }, { key: "formatReportTitle", value: function formatReportTitle( title) { return title; } }, { key: "endReport", value: function endReport() { var rep = this.report; var ok = rep.getNumberOf(_justoResult.ResultState.OK); var failed = rep.getNumberOf(_justoResult.ResultState.FAILED); var ignored = rep.getNumberOf(_justoResult.ResultState.IGNORED); this.console.log(); this.console.log( this.getOkTitle() + " " + ok, "| " + this.getFailedTitle() + " " + failed, "| " + this.getIgnoredTitle() + " " + ignored, "| Total " + ( ok + failed + ignored)); this.console.log(); this.console.level = 0; } }, { key: "getOkTitle", value: function getOkTitle() { return "OK"; } }, { key: "getFailedTitle", value: function getFailedTitle() { return "Failed"; } }, { key: "getIgnoredTitle", value: function getIgnoredTitle() { return "Ignored"; } }, { key: "formatCompositeTaskTitle", value: function formatCompositeTaskTitle( title) { return title; } }, { key: "formatSimpleTaskTitle", value: function formatSimpleTaskTitle( title) { return title; } }, { key: "formatTaskResult", value: function formatTaskResult( state) { return this.theme.task.result[state.name.toLowerCase()].text; } }, { key: "formatTaskTime", value: function formatTaskTime( time) { return "(" + time + " ms)"; } }, { key: "formatTaskError", value: function formatTaskError( err) { return this.stackTrace ? err.stack || err.toString() : err.toString(); } }, { key: "ignoreTask", value: function ignoreTask( res) { this[logSimpleResult](_justoResult.ResultState.IGNORED, res.title); } }, { key: "startTask", value: function startTask( title, task) { var result = this.theme.task.result; if (task.isComposite()) { this.console.level += 1; this[logCompositeResult](title); } else { this[printSimpleResult](_justoResult.ResultState.RUNNING, title); } } }, { key: "endTask", value: function endTask( res) { if (res.isComposite()) { if (res.ownState === _justoResult.ResultState.FAILED) { this[logSimpleResult](res.ownState, "Workflow function", res.time); if (res.ownError) this[printError](res.ownError); } this.console.level -= 1; } else { this[confirmSimpleResult](res.state, res.title, res.time); if (res.state === _justoResult.ResultState.FAILED) this[printError](res.error); } } }, { key: printError, value: function value(error) { this.console.log(this.formatTaskError(error)); } }, { key: buildSimpleResult, value: function value(state, title, time) { var result = this.theme.task.result; var txt; txt = ""; if (result.between) txt += result.between[0]; txt += this.formatTaskResult(state); if (result.between) txt += result.between[1]; txt += " " + this.formatSimpleTaskTitle(title); if (time !== undefined && time !== null) txt += " " + this.formatTaskTime(time); return txt; } }, { key: printSimpleResult, value: function value(state, title, time) { this.console.print(this[buildSimpleResult](state, title, time)); } }, { key: logSimpleResult, value: function value(state, title, time) { this.console.log(this[buildSimpleResult](state, title, time)); } }, { key: confirmSimpleResult, value: function value(state, title, time) { this.console.confirm(this[buildSimpleResult](state, title, time)); } }, { key: logCompositeResult, value: function value(title) { this.console.log(this.formatCompositeTaskTitle(title)); } }], [{ key: "DEFAULT_THEME", get: function get() {return DEFAULT_THEME;} }]);return ConsoleReporter;}(_Reporter3.default);exports.default = ConsoleReporter;