Skip to content
This repository has been archived by the owner on Apr 28, 2020. It is now read-only.

Commit

Permalink
Add deleted template test to vmTemplateDetails
Browse files Browse the repository at this point in the history
  • Loading branch information
yaacov committed Apr 1, 2019
1 parent 81eeae6 commit 43c9da8
Show file tree
Hide file tree
Showing 6 changed files with 207 additions and 5 deletions.
3 changes: 2 additions & 1 deletion src/components/Details/VmDetails/VmDetails.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import {
getNodeName,
getOperatingSystem,
getVmTemplate,
getTemplateDisplayName,
getWorkloadProfile,
getVmiIpAddresses,
getOperatingSystemName,
Expand Down Expand Up @@ -216,7 +217,7 @@ export class VmDetails extends React.Component {
);
};
const templateLink = () =>
TemplateResourceLink ? <TemplateResourceLink template={template} /> : `${template.namespace}/${template.name}`;
TemplateResourceLink ? <TemplateResourceLink template={template} /> : getTemplateDisplayName(template);

return (
<Fragment>
Expand Down
7 changes: 3 additions & 4 deletions src/components/Details/VmTemplateDetails/VmTemplateDetails.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import {
getOperatingSystemName,
getFlavor,
getVmTemplate,
getTemplateDisplayName,
getId,
} from '../../../selectors';
import {
Expand Down Expand Up @@ -145,7 +146,7 @@ export class VmTemplateDetails extends React.Component {
const { vmTemplate, dataVolumes, NamespaceResourceLink, LoadingComponent } = this.props;
const id = getId(vmTemplate);
const vm = selectVm(vmTemplate.objects);
const baseTemplateLabels = getVmTemplate(vmTemplate);
const baseTemplateLabels = getTemplateDisplayName(getVmTemplate(vmTemplate));
const sortedBootableDevices = getBootableDevicesInOrder(vm);

const editButton = (
Expand Down Expand Up @@ -218,9 +219,7 @@ export class VmTemplateDetails extends React.Component {
? titleWithWarning('template', 'Base Template', 'This template is no longer available.')
: 'Base Template'}
</dt>
<dd id={prefixedId(id, 'base-template')}>
{baseTemplateLabels ? `${baseTemplateLabels.namespace}/${baseTemplateLabels.name}` : DASHES}
</dd>
<dd id={prefixedId(id, 'base-template')}>{baseTemplateLabels}</dd>
</dl>
</Col>

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,17 @@
import { LABEL_USED_TEMPLATE_NAME } from '../../../../constants';
import { VmTemplateDetails } from '../VmTemplateDetails';
import { containerCloudTemplate, urlCustomFlavorTemplate } from '../../../../tests/mocks/user_template';
import { k8sPatch, k8sGet } from '../../../../tests/k8s';

const containerCloudDeletedTemplate = {
...containerCloudTemplate,
metadata: {
labels: {
[LABEL_USED_TEMPLATE_NAME]: 'deleted-template',
},
},
};

export default [
{
component: VmTemplateDetails,
Expand All @@ -23,4 +33,14 @@ export default [
k8sGet,
},
},
{
component: VmTemplateDetails,
name: 'Container VM Template with deleted base template',
props: {
vmTemplate: containerCloudDeletedTemplate,
NamespaceResourceLink: () => containerCloudDeletedTemplate.metadata.namespace,
k8sPatch,
k8sGet,
},
},
];
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,16 @@ const testVmTemplateDetails = (vmTemplate, props, dataVolumes = []) => (
/>
);

const testVmDeletedTemplateDetails = (vmTemplate, props, dataVolumes = []) => (
<VmTemplateDetails
{...VmTemplateDetailsFixture[2].props}
vmTemplate={vmTemplate}
dataVolumes={dataVolumes}
NamespaceResourceLink={() => vmTemplate.metadata.namespace}
{...props}
/>
);

describe('<VmTemplateDetails />', () => {
it('renders container correctly', () => {
const component = render(testVmTemplateDetails(containerCloudTemplate));
Expand All @@ -39,6 +49,11 @@ describe('<VmTemplateDetails />', () => {
const component = render(testVmTemplateDetails(pxeDataVolumeTemplate));
expect(component).toMatchSnapshot();
});

it('renders container with deleted template correctly', () => {
const component = render(testVmDeletedTemplateDetails(containerCloudTemplate));
expect(component).toMatchSnapshot();
});
});

describe('<VmTemplateDetails /> enzyme', () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,171 @@ exports[`<VmTemplateDetails /> renders container correctly 1`] = `
</div>
`;

exports[`<VmTemplateDetails /> renders container with deleted template correctly 1`] = `
<div
class="co-m-pane__body"
>
<h1
class="co-m-pane__heading"
>
Virtual Machine Template Overview
<div>
<button
class="btn btn-default"
type="button"
>
Edit
</button>
</div>
</h1>
<div
class="row"
>
<div
class="col-lg-4 col-md-4 col-sm-4 col-xs-4"
id="name-description-column"
>
<dl>
<dt>
Name
</dt>
<dd
id="myproject-container-template-cloud-init-name"
>
container-template-cloud-init
</dd>
<dt>
Description
</dt>
<dd>
<div
class="kubevirt-vm-template-details__description"
>
<div
id="myproject-container-template-cloud-init-description"
>
---
</div>
</div>
</dd>
</dl>
</div>
<div
class="col-lg-8 col-md-8 col-sm-8 col-xs-8"
id="details-column"
>
<div
class="row"
>
<div
class="col-lg-4 col-md-4 col-sm-4 col-xs-4"
id="details-column-1"
>
<dl>
<dt>
Operating System
</dt>
<dd
id="myproject-container-template-cloud-init-os"
>
Fedora 29
</dd>
<dt>
Workload Profile
</dt>
<dd
id="myproject-container-template-cloud-init-workload-profile"
>
generic
</dd>
<dt>
Base Template
</dt>
<dd
id="myproject-container-template-cloud-init-base-template"
>
default/fedora-generic
</dd>
</dl>
</div>
<div
class="col-lg-4 col-md-4 col-sm-4 col-xs-4"
id="details-column-2"
>
<dl>
<dt>
Source
</dt>
<dd>
<div
class=""
id="myproject-container-template-cloud-init-type"
title="fooContainer"
>
Container
</div>
<div
class="kubevirt-template-source__source"
id="myproject-container-template-cloud-init-source"
>
fooContainer
</div>
</dd>
<dt>
Namespace
</dt>
<dd
id="myproject-container-template-cloud-init-namespace"
>
myproject
</dd>
<dd>
myproject
</dd>
<dt>
Boot Order
</dt>
<dd>
<ol
class="kubevirt-boot-order__list"
>
<li>
rootdisk
</li>
</ol>
</dd>
</dl>
</div>
<div
class="col-lg-4 col-md-4 col-sm-4 col-xs-4"
id="details-column-3"
>
<dl>
<dt>
Flavor
</dt>
<dd>
<div>
<div
id="myproject-container-template-cloud-init-flavor"
>
small
</div>
<div
id="myproject-container-template-cloud-init-flavor-description"
>
2 CPU, 2G Memory
</div>
</div>
</dd>
</dl>
</div>
</div>
</div>
</div>
</div>
`;

exports[`<VmTemplateDetails /> renders pxe correctly 1`] = `
<div
class="co-m-pane__body"
Expand Down
2 changes: 2 additions & 0 deletions src/selectors/vm/selectors.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import {
TEMPLATE_WORKLOAD_LABEL,
OS_WINDOWS_PREFIX,
TEMPLATE_OS_NAME_ANNOTATION,
DASHES,
} from '../../constants';

export const getDisks = vm => get(vm, 'spec.template.spec.domain.devices.disks', []);
Expand All @@ -35,6 +36,7 @@ export const getVmTemplate = vm => {
}
return null;
};
export const getTemplateDisplayName = template => (template ? `${template.namespace}/${template.name}` : DASHES);
export const getDescription = vm => get(vm, 'metadata.annotations.description');
export const getCloudInitVolume = vm => {
const volumes = getVolumes(vm);
Expand Down

0 comments on commit 43c9da8

Please sign in to comment.