import { composeStories } from "@storybook/react"
import { screen } from "@testing-library/react"
import { userEvent } from "@testing-library/user-event"
import React from "react"
import { describe, expect, test } from "vitest"
import { render } from "../../../tests/render"
import * as stories from "./QuantityInput.stories"
const { Default, WithMinMax, Disabled } = composeStories(stories)
describe("", () => {
test("keyboard input", async () => {
render()
const input = screen.getByPlaceholderText("0")
await userEvent.type(input, "123")
expect(input).toHaveValue(123)
})
test("min and max", async () => {
render()
const input = screen.getByPlaceholderText("0")
expect(screen.getByRole("button", { name: "Remove" })).toBeDisabled()
expect(screen.getByRole("button", { name: "Add" })).toBeEnabled()
await userEvent.click(screen.getByRole("button", { name: "Add" }))
expect(input).toHaveValue(1)
expect(screen.getByRole("button", { name: "Remove" })).toBeEnabled()
await userEvent.type(input, "{backspace}")
expect(input).toHaveValue(null)
await userEvent.type(input, "10")
expect(screen.getByRole("button", { name: "Add" })).toBeDisabled()
})
test("disabled", async () => {
render()
const input = screen.getByPlaceholderText("0")
expect(input).toBeDisabled()
expect(screen.getByRole("button", { name: "Remove" })).toBeDisabled()
expect(screen.getByRole("button", { name: "Add" })).toBeDisabled()
})
})