UNPKG

wix-style-react

Version:
173 lines (144 loc) • 7.23 kB
'use strict'; var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _CarouselDriver = require('./Carousel.driver.private'); var _CarouselDriver2 = _interopRequireDefault(_CarouselDriver); var _Carousel = require('./Carousel'); var _Carousel2 = _interopRequireDefault(_Carousel); var _driverFactory = require('wix-ui-test-utils/driver-factory'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } describe('Carousel', function () { var createDriver = (0, _driverFactory.createDriverFactory)(_CarouselDriver2.default); jest.useFakeTimers(); it('should be rendered', function () { var driver = createDriver(_react2.default.createElement(_Carousel2.default, { images: [] })); expect(driver.exists()).toBeTruthy(); }); describe('loader', function () { it('should show only the loader when loading', function () { var driver = createDriver(_react2.default.createElement(_Carousel2.default, { images: [{ src: 'image1.jpg' }, { src: 'image2.jpg' }] })); expect(driver.isLoading()).toBeTruthy(); }); it('should hide the loader when images are loaded', function () { var driver = createDriver(_react2.default.createElement(_Carousel2.default, { images: [{ src: 'image1.jpg' }, { src: 'image2.jpg' }] })); driver.loadImages(); expect(driver.isLoading()).toBeFalsy(); }); }); describe('basic behaviour', function () { it('should show the first image', function () { var driver = createDriver(_react2.default.createElement(_Carousel2.default, { images: [{ src: 'image1.jpg' }, { src: 'image2.jpg' }] })); expect(driver.getCurrentImageIndex()).toBe(0); }); it('should switch to the next image when clicking next', function () { var driver = createDriver(_react2.default.createElement(_Carousel2.default, { images: [{ src: 'image1.jpg' }, { src: 'image2.jpg' }] })); driver.clickNext(); expect(driver.getCurrentImageIndex()).toBe(1); }); it('should switch to the previous image when clicking prev', function () { var driver = createDriver(_react2.default.createElement(_Carousel2.default, { images: [{ src: 'image1.jpg' }, { src: 'image2.jpg' }] })); driver.clickNext(); jest.runOnlyPendingTimers(); driver.clickPrevious(); expect(driver.getCurrentImageIndex()).toBe(0); }); }); describe('infinite functionallity', function () { describe('default behaviour', function () { it('should show the last image when clicing `prev`', function () { var driver = createDriver(_react2.default.createElement(_Carousel2.default, { images: [{ src: 'image1.jpg' }, { src: 'image2.jpg' }, { src: 'image3.jpg' }] })); driver.clickPrevious(); expect(driver.getCurrentImageIndex()).toBe(2); }); it('should show the first image when clicing `next` on the last image', function () { var driver = createDriver(_react2.default.createElement(_Carousel2.default, { images: [{ src: 'image1.jpg' }, { src: 'image2.jpg' }, { src: 'image3.jpg' }] })); driver.clickNext(); expect(driver.getCurrentImageIndex()).toBe(1); jest.runOnlyPendingTimers(); driver.clickNext(); expect(driver.getCurrentImageIndex()).toBe(2); jest.runOnlyPendingTimers(); driver.clickNext(); expect(driver.getCurrentImageIndex()).toBe(0); }); }); describe('when `infinite` is false', function () { it('should stay on the same image when clicking `prev`', function () { var driver = createDriver(_react2.default.createElement(_Carousel2.default, { images: [{ src: 'image1.jpg' }, { src: 'image2.jpg' }, { src: 'image3.jpg' }], infinite: false })); driver.clickPrevious(); expect(driver.getCurrentImageIndex()).toBe(0); }); it('should stay on the last image when clicing `next` on the last image', _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() { var driver; return regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: driver = createDriver(_react2.default.createElement(_Carousel2.default, { images: [{ src: 'image1.jpg' }, { src: 'image2.jpg' }, { src: 'image3.jpg' }], infinite: false })); driver.clickNext(); expect(driver.getCurrentImageIndex()).toBe(1); jest.runOnlyPendingTimers(); driver.clickNext(); expect(driver.getCurrentImageIndex()).toBe(2); jest.runOnlyPendingTimers(); driver.clickNext(); expect(driver.getCurrentImageIndex()).toBe(2); case 9: case 'end': return _context.stop(); } } }, _callee, undefined); }))); }); }); describe('autoplay', function () { it('should not change images when disabled', function () { var driver = createDriver(_react2.default.createElement(_Carousel2.default, { images: [{ src: 'image1.jpg' }, { src: 'image2.jpg' }] })); expect(driver.getCurrentImageIndex()).toBe(0); jest.runOnlyPendingTimers(); expect(driver.getCurrentImageIndex()).toBe(0); }); it('should automaticaly change images when enabled', function () { var driver = createDriver(_react2.default.createElement(_Carousel2.default, { autoplay: true, images: [{ src: 'image1.jpg' }, { src: 'image2.jpg' }] })); expect(driver.getCurrentImageIndex()).toBe(0); jest.runOnlyPendingTimers(); expect(driver.getCurrentImageIndex()).toBe(1); }); it('should stop playing when mouse is on the image', function () { var driver = createDriver(_react2.default.createElement(_Carousel2.default, { autoplay: true, images: [{ src: 'image1.jpg' }, { src: 'image2.jpg' }] })); expect(driver.getCurrentImageIndex()).toBe(0); driver.mouseOver(); jest.runOnlyPendingTimers(); expect(driver.getCurrentImageIndex()).toBe(0); }); it('should continue playing when mouse leaves the image', function () { var driver = createDriver(_react2.default.createElement(_Carousel2.default, { autoplay: true, images: [{ src: 'image1.jpg' }, { src: 'image2.jpg' }] })); expect(driver.getCurrentImageIndex()).toBe(0); driver.mouseOver(); driver.mouseOut(); jest.runOnlyPendingTimers(); expect(driver.getCurrentImageIndex()).toBe(1); }); }); });