diff --git a/src/renderer/components/+namespaces/__tests__/namespace-select-filter.test.tsx b/src/renderer/components/+namespaces/__tests__/namespace-select-filter.test.tsx
index df9de81891..bb8dc3dd06 100644
--- a/src/renderer/components/+namespaces/__tests__/namespace-select-filter.test.tsx
+++ b/src/renderer/components/+namespaces/__tests__/namespace-select-filter.test.tsx
@@ -49,9 +49,18 @@ jest.mock("electron", () => ({ // TODO: remove mocks
}));
describe("NamespaceSelectFilter", () => {
+ const placeholderClass = "Select__placeholder";
+ const placeholderSelector = `.${placeholderClass}`;
+
let render: DiRender;
let namespaceStore: NamespaceStore;
+ const buildItems = (names: string[]) => {
+ return names.map((name) => {
+ return new Namespace({ kind: "Namespace", apiVersion: "v1", metadata: { name, uid: name, resourceVersion: "1" }});
+ });
+ };
+
beforeAll(async () => { // TODO: remove beforeAll
await AppPaths.init();
@@ -105,39 +114,63 @@ describe("NamespaceSelectFilter", () => {
const { getByTestId } = render(<>>);
const select = getByTestId("namespace-select-filter");
- expect(select.getElementsByClassName("Select__placeholder")[0].innerHTML).toEqual("All namespaces");
+ expect(select.getElementsByClassName(placeholderClass)[0].innerHTML).toEqual("All namespaces");
});
it ("renders selected namespaces", async () => {
- namespaceStore.items.replace([
- new Namespace({ kind: "Namespace", apiVersion: "v1", metadata: { name: "one", uid: "one", resourceVersion: "1" }}),
- new Namespace({ kind: "Namespace", apiVersion: "v1", metadata: { name: "two", uid: "two", resourceVersion: "1" }}),
- new Namespace({ kind: "Namespace", apiVersion: "v1", metadata: { name: "three", uid: "three", resourceVersion: "1" }}),
- ]);
+ namespaceStore.items.replace(buildItems(["one", "two", "three"]));
namespaceStore.selectNamespaces(["two", "three"]);
const { getByTestId } = render(<>>);
const select = getByTestId("namespace-select-filter");
- expect(select.getElementsByClassName("Select__placeholder")[0].innerHTML).toEqual("Namespaces: two, three");
+ expect(select.getElementsByClassName(placeholderClass)[0].innerHTML).toEqual("Namespaces: two, three");
});
it ("allows to select namespaces", async () => {
- namespaceStore.items.replace([
- new Namespace({ kind: "Namespace", apiVersion: "v1", metadata: { name: "one", uid: "one", resourceVersion: "1" }}),
- new Namespace({ kind: "Namespace", apiVersion: "v1", metadata: { name: "two", uid: "two", resourceVersion: "1" }}),
- new Namespace({ kind: "Namespace", apiVersion: "v1", metadata: { name: "three", uid: "three", resourceVersion: "1" }}),
- ]);
+ namespaceStore.items.replace(buildItems(["one", "two", "three"]));
const { container } = render(<>>);
- fireEvent.click(container.querySelector(".Select__placeholder"));
+ fireEvent.click(container.querySelector(placeholderSelector));
await waitFor(() => screen.getByText("one"));
fireEvent.click(screen.getByText("one"));
- expect(container.querySelector(".Select__placeholder").innerHTML).toEqual("Namespace: one");
+ expect(container.querySelector(placeholderSelector).innerHTML).toEqual("Namespace: one");
expect(namespaceStore.selectedNames).toEqual(new Set(["one"]));
});
+
+ it ("allows to change namespaces", async () => {
+ namespaceStore.items.replace(buildItems(["one", "two", "three"]));
+ namespaceStore.selectNamespaces(["one"]);
+
+ const { container } = render(<>>);
+
+ fireEvent.click(container.querySelector(placeholderSelector));
+
+ await waitFor(() => screen.getByText("three"));
+ fireEvent.click(screen.getByText("three"));
+
+ expect(container.querySelector(".Select__placeholder").innerHTML).toEqual("Namespace: three");
+ expect(namespaceStore.selectedNames).toEqual(new Set(["three"]));
+ });
+
+ it ("allows to switch back to all namespaces", async () => {
+ const namespaces = ["one", "two", "three"];
+
+ namespaceStore.items.replace(buildItems(namespaces));
+ namespaceStore.selectNamespaces(["three"]);
+
+ const { container } = render(<>>);
+
+ fireEvent.click(container.querySelector(placeholderSelector));
+
+ await waitFor(() => screen.getByText("three"));
+ fireEvent.click(screen.getByText("All Namespaces"));
+
+ expect(container.querySelector(placeholderSelector).innerHTML).toEqual("All namespaces");
+ expect(namespaceStore.selectedNames).toEqual(new Set(namespaces));
+ });
});