Compare commits
4 Commits
MantashaNo
...
main
Author | SHA1 | Date | |
---|---|---|---|
![]() |
2b7a9be089 | ||
![]() |
b98d0035d8 | ||
![]() |
cf0b0332a4 | ||
![]() |
e8898d8a60 |
@ -1,5 +1,7 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import { render } from "@testing-library/react-native";
|
import { Alert } from "react-native";
|
||||||
|
|
||||||
|
import { fireEvent, render } from "@testing-library/react-native";
|
||||||
import ChipDistributionSummary from "../ChipDistributionSummary";
|
import ChipDistributionSummary from "../ChipDistributionSummary";
|
||||||
|
|
||||||
jest.mock("@expo/vector-icons", () => {
|
jest.mock("@expo/vector-icons", () => {
|
||||||
@ -35,46 +37,23 @@ describe("ChipDistributionSummary Component", () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
test.skip("renders fallback message when no valid distribution", () => {
|
test("renders warning message when needed", async () => {
|
||||||
const { getByText } = render(
|
const { getByText } = render(
|
||||||
<ChipDistributionSummary
|
<ChipDistributionSummary
|
||||||
playerCount={0}
|
playerCount={6}
|
||||||
buyInAmount={20}
|
buyInAmount={25}
|
||||||
selectedCurrency={"$"}
|
selectedCurrency={"$"}
|
||||||
totalChipsCount={[]}
|
totalChipsCount={[100, 50]}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
expect(getByText("No valid distribution calculated yet.")).toBeTruthy();
|
const warning = getByText("TestIcon");
|
||||||
});
|
expect(warning).toBeTruthy();
|
||||||
|
|
||||||
test.skip("scales down chips if exceeding MAX_CHIPS", () => {
|
jest.spyOn(Alert, "alert");
|
||||||
const playerCount = 2;
|
fireEvent.press(warning);
|
||||||
let totalChipsCount = [300, 400, 500, 600, 700];
|
expect(Alert.alert).toHaveBeenCalledWith(
|
||||||
const MAX_CHIPS = 500;
|
"Warning",
|
||||||
const totalChips = totalChipsCount.reduce((sum, count) => sum + count, 0);
|
`Be advised that the value of the distributed chips does not equal the buy-in for these inputs.\n\nHowever, results shown are fair to all players`
|
||||||
|
|
||||||
if (totalChips > MAX_CHIPS) {
|
|
||||||
const scaleFactor = MAX_CHIPS / totalChips;
|
|
||||||
totalChipsCount = totalChipsCount.map((count) =>
|
|
||||||
Math.round(count * scaleFactor)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
const expectedDistribution = [30, 40, 50, 60, 70]; // Adjust as per actual component calculations
|
|
||||||
|
|
||||||
const { getByText } = render(
|
|
||||||
<ChipDistributionSummary
|
|
||||||
playerCount={playerCount}
|
|
||||||
buyInAmount={100}
|
|
||||||
totalChipsCount={totalChipsCount}
|
|
||||||
selectedCurrency={"$"}
|
|
||||||
/>
|
|
||||||
);
|
);
|
||||||
|
|
||||||
expect(getByText("Distribution & Denomination")).toBeTruthy();
|
|
||||||
|
|
||||||
expectedDistribution.forEach((count) => {
|
|
||||||
expect(getByText(new RegExp(`^${count}\\s+chips:`, "i"))).toBeTruthy();
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -3,9 +3,7 @@ import {
|
|||||||
userEvent,
|
userEvent,
|
||||||
render,
|
render,
|
||||||
screen,
|
screen,
|
||||||
waitForElementToBeRemoved,
|
|
||||||
fireEvent,
|
fireEvent,
|
||||||
act,
|
|
||||||
} from "@testing-library/react-native";
|
} from "@testing-library/react-native";
|
||||||
import ChipsSelector from "@/components/ChipsSelector";
|
import ChipsSelector from "@/components/ChipsSelector";
|
||||||
|
|
||||||
@ -83,27 +81,15 @@ describe("tests for ChipsSelector", () => {
|
|||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
|
||||||
// skip: There is a jest/DOM issue with the button interaction, despite working correctly in-app. Documented to resolve.
|
it("test dec/inc buttons", async () => {
|
||||||
it.skip("test dec/inc buttons", async () => {
|
|
||||||
rend();
|
rend();
|
||||||
|
|
||||||
const blue = screen.getByText(TOTAL_CHIPS_COUNT[3].toString());
|
|
||||||
const black = screen.getByText(TOTAL_CHIPS_COUNT[4].toString());
|
|
||||||
const decrement = screen.getByRole("button", { name: /-/i });
|
const decrement = screen.getByRole("button", { name: /-/i });
|
||||||
const increment = screen.getByRole("button", { name: /\+/i });
|
const increment = screen.getByRole("button", { name: /\+/i });
|
||||||
|
|
||||||
fireEvent.press(decrement);
|
fireEvent.press(decrement);
|
||||||
fireEvent.press(decrement);
|
expect(mockSetNumberOfChips).toHaveBeenCalledWith(4);
|
||||||
|
|
||||||
// Test that elements are removed after fireEvent
|
|
||||||
await waitForElementToBeRemoved(() => blue);
|
|
||||||
await waitForElementToBeRemoved(() => black);
|
|
||||||
|
|
||||||
fireEvent.press(increment);
|
fireEvent.press(increment);
|
||||||
fireEvent.press(increment);
|
expect(mockSetNumberOfChips).toHaveBeenCalledWith(4);
|
||||||
|
|
||||||
// Test that new elements re-appear, correctly
|
|
||||||
const blue1 = screen.getByText(TOTAL_CHIPS_COUNT[3].toString());
|
|
||||||
const black1 = screen.getByText(TOTAL_CHIPS_COUNT[4].toString());
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user