import { mock } from 'angular'; import type { ShallowWrapper } from 'enzyme'; import { shallow } from 'enzyme'; import React from 'react'; import type { IArtifactProps } from './Artifact'; import { Artifact } from './Artifact'; import type { IArtifact } from '../../domain'; import { REACT_MODULE } from '../../reactShims'; const ARTIFACT_TYPE = 'docker/image'; const ARTIFACT_NAME = 'example.com/container'; const ARTIFACT_REFERENCE = 'docker.io/example.com/container:latest'; describe('', () => { let component: ShallowWrapper; beforeEach(mock.module(REACT_MODULE)); beforeEach(mock.inject(() => {})); // Angular is lazy. it("renders an artifact's name", function () { const artifact: IArtifact = { id: 'abcd', type: ARTIFACT_TYPE, name: ARTIFACT_NAME, }; component = shallow(); const artifactName = component.find('.artifact-name'); expect(artifactName.length).toEqual(1); expect(artifactName.text()).toEqual(ARTIFACT_NAME); }); it('renders an artifact version if present', function () { const version = 'v001'; const artifact: IArtifact = { id: 'abcd', type: ARTIFACT_TYPE, name: ARTIFACT_NAME, version, }; component = shallow(); const artifactVersion = component.find('.artifact-version'); expect(artifactVersion.length).toEqual(1); expect(artifactVersion.text()).toEqual(` - ${version}`); }); it('includes the artifact reference in the tootip', function () { const artifact: IArtifact = { id: 'abcd', type: ARTIFACT_TYPE, name: ARTIFACT_NAME, reference: ARTIFACT_REFERENCE, }; component = shallow(); const dl = component.find('dl'); expect(dl.length).toEqual(1); const title = dl.at(0).prop('title'); expect(title).toMatch('Reference: ' + ARTIFACT_REFERENCE); }); it('does not include a reference in the tooltip if none is specified', function () { const artifact: IArtifact = { id: 'abcd', type: ARTIFACT_TYPE, name: ARTIFACT_NAME, }; component = shallow(); const dl = component.find('dl'); expect(dl.length).toEqual(1); const title = dl.at(0).prop('title'); expect(title).not.toMatch('Reference: '); }); });