@carbon/ibm-cloud-cognitive-cdai
Version:
Carbon for Cloud & Cognitive CD&AI UI components
175 lines (173 loc) • 7.6 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof = require("@babel/runtime/helpers/typeof");
var _ = require(".");
var _enzyme = require("enzyme");
var _react = _interopRequireDefault(require("react"));
var _IDHelper = require("../../component_helpers/IDHelper");
var jth = _interopRequireWildcard(require("../../component_helpers/jest_test_helper_functions.js"));
var _testProps = require("./test_assets/testProps.js");
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
//
// Copyright IBM Corp. 2020, 2020
//
// This source code is licensed under the Apache-2.0 license found in the
// LICENSE file in the root directory of this source tree.
//
describe('IdeCard unit tests', function () {
var component, unmount;
var mountTestComponent = function mountTestComponent() {
var defaultProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var test = jth.mountComponent(jth.getJSXForComponent(_.IdeCard, defaultProps, props));
component = test.component;
unmount = test.unmount;
};
afterEach(function () {
// if unmount defined, call it to clear up any mounted component
unmount && unmount();
});
it('Renders as expected with With basic properties provided', function () {
mountTestComponent(_testProps.defaultProps);
expect(component.exists('ClickableTile')).toBe(true);
expect(component.exists((0, _IDHelper.idAttributeSelector)("ide-card-".concat(_testProps.defaultProps.cardId)))).toBe(true);
expect(component.exists((0, _IDHelper.idAttributeSelector)("ide-card-".concat(_testProps.defaultProps.cardId, "-card")))).toBe(true);
});
it('Renders a disabled card', function () {
mountTestComponent(null, _testProps.disabledCard);
expect(component.exists('ide-card__disabled'));
});
it('Renders a large card', function () {
mountTestComponent(null, _testProps.largeCard);
expect(component.exists('ide-card__large'));
});
it('Renders an external link card', function () {
mountTestComponent(null, _testProps.externalLinkCard);
expect(component.exists('ide-card-container__standard'));
expect(component.find('.ide-card--card-overides').props().href).toBe(_testProps.externalLinkCard.cardHref);
expect(component.find('.ide-card--card-overides').props().target).toBe(_testProps.externalLinkCard.cardLinkTarget);
});
it('Renders a links card', function () {
mountTestComponent(null, _testProps.linkCard);
expect(component.exists('ide-card-foobar-#started-Link'));
});
it('Renders a custom content card', function () {
mountTestComponent(null, _testProps.customCard);
expect(component.exists('ide-card__standard'));
});
it('Renders a custom content card with a missing renderFunc', function () {
mountTestComponent(null, _testProps.customCardNoRender);
expect(component.exists('ide-card__standard'));
});
it('Renders a node content card', function () {
mountTestComponent(null, _testProps.nodeContentCard);
expect(component.exists('ide-card-heading-container'));
expect(component.exists('ide-card__standard'));
expect(component.exists('test--idecard-nodeContentCard'));
});
it('Renders a node content card without content', function () {
mountTestComponent(null, _testProps.nodeContentCardNoContent);
expect(component.exists('ide-card-heading-container'));
expect(component.exists('ide-card__standard'));
});
it('Renders a card when no cardType is provided', function () {
mountTestComponent(null, _testProps.noCardType);
expect(component.exists('ide-card--tile-text'));
});
it('Sets the onHover state to true onMouseEnter and false onMouseLeave', function () {
var card = (0, _enzyme.mount)(/*#__PURE__*/_react.default.createElement(_.IdeCard, {
cardId: "id",
cardType: "text",
cardDisabled: true,
disabledText: "You don't have access to this instance",
cardContent: {
text: 'testText'
}
}));
expect(card.state('onHover')).toBe(false);
card.simulate('mouseenter');
expect(card.state('onHover')).toBe(true);
card.simulate('mouseleave');
expect(card.state('onHover')).toBe(false);
card.setProps({
cardDisabled: false
});
card.simulate('mouseenter');
expect(card.state('onHover')).toBe(false);
card.simulate('mouseleave');
expect(card.state('onHover')).toBe(false);
});
it('Calls `onInteract` when clicked', function () {
var onInteract = jest.fn();
var preventDefault = jest.fn();
var card = (0, _enzyme.mount)(/*#__PURE__*/_react.default.createElement(_.IdeCard, {
cardId: "id",
cardType: "text",
cardHref: "/hello",
onInteract: onInteract,
cardContent: {
text: 'testText'
}
}));
card.find('a').simulate('click', {
preventDefault: preventDefault
});
expect(onInteract).toHaveBeenCalled();
expect(preventDefault).not.toHaveBeenCalled();
});
it('Does not call `onInteract` when clicked if the card is disabled', function () {
var onInteract = jest.fn();
var preventDefault = jest.fn();
var card = (0, _enzyme.mount)(/*#__PURE__*/_react.default.createElement(_.IdeCard, {
cardDisabled: true,
cardId: "id",
cardType: "text",
cardHref: "/hello",
onInteract: onInteract,
cardContent: {
text: 'testText'
}
}));
card.find('a').simulate('click', {
preventDefault: preventDefault
});
expect(onInteract).not.toHaveBeenCalled();
expect(preventDefault).toHaveBeenCalled();
});
it('Prevents the default event when clicked with no href specified', function () {
var onInteract = jest.fn();
var preventDefault = jest.fn();
var card = (0, _enzyme.mount)(/*#__PURE__*/_react.default.createElement(_.IdeCard, {
cardId: "id",
cardType: "text",
onInteract: onInteract,
cardContent: {
text: 'testText'
}
}));
card.find('a').simulate('click', {
preventDefault: preventDefault
});
expect(onInteract).toHaveBeenCalled();
expect(preventDefault).toHaveBeenCalled();
});
it('Prevents the default event if the card is disabled', function () {
var onInteract = jest.fn();
var preventDefault = jest.fn();
var card = (0, _enzyme.mount)(/*#__PURE__*/_react.default.createElement(_.IdeCard, {
cardDisabled: true,
cardId: "id",
cardType: "text",
onInteract: onInteract,
cardContent: {
text: 'testText'
}
}));
card.find('a').simulate('click', {
preventDefault: preventDefault
});
expect(onInteract).not.toHaveBeenCalled();
expect(preventDefault).toHaveBeenCalled();
});
});