import React from 'react'; import { render, screen, cleanup } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { expect } from 'chai'; import { DatabasesList, CollectionsList } from './index'; import Sinon from 'sinon'; function createDatabase(name) { return { _id: name, name: name, status: 'ready' as const, storage_size: 0, data_size: 0, index_count: 0, collectionsLength: 0, }; } function createCollection(name) { return { _id: name, name: name, type: 'collection' as const, status: 'ready' as const, document_count: 0, document_size: 0, avg_document_size: 0, storage_size: 0, free_storage_size: 0, index_count: 0, index_size: 0, properties: [], }; } const dbs = [ createDatabase('foo'), createDatabase('bar'), createDatabase('buz'), ]; const colls = [ createCollection('foo.foo'), createCollection('bar.bar'), createCollection('buz.buz'), ]; describe('databases and collections list', function () { describe('DatabasesList', function () { afterEach(cleanup); it('should render databases in a list', function () { const clickSpy = Sinon.spy(); render( ); expect(screen.getByTestId('database-grid')).to.exist; expect(screen.getAllByTestId('database-grid-item')).to.have.lengthOf(3); expect(screen.getByText('foo')).to.exist; expect(screen.getByText('bar')).to.exist; expect(screen.getByText('buz')).to.exist; userEvent.click(screen.getByText('foo')); expect(clickSpy).to.be.calledWith('foo'); }); }); describe('CollectionsList', function () { afterEach(cleanup); it('should render collections in a list', function () { const clickSpy = Sinon.spy(); render( ); expect(screen.getByTestId('collection-grid')).to.exist; expect(screen.getAllByTestId('collection-grid-item')).to.have.lengthOf(3); expect(screen.getByText('foo.foo')).to.exist; expect(screen.getByText('bar.bar')).to.exist; expect(screen.getByText('buz.buz')).to.exist; userEvent.click(screen.getByText('bar.bar')); expect(clickSpy).to.be.calledWith('bar.bar'); }); }); });