wix-style-react
Version:
wix-style-react
173 lines (144 loc) • 7.23 kB
JavaScript
;
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);
});
});
});