diff --git a/public/components/SQLPage/sql_catalog_tree/__tests__/__snapshots__/catalog_s3_loaded.test.tsx.snap b/public/components/SQLPage/sql_catalog_tree/__tests__/__snapshots__/catalog_s3_loaded.test.tsx.snap new file mode 100644 index 0000000..c338fc4 --- /dev/null +++ b/public/components/SQLPage/sql_catalog_tree/__tests__/__snapshots__/catalog_s3_loaded.test.tsx.snap @@ -0,0 +1,140 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Test Catalog tree Loading state S3 catalog tree 1`] = ` +
+
+
+

+ You can quickly navigate this list using arrow keys. +

+
    +
  • + +
    +
  • +
  • + +
    +
  • +
+
+
+
+`; diff --git a/public/components/SQLPage/sql_catalog_tree/__tests__/__snapshots__/catalog_s3_loading.test.tsx.snap b/public/components/SQLPage/sql_catalog_tree/__tests__/__snapshots__/catalog_s3_loading.test.tsx.snap new file mode 100644 index 0000000..52aca7f --- /dev/null +++ b/public/components/SQLPage/sql_catalog_tree/__tests__/__snapshots__/catalog_s3_loading.test.tsx.snap @@ -0,0 +1,70 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Test Catalog tree Loading state S3 catalog tree 1`] = ` +
+
+
+
+
+ +
+
+ Loading databases +
+
+
+
+
+
+
+ Loading may take over 30 seconds +
+
+
+
+
+
+
+
+ Status: + +
+
+
+
+
+
+
+
+
+`; diff --git a/public/components/SQLPage/sql_catalog_tree/__tests__/catalog_s3_loaded.test.tsx b/public/components/SQLPage/sql_catalog_tree/__tests__/catalog_s3_loaded.test.tsx new file mode 100644 index 0000000..33745fc --- /dev/null +++ b/public/components/SQLPage/sql_catalog_tree/__tests__/catalog_s3_loaded.test.tsx @@ -0,0 +1,78 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import { render, waitFor } from '@testing-library/react'; +import React from 'react'; +import { httpClientMock } from '../../../../../test/mocks'; +import { mockDataSelectQuery, mockHttpQuery } from '../../../../../test/mocks/mockData'; +import { CatalogTree } from '../catalog_tree'; + +jest.mock('../../../../dependencies/register_observability_dependencies', () => ({ + getRenderAccelerationDetailsFlyout: jest.fn(() => jest.fn()), + getRenderCreateAccelerationFlyout: jest.fn(() => jest.fn()), + setRenderAccelerationDetailsFlyout: jest.fn(() => jest.fn()), + setRenderCreateAccelerationFlyout: jest.fn(() => jest.fn()), +})); + +jest.mock('../../../../framework/catalog_cache_refs', () => ({ + catalogCacheRefs: { + useLoadDatabasesToCache: jest.fn(() => ({ + loadStatus: '', + startLoading: jest.fn(), + stopLoading: jest.fn(), + })), + useLoadTablesToCache: jest.fn(() => ({ + loadStatus: '', + startLoading: jest.fn(), + stopLoading: jest.fn(), + })), + useLoadTableColumnsToCache: jest.fn(() => ({ + loadStatus: '', + startLoading: jest.fn(), + stopLoading: jest.fn(), + })), + useLoadAccelerationsToCache: jest.fn(() => ({ + loadStatus: '', + startLoading: jest.fn(), + stopLoading: jest.fn(), + })), + CatalogCacheManager: { + getOrCreateDataSource: jest.fn(() => ({ + name: 'my_s3', + lastUpdated: '', + status: 'Updated', + databases: [ + { + name: 'db1', + }, + { + name: 'db2', + }, + ], + })), + }, + }, +})); + +describe('Test Catalog tree', () => { + it('Loading state S3 catalog tree', async () => { + const client = httpClientMock; + client.post = jest.fn().mockResolvedValue(mockHttpQuery); + client.get = jest.fn().mockResolvedValue(mockDataSelectQuery); + const { getByText } = render( + + ); + + await waitFor(() => { + expect(getByText('db1')).toBeInTheDocument(); + }); + + expect(document.body.children[0]).toMatchSnapshot(); + }); +}); diff --git a/public/components/SQLPage/sql_catalog_tree/__tests__/catalog_s3_loading.test.tsx b/public/components/SQLPage/sql_catalog_tree/__tests__/catalog_s3_loading.test.tsx new file mode 100644 index 0000000..461de1b --- /dev/null +++ b/public/components/SQLPage/sql_catalog_tree/__tests__/catalog_s3_loading.test.tsx @@ -0,0 +1,71 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import { render, waitFor } from '@testing-library/react'; +import React from 'react'; +import { httpClientMock } from '../../../../../test/mocks'; +import { mockDataSelectQuery, mockHttpQuery } from '../../../../../test/mocks/mockData'; +import { CatalogTree } from '../catalog_tree'; + +jest.mock('../../../../dependencies/register_observability_dependencies', () => ({ + getRenderAccelerationDetailsFlyout: jest.fn(() => jest.fn()), + getRenderCreateAccelerationFlyout: jest.fn(() => jest.fn()), + setRenderAccelerationDetailsFlyout: jest.fn(() => jest.fn()), + setRenderCreateAccelerationFlyout: jest.fn(() => jest.fn()), +})); + +jest.mock('../../../../framework/catalog_cache_refs', () => ({ + catalogCacheRefs: { + useLoadDatabasesToCache: jest.fn(() => ({ + loadStatus: '', + startLoading: jest.fn(), + stopLoading: jest.fn(), + })), + useLoadTablesToCache: jest.fn(() => ({ + loadStatus: '', + startLoading: jest.fn(), + stopLoading: jest.fn(), + })), + useLoadTableColumnsToCache: jest.fn(() => ({ + loadStatus: '', + startLoading: jest.fn(), + stopLoading: jest.fn(), + })), + useLoadAccelerationsToCache: jest.fn(() => ({ + loadStatus: '', + startLoading: jest.fn(), + stopLoading: jest.fn(), + })), + CatalogCacheManager: { + getOrCreateDataSource: jest.fn(() => ({ + name: 'my_s3', + lastUpdated: '', + status: '', + databases: [], + })), + }, + }, +})); + +describe('Test Catalog tree', () => { + it('Loading state S3 catalog tree', async () => { + const client = httpClientMock; + client.post = jest.fn().mockResolvedValue(mockHttpQuery); + client.get = jest.fn().mockResolvedValue(mockDataSelectQuery); + const { getByText } = render( + + ); + + await waitFor(() => { + expect(getByText('Loading databases')).toBeInTheDocument(); + }); + + expect(document.body.children[0]).toMatchSnapshot(); + }); +});