// Pink is not in the test vocab
{IDTAGCOLORS: ['IDVALCOLORS3', 'Pink', 'IDVALCOLORS1']});
});
+
+ // Open project edit via breadcrumbs
+ cy.get('[data-cy=breadcrumbs]').contains(projName).rightclick();
+ cy.get('[data-cy=context-menu]').contains('Edit').click();
+ cy.get('[data-cy=form-dialog]').within(() => {
+ cy.get('[data-cy=resource-properties-list]').within(() => {
+ cy.get('div[role=button]').contains('Color: Magenta');
+ cy.get('div[role=button]').contains('Color: Pink');
+ cy.get('div[role=button]').contains('Color: Yellow');
+ });
+ });
+ // Add another property
+ cy.get('[data-cy=resource-properties-form]').within(() => {
+ cy.get('[data-cy=property-field-key]').within(() => {
+ cy.get('input').type('Animal');
+ });
+ cy.get('[data-cy=property-field-value]').within(() => {
+ cy.get('input').type('Dog');
+ });
+ cy.root().submit();
+ });
+ cy.get('[data-cy=form-submit-btn]').click();
+ // Reopen edit via breadcrumbs and verify properties
+ cy.get('[data-cy=breadcrumbs]').contains(projName).rightclick();
+ cy.get('[data-cy=context-menu]').contains('Edit').click();
+ cy.get('[data-cy=form-dialog]').within(() => {
+ cy.get('[data-cy=resource-properties-list]').within(() => {
+ cy.get('div[role=button]').contains('Color: Magenta');
+ cy.get('div[role=button]').contains('Color: Pink');
+ cy.get('div[role=button]').contains('Color: Yellow');
+ cy.get('div[role=button]').contains('Animal: Dog');
+ });
+ });
});
it('creates new project on home project and then a subproject inside it', function() {
import { GroupClass } from "models/group";
import { Participant } from "views-components/sharing-dialog/participant-select";
import { ProjectProperties } from "./project-create-actions";
+import { getResource } from "store/resources/resources";
+import { ProjectResource } from "models/project";
export interface ProjectUpdateFormDialogData {
uuid: string;
export const openProjectUpdateDialog = (resource: ProjectUpdateFormDialogData) =>
(dispatch: Dispatch, getState: () => RootState) => {
- dispatch(initialize(PROJECT_UPDATE_FORM_NAME, resource));
+ // Get complete project resource from store to handle consumers passing in partial resources
+ const project = getResource<ProjectResource>(resource.uuid)(getState().resources);
+ dispatch(initialize(PROJECT_UPDATE_FORM_NAME, project));
dispatch(dialogActions.OPEN_DIALOG({
id: PROJECT_UPDATE_FORM_NAME,
data: {
const List = withStyles(styles)(
({ classes, handleDelete, properties }: ResourcePropertiesListProps) =>
- <div>
+ <div data-cy="resource-properties-list">
{properties &&
Object.keys(properties).map(k =>
Array.isArray(properties[k])
(dispatch: Dispatch): ResourcePropertiesListActionProps => ({
handleDelete: (key: string, value: string) => dispatch<any>(removePropertyFromResourceForm(key, value, formName))
})
- )(List);
\ No newline at end of file
+ )(List);