You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by di...@apache.org on 2022/08/22 13:17:52 UTC

[superset] 03/36: Add TableControls test

This is an automated email from the ASF dual-hosted git repository.

diegopucci pushed a commit to branch chore/drill-to-detail-modal-tests
in repository https://gitbox.apache.org/repos/asf/superset.git

commit ed622527ec61240a65a70e5c8b37895ffed2d559
Author: geido <di...@gmail.com>
AuthorDate: Tue Aug 16 20:14:14 2022 +0300

    Add TableControls test
---
 .../DrillDetailPane/TableControls.test.tsx         | 109 +++++++++++++++++++++
 1 file changed, 109 insertions(+)

diff --git a/superset-frontend/src/dashboard/components/DrillDetailPane/TableControls.test.tsx b/superset-frontend/src/dashboard/components/DrillDetailPane/TableControls.test.tsx
new file mode 100644
index 0000000000..778f5d96ad
--- /dev/null
+++ b/superset-frontend/src/dashboard/components/DrillDetailPane/TableControls.test.tsx
@@ -0,0 +1,109 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import React from 'react';
+import { render, screen } from 'spec/helpers/testing-library';
+import userEvent from '@testing-library/user-event';
+import TableControls from './TableControls';
+
+const setFilters = jest.fn();
+const onReload = jest.fn();
+const setup = (overrides: Record<string, any> = {}) => {
+  const props = {
+    filters: [],
+    setFilters,
+    onReload,
+    loading: false,
+    totalCount: 0,
+    ...overrides,
+  };
+  return render(<TableControls {...props} />);
+};
+test('should render', async () => {
+  const { container } = setup();
+  expect(container).toBeInTheDocument();
+});
+
+test('should show 0 rows', () => {
+  setup();
+  expect(screen.getByText('0 rows')).toBeInTheDocument();
+});
+
+test('should show the correct amount of rows', () => {
+  setup({
+    totalCount: 10,
+  });
+  expect(screen.getByText('10 rows')).toBeInTheDocument();
+});
+
+test('should render the reload button', () => {
+  setup();
+  expect(screen.getByRole('button', { name: 'Reload' })).toBeInTheDocument();
+});
+
+test('should show the loading indicator', async () => {
+  setup({
+    loading: true,
+  });
+  expect(screen.getByText('Loading...')).toBeInTheDocument();
+});
+
+test('should call onreload', async () => {
+  setup();
+  userEvent.click(screen.getByRole('button', { name: 'Reload' }));
+  expect(onReload).toHaveBeenCalledTimes(1);
+});
+
+test('should render with filters', async () => {
+  setup({
+    filters: [
+      {
+        col: 'platform',
+        op: '==',
+        val: 'GB',
+      },
+      {
+        col: 'lang',
+        op: '==',
+        val: 'IT',
+      },
+    ],
+  });
+  expect(screen.getByText('platform')).toBeInTheDocument();
+  expect(screen.getByText('GB')).toBeInTheDocument();
+  expect(screen.getByText('lang')).toBeInTheDocument();
+  expect(screen.getByText('IT')).toBeInTheDocument();
+});
+
+test('should remove the filters on close', async () => {
+  setup({
+    filters: [
+      {
+        col: 'platform',
+        op: '==',
+        val: 'GB',
+      },
+    ],
+  });
+  expect(screen.getByText('platform')).toBeInTheDocument();
+  expect(screen.getByText('GB')).toBeInTheDocument();
+
+  userEvent.click(screen.getByRole('img', { name: 'close' }));
+
+  expect(setFilters).toHaveBeenCalledWith([]);
+});