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

     1  import { render, screen } from "@testing-library/react"
     2  import userEvent from "@testing-library/user-event"
     3  import React from "react"
     4  import ClearLogs from "./ClearLogs"
     5  import { logLinesToString } from "./logs"
     6  import LogStore, { LogStoreProvider } from "./LogStore"
     7  import { appendLinesForManifestAndSpan } from "./testlogs"
     8  import { ResourceName } from "./types"
     9  
    10  describe("ClearLogs", () => {
    11    const createPopulatedLogStore = (): LogStore => {
    12      const logStore = new LogStore()
    13      appendLinesForManifestAndSpan(logStore, "", "", [
    14        "global 1\n",
    15        "global 2\n",
    16      ])
    17      appendLinesForManifestAndSpan(logStore, "vigoda", "build:m1:1", [
    18        "m1:1 build line 1\n",
    19      ])
    20      appendLinesForManifestAndSpan(logStore, "vigoda", "pod:m1-abc123", [
    21        "m1:1 runtime line 1\n",
    22      ])
    23      appendLinesForManifestAndSpan(logStore, "manifest2", "build:m2", [
    24        "m2 build line 1\n",
    25      ])
    26      appendLinesForManifestAndSpan(logStore, "vigoda", "build:m1:2", [
    27        "m1:2 build line 1\n",
    28        "m1:2 build line 2\n",
    29      ])
    30      appendLinesForManifestAndSpan(logStore, "manifest2", "pod:m2-def456", [
    31        "m2 runtime line 1\n",
    32      ])
    33      return logStore
    34    }
    35  
    36    it("clears all resources", () => {
    37      const logStore = createPopulatedLogStore()
    38      render(
    39        <LogStoreProvider value={logStore}>
    40          <ClearLogs resourceName={ResourceName.all} />
    41        </LogStoreProvider>
    42      )
    43  
    44      userEvent.click(screen.getByRole("button"))
    45  
    46      expect(logStore.spans).toEqual({})
    47      expect(logStore.allLog()).toHaveLength(0)
    48    })
    49  
    50    it("clears a specific resource", () => {
    51      const logStore = createPopulatedLogStore()
    52      render(
    53        <LogStoreProvider value={logStore}>
    54          <ClearLogs resourceName={"vigoda"} />
    55        </LogStoreProvider>
    56      )
    57  
    58      userEvent.click(screen.getByRole("button"))
    59  
    60      expect(Object.keys(logStore.spans).sort()).toEqual([
    61        "_",
    62        "build:m2",
    63        "pod:m2-def456",
    64      ])
    65  
    66      expect(logLinesToString(logStore.allLog(), false)).toEqual(
    67        "global 1\nglobal 2\nm2 build line 1\nm2 runtime line 1"
    68      )
    69    })
    70  })