github.com/tilt-dev/tilt@v0.36.0/web/src/OverviewTableTriggerModeToggle.test.tsx (about)

     1  import { render, screen } from "@testing-library/react"
     2  import userEvent from "@testing-library/user-event"
     3  import fetchMock from "fetch-mock"
     4  import OverviewTableTriggerModeToggle, {
     5    ToggleTriggerModeTooltip,
     6  } from "./OverviewTableTriggerModeToggle"
     7  import { TriggerMode } from "./types"
     8  
     9  function mockTriggerModeCalls() {
    10    fetchMock.mock(
    11      (url) => url.startsWith("/api/override/trigger_mode"),
    12      JSON.stringify({})
    13    )
    14  }
    15  
    16  describe("OverviewTableTriggerModeToggle", () => {
    17    beforeEach(() => {
    18      mockTriggerModeCalls()
    19    })
    20  
    21    afterEach(() => {
    22      fetchMock.reset()
    23    })
    24  
    25    test.each([TriggerMode.TriggerModeManual, TriggerMode.TriggerModeAuto])(
    26      "sets trigger mode on click when trigger mode is %s",
    27      (triggerMode) => {
    28        render(
    29          <OverviewTableTriggerModeToggle
    30            resourceName="foo"
    31            triggerMode={triggerMode}
    32          />
    33        )
    34  
    35        const tooltipText =
    36          triggerMode == TriggerMode.TriggerModeAuto
    37            ? ToggleTriggerModeTooltip.isAuto
    38            : ToggleTriggerModeTooltip.isManual
    39        const triggerModeButton = screen.getByTitle(tooltipText)
    40        userEvent.click(triggerModeButton)
    41  
    42        const calls = fetchMock.calls()
    43        expect(calls.length).toEqual(1)
    44        const call = calls[0]
    45        expect(call[0]).toEqual("/api/override/trigger_mode")
    46        expect(call[1]).toBeTruthy()
    47        expect(call[1]!.method).toEqual("post")
    48        expect(call[1]!.body).toBeTruthy()
    49        const request = JSON.parse(call[1]!.body!.toString())
    50        let expectedTriggerMode: TriggerMode
    51        switch (triggerMode) {
    52          case TriggerMode.TriggerModeAuto:
    53            expectedTriggerMode = TriggerMode.TriggerModeManual
    54            break
    55          case TriggerMode.TriggerModeManual:
    56            expectedTriggerMode = TriggerMode.TriggerModeAuto
    57            break
    58          default:
    59            fail(`unknown trigger mode: ${triggerMode}`)
    60        }
    61        expect(request).toEqual({
    62          manifest_names: ["foo"],
    63          trigger_mode: expectedTriggerMode,
    64        })
    65      }
    66    )
    67  })