import { mock } from 'angular';
import type { ShallowWrapper } from 'enzyme';
import { shallow } from 'enzyme';
import React from 'react';
import { Artifact } from './Artifact';
import type { IResolvedArtifactListProps } from './ResolvedArtifactList';
import { ResolvedArtifactList } from './ResolvedArtifactList';
import type { IArtifact, IExpectedArtifact } from '../../domain';
import { REACT_MODULE } from '../../reactShims';
const ARTIFACT_TYPE = 'docker/image';
const ARTIFACT_NAME = 'example.com/container';
describe('', () => {
let component: ShallowWrapper;
beforeEach(mock.module(REACT_MODULE));
beforeEach(mock.inject(() => {})); // Angular is lazy.
it('renders null when null artifacts are passed in', function () {
const artifacts: IArtifact[] = null;
component = shallow();
expect(component.get(0)).toEqual(null);
});
it('renders null when 0 artifacts are passed in', function () {
const artifacts: IArtifact[] = [];
const resolvedExpectedArtifacts = artifacts.map((a) => ({ boundArtifact: a } as IExpectedArtifact));
component = shallow(
,
);
expect(component.get(0)).toEqual(null);
});
it('renders null when artifacts are set to not expanded', () => {
const artifacts: IArtifact[] = [
{
id: 'abcd',
type: ARTIFACT_TYPE,
name: ARTIFACT_NAME,
},
];
const resolvedExpectedArtifacts = artifacts.map((a) => ({ boundArtifact: a } as IExpectedArtifact));
component = shallow(
,
);
expect(component.get(0)).toEqual(null);
});
it('renders two columns when columnLayoutAfter is set to 2', function () {
const artifacts: IArtifact[] = [
{
id: 'abcd',
type: ARTIFACT_TYPE,
name: ARTIFACT_NAME,
},
{
id: 'efgh',
type: ARTIFACT_TYPE,
name: ARTIFACT_NAME,
},
];
const resolvedExpectedArtifacts = artifacts.map((a) => ({ boundArtifact: a } as IExpectedArtifact));
component = shallow(
,
);
expect(component.find('.artifact-list-column').length).toEqual(2);
expect(component.find(Artifact).length).toEqual(2);
});
it('does not render an artifact without a type and name', function () {
const singleArtifact: IArtifact[] = [
{
id: 'abcd',
},
];
const resolvedExpectedArtifacts = singleArtifact.map((a) => ({ boundArtifact: a } as IExpectedArtifact));
component = shallow(
,
);
expect(component.get(0)).toEqual(null);
});
it('only renders an artifacts that has a type and name', function () {
const artifacts: IArtifact[] = [
{
id: 'abcd',
},
{
id: 'abcd2',
type: ARTIFACT_TYPE,
name: ARTIFACT_NAME,
},
];
const resolvedExpectedArtifacts = artifacts.map((a) => ({ boundArtifact: a } as IExpectedArtifact));
component = shallow(
,
);
expect(component.find(Artifact).length).toEqual(1);
});
it('does not render artifacts for which there is no expected artifact in the pipeline', function () {
const artifacts: IArtifact[] = [
{
id: 'abcd',
type: ARTIFACT_TYPE,
name: ARTIFACT_NAME,
},
];
component = shallow();
const li = component.find('.extraneous-artifacts');
expect(li.text()).toMatch(/1.*artifact.*not.*consumed/);
});
});