-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
test: Add stories for ProjectMetadata component
- Loading branch information
1 parent
4bb1873
commit f7f4ce8
Showing
8 changed files
with
235 additions
and
54 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
28 changes: 28 additions & 0 deletions
28
...tend/src/app/projects/project-detail/project-metadata/project-metadata.docs.mdx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
{/* | ||
SPDX-FileCopyrightText: Copyright DB InfraGO AG and contributors | ||
SPDX-License-Identifier: Apache-2.0 | ||
*/} | ||
|
||
import * as ProjectMetadata from "./project-metadata.stories.ts"; | ||
import {Meta, Title, Story, Canvas} from "@storybook/blocks"; | ||
|
||
<Meta of={ProjectMetadata} /> | ||
|
||
<Title /> | ||
|
||
The Project metadata let's users know about the project name, description and status. | ||
|
||
When it's loaded, the metadata view looks like: | ||
<Story of={ProjectMetadata.Loading}/> | ||
|
||
For example, this is the view for a normal user in the project: | ||
<Story of={ProjectMetadata.NormalUser}/> | ||
|
||
Project leads have the option to modify some settings: | ||
<Story of={ProjectMetadata.ProjectAdmin} /> | ||
|
||
This is how an archived projects looks like: | ||
<Story of={ProjectMetadata.Archived} /> | ||
|
||
If there are linked models in the project, the delete button is disabled: | ||
<Story of={ProjectMetadata.CantDelete} /> |
131 changes: 131 additions & 0 deletions
131
frontend/src/app/projects/project-detail/project-metadata/project-metadata.stories.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,131 @@ | ||
/* | ||
* SPDX-FileCopyrightText: Copyright DB InfraGO AG and contributors | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
import { Meta, moduleMetadata, StoryObj } from '@storybook/angular'; | ||
|
||
import { | ||
ProjectUserRole, | ||
ProjectUserService, | ||
} from 'src/app/projects/project-detail/project-users/service/project-user.service'; | ||
import { Project } from 'src/app/projects/service/project.service'; | ||
import { ProjectMetadataComponent } from './project-metadata.component'; | ||
|
||
class MockProjectUserService implements Partial<ProjectUserService> { | ||
user: ProjectUserRole; | ||
|
||
constructor(user: ProjectUserRole) { | ||
this.user = user; | ||
} | ||
|
||
verifyRole(requiredRole: ProjectUserRole): boolean { | ||
const roles = ['user', 'manager', 'administrator']; | ||
return roles.indexOf(requiredRole) <= roles.indexOf(this.user); | ||
} | ||
} | ||
|
||
const meta: Meta<ProjectMetadataComponent> = { | ||
title: 'Project Components / Project Metadata', | ||
component: ProjectMetadataComponent, | ||
}; | ||
|
||
export default meta; | ||
type Story = StoryObj<ProjectMetadataComponent>; | ||
|
||
const project: Project = { | ||
name: 'test', | ||
description: 'test', | ||
type: 'general', | ||
visibility: 'internal', | ||
is_archived: false, | ||
slug: 'test', | ||
users: { | ||
leads: 1, | ||
contributors: 1, | ||
subscribers: 1, | ||
}, | ||
}; | ||
|
||
export const Loading: Story = { | ||
args: { | ||
project: undefined, | ||
}, | ||
decorators: [ | ||
moduleMetadata({ | ||
providers: [ | ||
{ | ||
provide: ProjectUserService, | ||
useFactory: () => new MockProjectUserService('user'), | ||
}, | ||
], | ||
}), | ||
], | ||
}; | ||
|
||
export const NormalUser: Story = { | ||
args: { | ||
project: project, | ||
}, | ||
decorators: [ | ||
moduleMetadata({ | ||
providers: [ | ||
{ | ||
provide: ProjectUserService, | ||
useFactory: () => new MockProjectUserService('user'), | ||
}, | ||
], | ||
}), | ||
], | ||
}; | ||
|
||
export const ProjectAdmin: Story = { | ||
args: { | ||
project: project, | ||
canDelete: true, | ||
}, | ||
decorators: [ | ||
moduleMetadata({ | ||
providers: [ | ||
{ | ||
provide: ProjectUserService, | ||
useFactory: () => new MockProjectUserService('manager'), | ||
}, | ||
], | ||
}), | ||
], | ||
}; | ||
|
||
export const Archived: Story = { | ||
args: { | ||
project: { ...project, is_archived: true }, | ||
canDelete: true, | ||
}, | ||
decorators: [ | ||
moduleMetadata({ | ||
providers: [ | ||
{ | ||
provide: ProjectUserService, | ||
useFactory: () => new MockProjectUserService('manager'), | ||
}, | ||
], | ||
}), | ||
], | ||
}; | ||
|
||
export const CantDelete: Story = { | ||
args: { | ||
project: project, | ||
canDelete: false, | ||
}, | ||
decorators: [ | ||
moduleMetadata({ | ||
providers: [ | ||
{ | ||
provide: ProjectUserService, | ||
useFactory: () => new MockProjectUserService('manager'), | ||
}, | ||
], | ||
}), | ||
], | ||
}; |