AppStorePage.test.tsx 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import React from 'react';
  2. import { render, screen, waitFor } from '../../../../../../tests/test-utils';
  3. import { getTRPCMock, getTRPCMockError } from '../../../../mocks/getTrpcMock';
  4. import { server } from '../../../../mocks/server';
  5. import { AppStorePage } from './AppStorePage';
  6. describe('Test: AppStorePage', () => {
  7. it('should render error state when error occurs', async () => {
  8. // Arrange
  9. server.use(getTRPCMockError({ path: ['app', 'listApps'], message: 'test error' }));
  10. render(<AppStorePage />);
  11. // Assert
  12. await waitFor(() => {
  13. expect(screen.getByText('An error occured')).toBeInTheDocument();
  14. });
  15. expect(screen.getByText('test error')).toBeInTheDocument();
  16. });
  17. it('should render', async () => {
  18. // Arrange
  19. render(<AppStorePage />);
  20. expect(screen.getByTestId('app-store-layout')).toBeInTheDocument();
  21. });
  22. it('should render app store table', async () => {
  23. // Arrange
  24. render(<AppStorePage />);
  25. expect(screen.getByTestId('app-store-layout')).toBeInTheDocument();
  26. // Assert
  27. await waitFor(() => {
  28. expect(screen.getByTestId('app-store-table')).toBeInTheDocument();
  29. });
  30. });
  31. it('should render app store table loading when data is not here', async () => {
  32. // Arrange
  33. render(<AppStorePage />);
  34. expect(screen.getByTestId('app-store-layout')).toBeInTheDocument();
  35. // Assert
  36. await waitFor(() => {
  37. expect(screen.getByTestId('app-store-table-loading')).toBeInTheDocument();
  38. });
  39. });
  40. it('should render empty state when no apps are available', async () => {
  41. // Arrange
  42. server.use(getTRPCMock({ path: ['app', 'listApps'], response: { apps: [], total: 0 } }));
  43. render(<AppStorePage />);
  44. // Assert
  45. await waitFor(() => {
  46. expect(screen.getByText('No app found')).toBeInTheDocument();
  47. });
  48. });
  49. });