@teambit/tester
Version:
214 lines (211 loc) • 6.65 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = exports.TesterUI = void 0;
function _react() {
const data = _interopRequireDefault(require("react"));
_react = function () {
return data;
};
return data;
}
function _ui() {
const data = require("@teambit/ui");
_ui = function () {
return data;
};
return data;
}
function _harmony() {
const data = require("@teambit/harmony");
_harmony = function () {
return data;
};
return data;
}
function _component() {
const data = require("@teambit/component");
_component = function () {
return data;
};
return data;
}
function _defenderUi() {
const data = require("@teambit/defender.ui.test-compare");
_defenderUi = function () {
return data;
};
return data;
}
function _componentCompare() {
const data = require("@teambit/component-compare");
_componentCompare = function () {
return data;
};
return data;
}
function _defenderUi2() {
const data = require("@teambit/defender.ui.test-compare-section");
_defenderUi2 = function () {
return data;
};
return data;
}
function _docs() {
const data = require("@teambit/docs");
_docs = function () {
return data;
};
return data;
}
function _client() {
const data = require("@apollo/client");
_client = function () {
return data;
};
return data;
}
function _designUi() {
const data = require("@teambit/design.ui.pill-label");
_designUi = function () {
return data;
};
return data;
}
function _designUi2() {
const data = require("@teambit/design.ui.tooltip");
_designUi2 = function () {
return data;
};
return data;
}
function _evangelistElements() {
const data = require("@teambit/evangelist.elements.icon");
_evangelistElements = function () {
return data;
};
return data;
}
function _baseReactNavigation() {
const data = require("@teambit/base-react.navigation.link");
_baseReactNavigation = function () {
return data;
};
return data;
}
function _tests() {
const data = require("./tests.section");
_tests = function () {
return data;
};
return data;
}
function _tester() {
const data = require("./tester.aspect");
_tester = function () {
return data;
};
return data;
}
function _coverageLabelModule() {
const data = _interopRequireDefault(require("./coverage-label.module.scss"));
_coverageLabelModule = function () {
return data;
};
return data;
}
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
const GET_COMPONENT = (0, _client().gql)`
query ($id: String!) {
getHost {
id # for GQL caching
getTests(id: $id) {
loading
testsResults {
coverage {
total {
lines {
covered
total
pct
}
}
}
}
}
}
}
`;
class TesterUI {
constructor(component, emptyStateSlot) {
this.component = component;
this.emptyStateSlot = emptyStateSlot;
_defineProperty(this, "stageKey", void 0);
}
/**
* register a new tester empty state. this allows to register a different empty state from each environment for example.
*/
registerEmptyState(emptyStateComponent) {
this.emptyStateSlot.register(emptyStateComponent);
return this;
}
getTesterCompare() {
return /*#__PURE__*/_react().default.createElement(_defenderUi().CompareTests, {
emptyState: this.emptyStateSlot
});
}
static async provider([component, componentCompare, docs], config, [emptyStateSlot]) {
const testerUi = new TesterUI(component, emptyStateSlot);
const section = new (_tests().TestsSection)(emptyStateSlot);
const testerCompareSection = new (_defenderUi2().TestCompareSection)(testerUi);
component.registerRoute(section.route);
component.registerNavigation(section.navigationLink, section.order);
componentCompare.registerNavigation(testerCompareSection);
componentCompare.registerRoutes([testerCompareSection.route]);
docs.registerTitleBadge({
component: function badge({
legacyComponentModel
}) {
const location = (0, _baseReactNavigation().useLocation)();
const search = location?.search ?? '';
const {
data
} = (0, _client().useQuery)(GET_COMPONENT, {
variables: {
id: legacyComponentModel.id.toString()
}
});
if (!data || !data.getHost || !data.getHost.getTests) return null;
const total = data.getHost.getTests.testsResults?.coverage?.total;
if (!total || !total.lines) return null;
return /*#__PURE__*/_react().default.createElement(_designUi2().Tooltip, {
className: _coverageLabelModule().default.coverageTooltip,
placement: "top",
content: /*#__PURE__*/_react().default.createElement("div", {
className: _coverageLabelModule().default.coverageTooltipContent
}, "Test coverage")
}, /*#__PURE__*/_react().default.createElement(_baseReactNavigation().Link, {
href: `~tests${search}`,
className: _coverageLabelModule().default.link
}, /*#__PURE__*/_react().default.createElement(_designUi().PillLabel, {
className: _coverageLabelModule().default.label
}, /*#__PURE__*/_react().default.createElement(_evangelistElements().Icon, {
of: "scan-component"
}), /*#__PURE__*/_react().default.createElement("span", null, total.lines.pct, "%"))));
},
weight: 30
});
return testerUi;
}
}
exports.TesterUI = TesterUI;
_defineProperty(TesterUI, "dependencies", [_component().ComponentAspect, _componentCompare().ComponentCompareAspect, _docs().DocsAspect]);
_defineProperty(TesterUI, "runtime", _ui().UIRuntime);
_defineProperty(TesterUI, "slots", [_harmony().Slot.withType()]);
var _default = exports.default = TesterUI;
_tester().TesterAspect.addRuntime(TesterUI);
//# sourceMappingURL=tester.ui.runtime.js.map