From b1c9ce1ce2ba0ff1a4d205f404486bec3654f5b1 Mon Sep 17 00:00:00 2001 From: vutukuri15 Date: Tue, 25 Feb 2025 18:49:25 -0800 Subject: [PATCH] Assignment6 test code --- components/__tests__/BuyInSelector.test.tsx | 77 +++++++++++---------- 1 file changed, 40 insertions(+), 37 deletions(-) diff --git a/components/__tests__/BuyInSelector.test.tsx b/components/__tests__/BuyInSelector.test.tsx index c7601be..876d1d4 100644 --- a/components/__tests__/BuyInSelector.test.tsx +++ b/components/__tests__/BuyInSelector.test.tsx @@ -3,7 +3,6 @@ import { fireEvent, render } from "@testing-library/react-native"; import BuyInSelector from "@/components/BuyInSelector"; jest.mock("@expo/vector-icons", () => { - const React = require("react"); const { Text } = require("react-native"); return { MaterialIcons: () => MaterialIcons, @@ -11,71 +10,54 @@ jest.mock("@expo/vector-icons", () => { }); describe("BuyInSelector Component", () => { - it("renders the buy-in options and input correctly", () => { - const setBuyInAmount = jest.fn(); - const { getByText, getByPlaceholderText } = render( - - ); + let setBuyInAmount; + let getByText; + let getByPlaceholderText; + const renderComponent = () => { + const result = render(); + getByText = result.getByText; + getByPlaceholderText = result.getByPlaceholderText; + }; + + beforeEach(() => { + setBuyInAmount = jest.fn(); + renderComponent(); + }); + + it("renders the buy-in options and input correctly", () => { expect(getByText("Select Buy-in Amount:")).toBeTruthy(); expect(getByText("10")).toBeTruthy(); expect(getByText("25")).toBeTruthy(); expect(getByText("50")).toBeTruthy(); expect(getByPlaceholderText("Enter custom buy-in")).toBeTruthy(); + expect(getByText("Selected Buy-in: None")).toBeTruthy(); // Check default selection }); it("sets a predefined buy-in amount correctly", () => { - const setBuyInAmount = jest.fn(); - const { getByText } = render( - - ); - fireEvent.press(getByText("25")); - expect(setBuyInAmount).toHaveBeenCalledWith(25); }); it("sets a custom buy-in amount correctly", () => { - const setBuyInAmount = jest.fn(); - const { getByPlaceholderText } = render( - - ); - fireEvent.changeText(getByPlaceholderText("Enter custom buy-in"), "100"); - expect(setBuyInAmount).toHaveBeenCalledWith(100); }); it("resets custom amount if invalid input is entered", () => { - const setBuyInAmount = jest.fn(); - const { getByPlaceholderText } = render( - - ); - fireEvent.changeText(getByPlaceholderText("Enter custom buy-in"), "-10"); - - expect(setBuyInAmount).toHaveBeenCalledWith(25); + expect(setBuyInAmount).toHaveBeenCalledWith(25); // Assuming 25 is the default + fireEvent.changeText(getByPlaceholderText("Enter custom buy-in"), "abc"); + expect(setBuyInAmount).toHaveBeenCalledWith(25); // Reset to default }); it("clears the custom amount when selecting a predefined option", () => { - const setBuyInAmount = jest.fn(); - const { getByText, getByPlaceholderText } = render( - - ); - fireEvent.changeText(getByPlaceholderText("Enter custom buy-in"), "100"); - fireEvent.press(getByText("50")); - expect(setBuyInAmount).toHaveBeenCalledWith(50); }); it("handles valid and invalid input for custom amount correctly", () => { - const setBuyInAmount = jest.fn(); - const { getByPlaceholderText } = render( - - ); - fireEvent.changeText(getByPlaceholderText("Enter custom buy-in"), "75"); expect(setBuyInAmount).toHaveBeenCalledWith(75); @@ -85,4 +67,25 @@ describe("BuyInSelector Component", () => { fireEvent.changeText(getByPlaceholderText("Enter custom buy-in"), "abc"); expect(setBuyInAmount).toHaveBeenCalledWith(25); }); + + it("triggers state update every time a buy-in option is clicked, even if it's the same", () => { + fireEvent.press(getByText("25")); // First click + fireEvent.press(getByText("25")); // Clicking the same option again + expect(setBuyInAmount).toHaveBeenCalledTimes(2); // Expect it to be called twice + }); + + it("resets to default buy-in when custom input is cleared", () => { + const input = getByPlaceholderText("Enter custom buy-in"); + fireEvent.changeText(input, "75"); + expect(setBuyInAmount).toHaveBeenCalledWith(75); + fireEvent.changeText(input, ""); + expect(setBuyInAmount).toHaveBeenCalledWith(25); // Assuming 25 is the default + }); + + it("updates state correctly when selecting predefined buy-in after entering a custom amount", () => { + fireEvent.changeText(getByPlaceholderText("Enter custom buy-in"), "200"); + expect(setBuyInAmount).toHaveBeenCalledWith(200); + fireEvent.press(getByText("10")); + expect(setBuyInAmount).toHaveBeenCalledWith(10); + }); });