From dbae660a0ecf13da13961c6a205353ef9843fd01 Mon Sep 17 00:00:00 2001 From: akiran Date: Thu, 25 Jan 2024 17:59:38 +0530 Subject: [PATCH] fixed #1874: slick-current is always on first slide despite initialSlide != 0 --- __tests__/regression/fix-1813.test.js | 7 +------ __tests__/regression/fix-1874.test.js | 25 +++++++++++++++++++++++++ src/inner-slider.js | 1 + test-utils.js | 5 +++++ 4 files changed, 32 insertions(+), 6 deletions(-) create mode 100644 __tests__/regression/fix-1874.test.js diff --git a/__tests__/regression/fix-1813.test.js b/__tests__/regression/fix-1813.test.js index 0618f8527..5b4722259 100644 --- a/__tests__/regression/fix-1813.test.js +++ b/__tests__/regression/fix-1813.test.js @@ -2,11 +2,8 @@ import React from "react"; import { render, fireEvent } from "@testing-library/react"; -import Slider from "../../src/index"; import { - activeSlide, - activeSlides, clickNext, clickPrevious, getActiveButton, @@ -14,11 +11,9 @@ import { getActiveSlidesText, getButtons, getButtonsLength, - getButtonsListItem, getClonesCount, getCurrentSlide, - getSlidesCount, - hasClass + getSlidesCount } from "../../test-utils"; import { GenericSliderComponent } from "../TestComponents"; diff --git a/__tests__/regression/fix-1874.test.js b/__tests__/regression/fix-1874.test.js new file mode 100644 index 000000000..67f9c1502 --- /dev/null +++ b/__tests__/regression/fix-1874.test.js @@ -0,0 +1,25 @@ +// Test fix of#1874: "slick-current" is always on first slide despite initialSlide != 0 + +import React from "react"; +import { render } from "@testing-library/react"; + +import { getCurrentSlideContent, clickNext } from "../../test-utils"; +import { GenericSliderComponent } from "../TestComponents"; + +describe("currentSlide test with different initialSlide values", () => { + it("currentSlide is 0 when initialSlide is 0", function() { + const { container } = render(); + expect(getCurrentSlideContent(container)).toEqual("1"); + clickNext(container); + expect(getCurrentSlideContent(container)).toEqual("2"); + }); + + it("currentSlide is 2 when initialSlide is 2", function() { + const { container } = render( + + ); + expect(getCurrentSlideContent(container)).toEqual("3"); + clickNext(container); + expect(getCurrentSlideContent(container)).toEqual("4"); + }); +}); diff --git a/src/inner-slider.js b/src/inner-slider.js index b477bc2d1..aba39da9d 100644 --- a/src/inner-slider.js +++ b/src/inner-slider.js @@ -35,6 +35,7 @@ export class InnerSlider extends React.Component { this.state = { ...initialState, currentSlide: this.props.initialSlide, + targetSlide: this.props.initialSlide ? this.props.initialSlide : 0, slideCount: React.Children.count(this.props.children) }; this.callbackTimers = []; diff --git a/test-utils.js b/test-utils.js index 71286463f..265b79bfb 100644 --- a/test-utils.js +++ b/test-utils.js @@ -20,6 +20,11 @@ export function getCurrentSlide(container) { return container.querySelector(".slick-current"); } +export function getCurrentSlideContent(container) { + const slide = container.querySelector(".slick-current"); + return slide.textContent; +} + export function getButtons(container) { return container.querySelectorAll(".slick-dots button"); }