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([]);
+});