diff --git a/packages/core/src/renderer/components/+helm-charts/__tests__/icon.test.tsx b/packages/core/src/renderer/components/+helm-charts/__tests__/icon.test.tsx new file mode 100644 index 0000000000..2339aba3d7 --- /dev/null +++ b/packages/core/src/renderer/components/+helm-charts/__tests__/icon.test.tsx @@ -0,0 +1,56 @@ +import React from 'react'; +import { render, screen } from '@testing-library/react'; +import { HelmChartIcon } from '../icon'; + +const mainImageSrc = 'https://example.com/main-picture.jpg'; +const mainPngImageSrc = 'https://example.com/main-picture.png'; +const invalidImageSrc = 'file://invalid-image-url.png'; +const svgImageSrc = 'https://example.com/main-picture.svg'; + +describe('HelmChartIcon', () => { + it('renders the placeholder image by default', () => { + render(); + const imageContainer = screen.getByTestId('image-container'); + expect(imageContainer.style.backgroundImage).toContain("data:image/svg+xml"); + }); + + it("renders img tag when image url is valid", () => { + render(); + const mainImage = screen.getByRole('img'); + expect(mainImage).toBeInTheDocument(); + }); + + it("renders jpg image when its loaded", () => { + render(); + + const imageContainer = screen.getByTestId('image-container'); + const mainImage = screen.getByRole('img'); + + mainImage.dispatchEvent(new Event('load')); + expect(imageContainer.style.backgroundImage).toBe('url(https://example.com/main-picture.jpg)'); + }) + + it("renders png image when its loaded", () => { + render(); + + const imageContainer = screen.getByTestId('image-container'); + const mainImage = screen.getByRole('img'); + + mainImage.dispatchEvent(new Event('load')); + expect(imageContainer.style.backgroundImage).toBe('url(https://example.com/main-picture.png)'); + }) + + it("does not render invalid image url", () => { + render(); + + const mainImage = screen.queryByRole('img'); + expect(mainImage).not.toBeInTheDocument(); + }) + + it("does not render svg image", () => { + render(); + + const mainImage = screen.queryByRole('img'); + expect(mainImage).not.toBeInTheDocument(); + }) +});