UNPKG

@wix/design-system

Version:

@wix/design-system

1,136 lines (1,134 loc) 65.4 kB
import _defineProperty from "@babel/runtime/helpers/defineProperty"; import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator"; import _extends from "@babel/runtime/helpers/extends"; var _jsxFileName = "/home/builduser/work/57e038ea7326c1ec/packages/wix-design-system/dist/esm/ImageViewer/test/ImageViewer.spec.jsx", _this = this; function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); } function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); } import React from 'react'; import { fireEvent } from '@testing-library/react'; import ImageViewer from '../ImageViewer'; import { imageViewerPrivateDriverFactory } from './ImageViewer.private.uni.driver'; import imageViewerPrivateDriver from './ImageViewer.private.driver'; import { createRendererWithUniDriver, cleanup, act } from '../../utils/test-utils/react'; describe('ImageViewer', function () { var imageUrl = 'https://upload.wikimedia.org/wikipedia/commons/d/dd/New_Mela_Ramanputhur_Holy_Family_Church.jpg'; var secondImageUrl = 'https://onlinepngtools.com/images/examples-onlinepngtools/palm-fronds-and-sky.png'; var buildComponent = function buildComponent() { var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; return /*#__PURE__*/React.createElement(ImageViewer, _extends({}, props, { __self: _this, __source: { fileName: _jsxFileName, lineNumber: 19, columnNumber: 42 } })); }; afterEach(function () { return cleanup(); }); describe('[async]', function () { var render = createRendererWithUniDriver(imageViewerPrivateDriverFactory); runTests(render); describe('More Actions menu', function () { describe('Remove button', function () { describe('`onRemoveImage` prop', function () { it('should call callback [when] clicked on remove button', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() { var onRemoveImage, _render, driver, privateDriver, _t, _t2, _t3; return _regenerator().w(function (_context) { while (1) switch (_context.n) { case 0: onRemoveImage = vi.fn(); _render = render(buildComponent({ onRemoveImage: onRemoveImage, imageUrl: imageUrl, showRemoveButton: true, showUpdateButton: true, showDownloadButton: true })), driver = _render.driver; _t = imageViewerPrivateDriver; _context.n = 1; return driver.element(); case 1: _t2 = _context.v; _t3 = fireEvent; privateDriver = _t({ element: _t2, eventTrigger: _t3 }); _context.n = 2; return privateDriver.simulateImageLoad(); case 2: _context.n = 3; return driver.clickRemove(); case 3: expect(onRemoveImage).toHaveBeenCalled(); case 4: return _context.a(2); } }, _callee); }))); }); }); }); describe('Download button', function () { describe('`onDownloadImage` prop', function () { it('should call callback [when] clicked on download button', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() { var onDownloadImage, _render2, driver, privateDriver, _t4, _t5, _t6; return _regenerator().w(function (_context2) { while (1) switch (_context2.n) { case 0: onDownloadImage = vi.fn(); _render2 = render(buildComponent({ onDownloadImage: onDownloadImage, imageUrl: imageUrl, showRemoveButton: true, showUpdateButton: true, showDownloadButton: true })), driver = _render2.driver; _t4 = imageViewerPrivateDriver; _context2.n = 1; return driver.element(); case 1: _t5 = _context2.v; _t6 = fireEvent; privateDriver = _t4({ element: _t5, eventTrigger: _t6 }); _context2.n = 2; return privateDriver.simulateImageLoad(); case 2: _context2.n = 3; return driver.clickDownload(); case 3: expect(onDownloadImage).toHaveBeenCalled(); case 4: return _context2.a(2); } }, _callee2); }))); }); }); describe('ref api', function () { describe('`focus` method', function () { it('should focus on addItem when there is no image', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4() { var _ref4, _render3, driver, _t7, _t8; return _regenerator().w(function (_context4) { while (1) switch (_context4.n) { case 0: _render3 = render(buildComponent({ ref: function ref(el) { return _ref4 = el; } })), driver = _render3.driver; _t7 = expect; _context4.n = 1; return driver.isAddItemVisible(); case 1: _t7(_context4.v).toBe(true); _context4.n = 2; return act(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() { return _regenerator().w(function (_context3) { while (1) switch (_context3.n) { case 0: _ref4.focus(); case 1: return _context3.a(2); } }, _callee3); }))); case 2: _t8 = expect; _context4.n = 3; return driver.isAddItemFocused(); case 3: _t8(_context4.v).toBe(true); case 4: return _context4.a(2); } }, _callee4); }))); describe('should focus on first button when there is image', function () { it('update button is first', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6() { var _ref7, _render4, driver, privateDriver, _t9, _t0, _t1, _t10; return _regenerator().w(function (_context6) { while (1) switch (_context6.n) { case 0: _render4 = render(buildComponent({ imageUrl: imageUrl, showUpdateButton: true, showDownloadButton: false, showRemoveButton: true, ref: function ref(el) { return _ref7 = el; } })), driver = _render4.driver; _t9 = imageViewerPrivateDriver; _context6.n = 1; return driver.element(); case 1: _t0 = _context6.v; _t1 = fireEvent; privateDriver = _t9({ element: _t0, eventTrigger: _t1 }); _context6.n = 2; return privateDriver.simulateImageLoad(); case 2: _context6.n = 3; return act(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5() { return _regenerator().w(function (_context5) { while (1) switch (_context5.n) { case 0: _ref7.focus(); case 1: return _context5.a(2); } }, _callee5); }))); case 3: _t10 = expect; _context6.n = 4; return driver.isUpdateButtonFocused(); case 4: _t10(_context6.v).toBe(true); case 5: return _context6.a(2); } }, _callee6); }))); it('remove button is first', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee8() { var _ref0, _render5, driver, privateDriver, _t11, _t12, _t13, _t14; return _regenerator().w(function (_context8) { while (1) switch (_context8.n) { case 0: _render5 = render(buildComponent({ imageUrl: imageUrl, showUpdateButton: false, showDownloadButton: false, showRemoveButton: true, ref: function ref(el) { return _ref0 = el; } })), driver = _render5.driver; _t11 = imageViewerPrivateDriver; _context8.n = 1; return driver.element(); case 1: _t12 = _context8.v; _t13 = fireEvent; privateDriver = _t11({ element: _t12, eventTrigger: _t13 }); _context8.n = 2; return privateDriver.simulateImageLoad(); case 2: _context8.n = 3; return act(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee7() { return _regenerator().w(function (_context7) { while (1) switch (_context7.n) { case 0: _ref0.focus(); case 1: return _context7.a(2); } }, _callee7); }))); case 3: _t14 = expect; _context8.n = 4; return driver.isRemoveButtonFocused(); case 4: _t14(_context8.v).toBe(true); case 5: return _context8.a(2); } }, _callee8); }))); it('download button is first', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee0() { var _ref11, _render6, driver, privateDriver, _t15, _t16, _t17, _t18; return _regenerator().w(function (_context0) { while (1) switch (_context0.n) { case 0: _render6 = render(buildComponent({ imageUrl: imageUrl, showUpdateButton: false, showDownloadButton: true, showRemoveButton: true, ref: function ref(el) { return _ref11 = el; } })), driver = _render6.driver; _t15 = imageViewerPrivateDriver; _context0.n = 1; return driver.element(); case 1: _t16 = _context0.v; _t17 = fireEvent; privateDriver = _t15({ element: _t16, eventTrigger: _t17 }); _context0.n = 2; return privateDriver.simulateImageLoad(); case 2: _context0.n = 3; return act(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee9() { return _regenerator().w(function (_context9) { while (1) switch (_context9.n) { case 0: _ref11.focus(); case 1: return _context9.a(2); } }, _callee9); }))); case 3: _t18 = expect; _context0.n = 4; return driver.isDownloadButtonFocused(); case 4: _t18(_context0.v).toBe(true); case 5: return _context0.a(2); } }, _callee0); }))); }); }); }); }); function runTests(render) { describe('`imageUrl` prop', function () { describe('when a value is given on mount', function () { it('should render the image with the correct url', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee1() { var _render7, driver, _t19; return _regenerator().w(function (_context1) { while (1) switch (_context1.n) { case 0: _render7 = render(buildComponent({ imageUrl: imageUrl })), driver = _render7.driver; _t19 = expect; _context1.n = 1; return driver.getImageUrl(); case 1: _t19(_context1.v).toBe(imageUrl); case 2: return _context1.a(2); } }, _callee1); }))); }); describe('`alt` prop', function () { it('should set the alt attribute on the image', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee10() { var alt, _render8, driver, _t20; return _regenerator().w(function (_context10) { while (1) switch (_context10.n) { case 0: alt = 'A descriptive alt text'; _render8 = render(buildComponent({ imageUrl: imageUrl, alt: alt })), driver = _render8.driver; _t20 = expect; _context10.n = 1; return driver.getImageAlt(); case 1: _t20(_context10.v).toBe(alt); case 2: return _context10.a(2); } }, _callee10); }))); }); describe('when no value is given on mount', function () { it('should NOT display the image', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee11() { var _render9, driver, _t21, _t22; return _regenerator().w(function (_context11) { while (1) switch (_context11.n) { case 0: _render9 = render(buildComponent({ imageUrl: undefined })), driver = _render9.driver; _t21 = expect; _context11.n = 1; return driver.isImageVisible(); case 1: _t21(_context11.v).toBe(false); _t22 = expect; _context11.n = 2; return driver.isPreviousImageVisible(); case 2: _t22(_context11.v).toBe(false); case 3: return _context11.a(2); } }, _callee11); }))); }); describe('when the value changes', function () { it('should display the previous image until new one is loaded', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee12() { var _render0, driver, rerender, setProps, privateDriver, _t23, _t24, _t25, _t26, _t27, _t28, _t29, _t30; return _regenerator().w(function (_context12) { while (1) switch (_context12.n) { case 0: _render0 = render(buildComponent({ imageUrl: imageUrl })), driver = _render0.driver, rerender = _render0.rerender; setProps = function setProps(props) { return rerender(buildComponent(props)); }; // TODO: Merge the drivers into one, instead of using them separately with different render methods _t23 = imageViewerPrivateDriver; _context12.n = 1; return driver.element(); case 1: _t24 = _context12.v; _t25 = fireEvent; privateDriver = _t23({ element: _t24, eventTrigger: _t25 }); _context12.n = 2; return privateDriver.simulateImageLoad(); case 2: _context12.n = 3; return setProps({ imageUrl: secondImageUrl }); case 3: _t26 = expect; _context12.n = 4; return driver.getPreviousImageUrl(); case 4: _t26(_context12.v).toBe(imageUrl); _t27 = expect; _context12.n = 5; return driver.isPreviousImageVisible(); case 5: _t27(_context12.v).toBe(true); _t28 = expect; _context12.n = 6; return driver.getImageUrl(); case 6: _t28(_context12.v).toBe(secondImageUrl); _t29 = expect; _context12.n = 7; return driver.isImageVisible(); case 7: _t29(_context12.v).toBe(false); _t30 = expect; _context12.n = 8; return driver.isImageLoaded(); case 8: _t30(_context12.v).toBe(false); case 9: return _context12.a(2); } }, _callee12); }))); it('should display the new image after it loads', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee13() { var _render1, driver, rerender, setProps, privateDriver, _t31, _t32, _t33, _t34, _t35, _t36, _t37; return _regenerator().w(function (_context13) { while (1) switch (_context13.n) { case 0: _render1 = render(buildComponent({ imageUrl: imageUrl })), driver = _render1.driver, rerender = _render1.rerender; setProps = function setProps(props) { return rerender(buildComponent(props)); }; _t31 = imageViewerPrivateDriver; _context13.n = 1; return driver.element(); case 1: _t32 = _context13.v; _t33 = fireEvent; privateDriver = _t31({ element: _t32, eventTrigger: _t33 }); _context13.n = 2; return privateDriver.simulateImageLoad(); case 2: _context13.n = 3; return setProps({ imageUrl: secondImageUrl }); case 3: _context13.n = 4; return privateDriver.simulateImageLoad(); case 4: _t34 = expect; _context13.n = 5; return driver.getImageUrl(); case 5: _t34(_context13.v).toBe(secondImageUrl); _t35 = expect; _context13.n = 6; return driver.isImageVisible(); case 6: _t35(_context13.v).toBe(true); _t36 = expect; _context13.n = 7; return driver.getPreviousImageUrl(); case 7: _t36(_context13.v).toBe(imageUrl); _t37 = expect; _context13.n = 8; return driver.isPreviousImageVisible(); case 8: _t37(_context13.v).toBe(false); case 9: return _context13.a(2); } }, _callee13); }))); }); }); describe('AddItem', function () { describe('given imageUrl', function () { it('should NOT be visible while image is loading', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee14() { var _render10, driver, _t38, _t39; return _regenerator().w(function (_context14) { while (1) switch (_context14.n) { case 0: _render10 = render(buildComponent({ imageUrl: imageUrl })), driver = _render10.driver; _t38 = expect; _context14.n = 1; return driver.isAddItemVisible(); case 1: _t38(_context14.v).toBe(false); _t39 = expect; _context14.n = 2; return driver.isImageLoaded(); case 2: _t39(_context14.v).toBe(false); case 3: return _context14.a(2); } }, _callee14); }))); it('should NOT be visible after image loaded', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee15() { var _render11, driver, privateDriver, _t40, _t41, _t42, _t43; return _regenerator().w(function (_context15) { while (1) switch (_context15.n) { case 0: _render11 = render(buildComponent({ imageUrl: imageUrl })), driver = _render11.driver; _t40 = imageViewerPrivateDriver; _context15.n = 1; return driver.element(); case 1: _t41 = _context15.v; _t42 = fireEvent; privateDriver = _t40({ element: _t41, eventTrigger: _t42 }); _context15.n = 2; return privateDriver.simulateImageLoad(); case 2: _t43 = expect; _context15.n = 3; return driver.isAddItemVisible(); case 3: _t43(_context15.v).toEqual(false); case 4: return _context15.a(2); } }, _callee15); }))); it('should show isImageLoaded as true after image loaded', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee16() { var _render12, driver, privateDriver, _t44, _t45, _t46, _t47; return _regenerator().w(function (_context16) { while (1) switch (_context16.n) { case 0: _render12 = render(buildComponent({ imageUrl: imageUrl })), driver = _render12.driver; _t44 = imageViewerPrivateDriver; _context16.n = 1; return driver.element(); case 1: _t45 = _context16.v; _t46 = fireEvent; privateDriver = _t44({ element: _t45, eventTrigger: _t46 }); _context16.n = 2; return privateDriver.simulateImageLoad(); case 2: _t47 = expect; _context16.n = 3; return driver.isImageLoaded(); case 3: _t47(_context16.v).toBe(true); case 4: return _context16.a(2); } }, _callee16); }))); it('should NOT be visible while image is loading and previous image is rendered', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee17() { var _render13, driver, rerender, setProps, privateDriver, _t48, _t49, _t50, _t51; return _regenerator().w(function (_context17) { while (1) switch (_context17.n) { case 0: _render13 = render(buildComponent({ imageUrl: imageUrl })), driver = _render13.driver, rerender = _render13.rerender; setProps = function setProps(props) { return rerender(buildComponent(props)); }; _t48 = imageViewerPrivateDriver; _context17.n = 1; return driver.element(); case 1: _t49 = _context17.v; _t50 = fireEvent; privateDriver = _t48({ element: _t49, eventTrigger: _t50 }); _context17.n = 2; return privateDriver.simulateImageLoad(); case 2: setProps({ imageUrl: secondImageUrl }); _t51 = expect; _context17.n = 3; return driver.isAddItemVisible(); case 3: _t51(_context17.v).toEqual(false); case 4: return _context17.a(2); } }, _callee17); }))); }); describe('when no imageUrl given', function () { it('should be visible', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee18() { var _render14, driver, _t52; return _regenerator().w(function (_context18) { while (1) switch (_context18.n) { case 0: _render14 = render(buildComponent({ imageUrl: undefined })), driver = _render14.driver; _t52 = expect; _context18.n = 1; return driver.isAddItemVisible(); case 1: _t52(_context18.v).toBe(true); case 2: return _context18.a(2); } }, _callee18); }))); }); it('should show tooltip [when] addImageInfo is given', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee19() { var addImageInfo, _render15, driver, _t53; return _regenerator().w(function (_context19) { while (1) switch (_context19.n) { case 0: addImageInfo = 'add image info'; _render15 = render(buildComponent({ imageUrl: '', addImageInfo: addImageInfo })), driver = _render15.driver; _t53 = expect; _context19.n = 1; return driver.getAddTooltipContent(); case 1: _t53(_context19.v).toBe(addImageInfo); case 2: return _context19.a(2); } }, _callee19); }))); describe('`onAddImage` prop', function () { it('should trigger add image [when] onAddImage is given', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee20() { var onAddImage, _render16, driver; return _regenerator().w(function (_context20) { while (1) switch (_context20.n) { case 0: onAddImage = vi.fn(); _render16 = render(buildComponent({ onAddImage: onAddImage })), driver = _render16.driver; _context20.n = 1; return driver.clickAdd(); case 1: expect(onAddImage).toHaveBeenCalled(); case 2: return _context20.a(2); } }, _callee20); }))); }); }); describe('Loader', function () { describe('given `imageUrl`', function () { it('should be visible while loading an image', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee21() { var _render17, driver, _t54; return _regenerator().w(function (_context21) { while (1) switch (_context21.n) { case 0: _render17 = render(buildComponent({ imageUrl: imageUrl })), driver = _render17.driver; _t54 = expect; _context21.n = 1; return driver.isLoaderVisible(); case 1: _t54(_context21.v).toBe(true); case 2: return _context21.a(2); } }, _callee21); }))); it('should NOT be visible after image loaded', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee22() { var _render18, driver, privateDriver, _t55, _t56, _t57, _t58; return _regenerator().w(function (_context22) { while (1) switch (_context22.n) { case 0: _render18 = render(buildComponent({ imageUrl: imageUrl })), driver = _render18.driver; _t55 = imageViewerPrivateDriver; _context22.n = 1; return driver.element(); case 1: _t56 = _context22.v; _t57 = fireEvent; privateDriver = _t55({ element: _t56, eventTrigger: _t57 }); _context22.n = 2; return privateDriver.simulateImageLoad(); case 2: _t58 = expect; _context22.n = 3; return driver.isLoaderVisible(); case 3: _t58(_context22.v).toBe(false); case 4: return _context22.a(2); } }, _callee22); }))); }); describe('given no `imageUrl`', function () { it('should NOT be visible', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee23() { var _render19, driver, _t59; return _regenerator().w(function (_context23) { while (1) switch (_context23.n) { case 0: _render19 = render(buildComponent({ imageUrl: undefined })), driver = _render19.driver; _t59 = expect; _context23.n = 1; return driver.isLoaderVisible(); case 1: _t59(_context23.v).toBe(false); case 2: return _context23.a(2); } }, _callee23); }))); }); }); /* Overlay tests should move to e2e visual */ describe.skip('Overlay', function () { it('should be visible while loading an image', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee24() { var _render20, driver, _t60; return _regenerator().w(function (_context24) { while (1) switch (_context24.n) { case 0: _render20 = render(buildComponent({ imageUrl: imageUrl })), driver = _render20.driver; _t60 = expect; _context24.n = 1; return driver.isOverlayVisible(); case 1: _t60(_context24.v).toBe(true); case 2: return _context24.a(2); } }, _callee24); }))); it('should be visible while hovering an image', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee25() { var _render21, driver, privateDriver, _t61, _t62, _t63; return _regenerator().w(function (_context25) { while (1) switch (_context25.n) { case 0: _render21 = render(buildComponent({ imageUrl: imageUrl })), driver = _render21.driver; _t61 = imageViewerPrivateDriver; _context25.n = 1; return driver.element(); case 1: _t62 = _context25.v; privateDriver = _t61({ element: _t62 }); _context25.n = 2; return privateDriver.simulateImageLoad(); case 2: _context25.n = 3; return driver.hover(); case 3: _t63 = expect; _context25.n = 4; return driver.isOverlayVisible(); case 4: _t63(_context25.v).toBe(true); case 5: return _context25.a(2); } }, _callee25); }))); it('should NOT be visible when image is not currently loading and not being hovered', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee26() { var _render22, driver, _t64; return _regenerator().w(function (_context26) { while (1) switch (_context26.n) { case 0: _render22 = render(buildComponent({ imageUrl: undefined })), driver = _render22.driver; _t64 = expect; _context26.n = 1; return driver.isOverlayVisible(); case 1: _t64(_context26.v).toBe(false); case 2: return _context26.a(2); } }, _callee26); }))); }); describe('Update Button', function () { describe('`onUpdateImage` prop', function () { it('should call callback [when] clicked on update button', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee27() { var onUpdateImage, _render23, driver, privateDriver, _t65, _t66, _t67; return _regenerator().w(function (_context27) { while (1) switch (_context27.n) { case 0: onUpdateImage = vi.fn(); _render23 = render(buildComponent({ onUpdateImage: onUpdateImage, imageUrl: imageUrl })), driver = _render23.driver; _t65 = imageViewerPrivateDriver; _context27.n = 1; return driver.element(); case 1: _t66 = _context27.v; _t67 = fireEvent; privateDriver = _t65({ element: _t66, eventTrigger: _t67 }); _context27.n = 2; return privateDriver.simulateImageLoad(); case 2: _context27.n = 3; return driver.clickUpdate(); case 3: expect(onUpdateImage).toHaveBeenCalled(); case 4: return _context27.a(2); } }, _callee27); }))); }); describe('tooltip', function () { it('should display provided content', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee28() { var updateImageInfo, props, _render24, driver, privateDriver, _t68, _t69, _t70, _t71; return _regenerator().w(function (_context28) { while (1) switch (_context28.n) { case 0: updateImageInfo = 'update image info'; props = { imageUrl: imageUrl, updateImageInfo: updateImageInfo }; _render24 = render(buildComponent(props)), driver = _render24.driver; _t68 = imageViewerPrivateDriver; _context28.n = 1; return driver.element(); case 1: _t69 = _context28.v; _t70 = fireEvent; privateDriver = _t68({ element: _t69, eventTrigger: _t70 }); _context28.n = 2; return privateDriver.simulateImageLoad(); case 2: _context28.n = 3; return driver.clickUpdate(); case 3: _t71 = expect; _context28.n = 4; return driver.getUpdateTooltipContent(); case 4: _t71(_context28.v).toBe(updateImageInfo); case 5: return _context28.a(2); } }, _callee28); }))); }); describe('`updateButtonAriaLabel` prop', function () { it('should pass aria-label to update button', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee29() { var updateButtonAriaLabel, _render25, driver, privateDriver, _t72, _t73, _t74, _t75; return _regenerator().w(function (_context29) { while (1) switch (_context29.n) { case 0: updateButtonAriaLabel = 'Change image'; _render25 = render(buildComponent({ imageUrl: imageUrl, updateButtonAriaLabel: updateButtonAriaLabel })), driver = _render25.driver; _t72 = imageViewerPrivateDriver; _context29.n = 1; return driver.element(); case 1: _t73 = _context29.v; _t74 = fireEvent; privateDriver = _t72({ element: _t73, eventTrigger: _t74 }); _context29.n = 2; return privateDriver.simulateImageLoad(); case 2: _t75 = expect; _context29.n = 3; return driver.getUpdateButtonAriaLabel(); case 3: _t75(_context29.v).toBe(updateButtonAriaLabel); case 4: return _context29.a(2); } }, _callee29); }))); }); }); describe('Remove Button', function () { describe('`onRemoveImage` prop', function () { it('should call callback [when] clicked on remove button', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee30() { var onRemoveImage, _render26, driver, privateDriver, _t76, _t77, _t78; return _regenerator().w(function (_context30) { while (1) switch (_context30.n) { case 0: onRemoveImage = vi.fn(); _render26 = render(buildComponent({ onRemoveImage: onRemoveImage, imageUrl: imageUrl })), driver = _render26.driver; _t76 = imageViewerPrivateDriver; _context30.n = 1; return driver.element(); case 1: _t77 = _context30.v; _t78 = fireEvent; privateDriver = _t76({ element: _t77, eventTrigger: _t78 }); _context30.n = 2; return privateDriver.simulateImageLoad(); case 2: _context30.n = 3; return driver.clickRemove(); case 3: expect(onRemoveImage).toHaveBeenCalled(); case 4: return _context30.a(2); } }, _callee30); }))); }); describe('`showRemoveButton` prop', function () { it('should render remove button when prop is not passed', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee31() { var props, _render27, driver, privateDriver, _t79, _t80, _t81, _t82; return _regenerator().w(function (_context31) { while (1) switch (_context31.n) { case 0: props = { imageUrl: imageUrl }; _render27 = render(buildComponent(props)), driver = _render27.driver; _t79 = imageViewerPrivateDriver; _context31.n = 1; return driver.element(); case 1: _t80 = _context31.v; _t81 = fireEvent; privateDriver = _t79({ element: _t80, eventTrigger: _t81 }); _context31.n = 2; return privateDriver.simulateImageLoad(); case 2: _t82 = expect; _context31.n = 3; return driver.removeButtonExists(); case 3: _t82(_context31.v).toBe(true); case 4: return _context31.a(2); } }, _callee31); }))); it('should render remove button when prop equals to "true"', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee32() { var props, _render28, driver, privateDriver, _t83, _t84, _t85, _t86; return _regenerator().w(function (_context32) { while (1) switch (_context32.n) { case 0: props = { showRemoveButton: true, imageUrl: imageUrl }; _render28 = render(buildComponent(props)), driver = _render28.driver; _t83 = imageViewerPrivateDriver; _context32.n = 1; return driver.element(); case 1: _t84 = _context32.v; _t85 = fireEvent; privateDriver = _t83({ element: _t84, eventTrigger: _t85 }); _context32.n = 2; return privateDriver.simulateImageLoad(); case 2: _t86 = expect; _context32.n = 3; return driver.removeButtonExists(); case 3: _t86(_context32.v).toBe(true); case 4: return _context32.a(2); } }, _callee32); }))); it('should NOT render remove button when prop equals to "false"', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee33() { var props, _render29, driver, privateDriver, _t87, _t88, _t89, _t90; return _regenerator().w(function (_context33) { while (1) switch (_context33.n) { case 0: props = { showRemoveButton: false, imageUrl: imageUrl }; _render29 = render(buildComponent(props)), driver = _render29.driver; _t87 = imageViewerPrivateDriver; _context33.n = 1; return driver.element(); case 1: _t88 = _context33.v; _t89 = fireEvent; privateDriver = _t87({ element: _t88, eventTrigger: _t89 }); _context33.n = 2; return privateDriver.simulateImageLoad(); case 2: _t90 = expect; _context33.n = 3; return driver.removeButtonExists(); case 3: _t90(_context33.v).toBe(false); case 4: return _context33.a(2); } }, _callee33); }))); }); describe('tooltip', function () { it('should display provided content', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee34() { var removeImageInfo, _render30, driver, privateDriver, _t91, _t92, _t93, _t94; return _regenerator().w(function (_context34) { while (1) switch (_context34.n) { case 0: removeImageInfo = 'remove image info'; _render30 = render(buildComponent({ imageUrl: imageUrl, removeImageInfo: removeImageInfo })), driver = _render30.driver; _t91 = imageViewerPrivateDriver; _context34.n = 1; return driver.element(); case 1: _t92 = _context34.v; _t93 = fireEvent; privateDriver = _t91({ element: _t92, eventTrigger: _t93 }); _context34.n = 2; return privateDriver.simulateImageLoad(); case 2: _context34.n = 3; return driver.hover(); case 3: _t94 = expect; _context34.n = 4; return driver.getRemoveTooltipContent(); case 4: _t94(_context34.v).toBe(removeImageInfo); case 5: return _context34.a(2); } }, _callee34); }))); }); describe('`removeButtonAriaLabel` prop', function () { it('should pass aria-label to remove button', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee35() { var removeButtonAriaLabel, _render31, driver, privateDriver, _t95, _t96, _t97, _t98; return _regenerator().w(function (_context35) { while (1) switch (_context35.n) { case 0: removeButtonAriaLabel = 'Delete image'; _render31 = render(buildComponent({ imageUrl: imageUrl, removeButtonAriaLabel: removeButtonAriaLabel })), driver = _render31.driver; _t95 = imageViewerPrivateDriver; _context35.n = 1; return driver.element(); case 1: _t96 = _context35.v; _t97 = fireEvent; privateDriver = _t95({ element: _t96, eventTrigger: _t97 }); _context35.n = 2; return privateDriver.simulateImageLoad(); case 2: _t98 = expect; _context35.n = 3; return driver.getRemoveButtonAriaLabel();