Merge branch 'master' into mcalus3/enable-pending-locations-for-repo-importing
This commit is contained in:
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
|
||||
import { JsonObject } from '@backstage/config';
|
||||
import { EntityName } from '../types';
|
||||
|
||||
/**
|
||||
* The format envelope that's common to all versions/kinds of entity.
|
||||
@@ -42,6 +43,11 @@ export type Entity = {
|
||||
* The specification data describing the entity itself.
|
||||
*/
|
||||
spec?: JsonObject;
|
||||
|
||||
/**
|
||||
* The relations that this entity has with other entities.
|
||||
*/
|
||||
relations?: EntityRelation[];
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -120,3 +126,37 @@ export type EntityMeta = JsonObject & {
|
||||
*/
|
||||
tags?: string[];
|
||||
};
|
||||
|
||||
/**
|
||||
* A relation of a specific type to another entity in the catalog.
|
||||
*/
|
||||
export type EntityRelation = {
|
||||
/**
|
||||
* The type of the relation.
|
||||
*/
|
||||
type: string;
|
||||
|
||||
/**
|
||||
* The target entity of this relation.
|
||||
*/
|
||||
target: EntityName;
|
||||
};
|
||||
|
||||
/**
|
||||
* Holds the relationship data for entities
|
||||
*/
|
||||
export type EntityRelationSpec = {
|
||||
/**
|
||||
* The source entity of this relation.
|
||||
*/
|
||||
source: EntityName;
|
||||
/**
|
||||
* The type of the relation.
|
||||
*/
|
||||
type: string;
|
||||
|
||||
/**
|
||||
* The target entity of this relation.
|
||||
*/
|
||||
target: EntityName;
|
||||
};
|
||||
|
||||
@@ -18,7 +18,12 @@ export {
|
||||
ENTITY_DEFAULT_NAMESPACE,
|
||||
ENTITY_META_GENERATED_FIELDS,
|
||||
} from './constants';
|
||||
export type { Entity, EntityMeta } from './Entity';
|
||||
export type {
|
||||
Entity,
|
||||
EntityMeta,
|
||||
EntityRelation,
|
||||
EntityRelationSpec,
|
||||
} from './Entity';
|
||||
export * from './policies';
|
||||
export {
|
||||
getEntityName,
|
||||
|
||||
@@ -24,7 +24,7 @@ export default {
|
||||
|
||||
export const Default = () => (
|
||||
<Grid container spacing={4}>
|
||||
<Grid item xs={3}>
|
||||
<Grid item xs={12} md={3}>
|
||||
<ItemCard
|
||||
title="Item Card"
|
||||
description="This is the description of an Item Card"
|
||||
@@ -33,7 +33,7 @@ export const Default = () => (
|
||||
onClick={() => {}}
|
||||
/>
|
||||
</Grid>
|
||||
<Grid item xs={3}>
|
||||
<Grid item xs={12} md={3}>
|
||||
<ItemCard
|
||||
title="Item Card"
|
||||
description="This is the description of an Item Card"
|
||||
@@ -47,18 +47,18 @@ export const Default = () => (
|
||||
|
||||
export const Tags = () => (
|
||||
<Grid container spacing={4}>
|
||||
<Grid item xs={3}>
|
||||
<Grid item xs={12} md={3}>
|
||||
<ItemCard
|
||||
title="Item Card"
|
||||
description="This is a Item Card"
|
||||
tags={['one tag', 'two tag']}
|
||||
description="This is the description of an Item Card with Tags"
|
||||
tags={['one tag', 'one tag']}
|
||||
label="Button"
|
||||
/>
|
||||
</Grid>
|
||||
<Grid item xs={3}>
|
||||
<Grid item xs={12} md={3}>
|
||||
<ItemCard
|
||||
title="Item Card"
|
||||
description="This is a Item Card"
|
||||
description="This is the description of an Item Card with Tags"
|
||||
tags={['one tag', 'two tag']}
|
||||
label="Button"
|
||||
/>
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
* Copyright 2020 Spotify AB
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import React from 'react';
|
||||
import { renderInTestApp } from '@backstage/test-utils';
|
||||
import { ItemCard } from './ItemCard';
|
||||
|
||||
const minProps = {
|
||||
description: 'This is the description of an Item Card',
|
||||
label: 'Button',
|
||||
title: 'Item Card',
|
||||
type: 'Pretitle',
|
||||
};
|
||||
|
||||
describe('<InfoCard />', () => {
|
||||
it('renders default without exploding', async () => {
|
||||
const { description, label, title, type } = minProps;
|
||||
const { getByText } = await renderInTestApp(<ItemCard {...minProps} />);
|
||||
expect(getByText(description)).toBeInTheDocument();
|
||||
expect(getByText(title)).toBeInTheDocument();
|
||||
expect(getByText(label)).toBeInTheDocument();
|
||||
expect(getByText(type)).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('renders with tags without exploding', async () => {
|
||||
const { description, label, title } = minProps;
|
||||
const tags = ['tag one', 'tag two'];
|
||||
const { getByText } = await renderInTestApp(
|
||||
<ItemCard {...minProps} tags={tags} />,
|
||||
);
|
||||
expect(getByText(description)).toBeInTheDocument();
|
||||
expect(getByText(title)).toBeInTheDocument();
|
||||
expect(getByText(label)).toBeInTheDocument();
|
||||
tags.forEach(tag => {
|
||||
expect(getByText(tag)).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -61,8 +61,8 @@ export const ItemCard: FC<ItemCardProps> = ({
|
||||
<Typography variant="h6">{title}</Typography>
|
||||
</div>
|
||||
<div className={classes.content}>
|
||||
{tags?.map(tag => (
|
||||
<Chip label={tag} key={tag} />
|
||||
{tags?.map((tag, i) => (
|
||||
<Chip label={tag} key={`tag-${i}`} />
|
||||
))}
|
||||
<Typography variant="body2" paragraph className={classes.description}>
|
||||
{description}
|
||||
|
||||
@@ -118,14 +118,14 @@ const DataGrid = () => (
|
||||
justify="space-between"
|
||||
direction="row"
|
||||
>
|
||||
<Grid item xs={6}>
|
||||
<Grid item xs={12} md={6}>
|
||||
<GaugeCard
|
||||
title="GKE Usage Score"
|
||||
subheader="This should be above 75%"
|
||||
progress={0.87}
|
||||
/>
|
||||
</Grid>
|
||||
<Grid item xs={6}>
|
||||
<Grid item xs={12} md={6}>
|
||||
<GaugeCard
|
||||
title="Deployment Score"
|
||||
subheader="This should be above 40%"
|
||||
@@ -174,7 +174,7 @@ const DataGrid = () => (
|
||||
);
|
||||
|
||||
const ExampleHeader = () => (
|
||||
<Header title="Example" subtitle="This an example plugin">
|
||||
<Header title="Example" subtitle="This is an example plugin">
|
||||
<HeaderLabel label="Owner" value="Owner" />
|
||||
<HeaderLabel label="Lifecycle" value="Lifecycle" />
|
||||
</Header>
|
||||
|
||||
Reference in New Issue
Block a user