diff --git a/packages/studio-ui-codegen-react/lib/__tests__/__snapshots__/studio-ui-codegen-react.test.ts.snap b/packages/studio-ui-codegen-react/lib/__tests__/__snapshots__/studio-ui-codegen-react.test.ts.snap index ebec67887..fd3bc7388 100644 --- a/packages/studio-ui-codegen-react/lib/__tests__/__snapshots__/studio-ui-codegen-react.test.ts.snap +++ b/packages/studio-ui-codegen-react/lib/__tests__/__snapshots__/studio-ui-codegen-react.test.ts.snap @@ -1102,6 +1102,56 @@ export default function BoundDefaultValue( } `; +exports[`amplify render tests default value should render collection default value 1`] = ` +Object { + "componentText": "/* eslint-disable */ +import React from \\"react\\"; +import { + Collection, + CollectionProps, + EscapeHatchProps, + Text, + TextProps, + getOverrideProps, + useDataStoreBinding, +} from \\"@aws-amplify/ui-react\\"; +import { User } from \\"../models\\"; + +export type CollectionDefaultValueProps = Partial> & { + overrides?: EscapeHatchProps | undefined | null; +}; +export default function CollectionDefaultValue( + props: CollectionDefaultValueProps +): React.ReactElement { + const { items, overrides: overridesProp, ...rest } = props; + const overrides = { ...overridesProp }; + const user = + items !== undefined + ? items + : useDataStoreBinding({ + type: \\"collection\\", + model: User, + }).items; + return ( + + {(item, index) => ( + + {item.username || \\"Collection Default Value\\"} + + )} + + ); +} +", + "declaration": undefined, + "renderComponentToFilesystem": [Function], +} +`; + exports[`amplify render tests default value should render simple and bound default value 1`] = ` Object { "componentText": "/* eslint-disable */ diff --git a/packages/studio-ui-codegen-react/lib/__tests__/studio-ui-codegen-react.test.ts b/packages/studio-ui-codegen-react/lib/__tests__/studio-ui-codegen-react.test.ts index bd1ba6ba8..1b873fea3 100644 --- a/packages/studio-ui-codegen-react/lib/__tests__/studio-ui-codegen-react.test.ts +++ b/packages/studio-ui-codegen-react/lib/__tests__/studio-ui-codegen-react.test.ts @@ -258,5 +258,9 @@ describe('amplify render tests', () => { generateWithAmplifyRenderer('default-value-components/simplePropertyBindingDefaultValue'), ).toMatchSnapshot(); }); + + it('should render collection default value', () => { + expect(generateWithAmplifyRenderer('default-value-components/collectionDefaultValue')).toMatchSnapshot(); + }); }); }); diff --git a/packages/studio-ui-codegen-react/lib/__tests__/studio-ui-json/default-value-components/collectionDefaultValue.json b/packages/studio-ui-codegen-react/lib/__tests__/studio-ui-json/default-value-components/collectionDefaultValue.json new file mode 100644 index 000000000..29da4a03a --- /dev/null +++ b/packages/studio-ui-codegen-react/lib/__tests__/studio-ui-json/default-value-components/collectionDefaultValue.json @@ -0,0 +1,25 @@ +{ + "id": "1234-5678-9010", + "componentType": "Collection", + "name": "CollectionDefaultValue", + "properties": {}, + "collectionProperties": { + "user": { + "model": "User" + } + }, + "children": [ + { + "componentType": "Text", + "properties": { + "value": { + "collectionBindingProperties": { + "property": "user", + "field": "username" + }, + "defaultValue": "Collection Default Value" + } + } + } + ] +} diff --git a/packages/test-generator/integration-test-templates/cypress/integration/generated-components-spec.js b/packages/test-generator/integration-test-templates/cypress/integration/generated-components-spec.js index f2d570742..69e8808a4 100644 --- a/packages/test-generator/integration-test-templates/cypress/integration/generated-components-spec.js +++ b/packages/test-generator/integration-test-templates/cypress/integration/generated-components-spec.js @@ -188,6 +188,26 @@ describe('Generated Components', () => { expect(text.trim()).equal('Override Simple And Bound'); }); }); + + it('Renders collection default value', () => { + cy.get('#default-value') + .get('#collection-default') + .find('.amplify-text') + .invoke('text') + .then((text) => { + expect(text.trim()).equal('Collection Default'); + }); + }); + + it('Overrides collection default value', () => { + cy.get('#default-value') + .get('#collection-override') + .find('.amplify-text') + .invoke('text') + .then((text) => { + expect(text.trim()).equal('Override Collection'); + }); + }); }); }); diff --git a/packages/test-generator/integration-test-templates/src/ComponentTests.tsx b/packages/test-generator/integration-test-templates/src/ComponentTests.tsx index 540567d08..492c9487e 100644 --- a/packages/test-generator/integration-test-templates/src/ComponentTests.tsx +++ b/packages/test-generator/integration-test-templates/src/ComponentTests.tsx @@ -35,6 +35,7 @@ import ComponentWithVariant from './ui-components/ComponentWithVariant'; import SimplePropertyBindingDefaultValue from './ui-components/SimplePropertyBindingDefaultValue'; import BoundDefaultValue from './ui-components/BoundDefaultValue'; import SimpleAndBoundDefaultValue from './ui-components/SimpleAndBoundDefaultValue'; +import CollectionDefaultValue from './ui-components/CollectionDefaultValue'; import theme from './ui-components/MyTheme'; import ComponentWithSimplePropertyBinding from './ui-components/ComponentWithSimplePropertyBinding'; import ComponentWithDataBindingWithoutPredicate from './ui-components/ComponentWithDataBindingWithoutPredicate'; @@ -173,6 +174,8 @@ export default function ComponentTests() { + + ); diff --git a/packages/test-generator/lib/components/default-value-components/collectionDefaultValue.json b/packages/test-generator/lib/components/default-value-components/collectionDefaultValue.json new file mode 100644 index 000000000..06843d31e --- /dev/null +++ b/packages/test-generator/lib/components/default-value-components/collectionDefaultValue.json @@ -0,0 +1,29 @@ +{ + "id": "1234-5678-9010", + "componentType": "Collection", + "name": "CollectionDefaultValue", + "properties": { + "type": { + "value": "list" + } + }, + "collectionProperties": { + "user": { + "model": "User" + } + }, + "children": [ + { + "componentType": "Text", + "properties": { + "value": { + "collectionBindingProperties": { + "property": "user", + "field": "username" + }, + "defaultValue": "Collection Default" + } + } + } + ] +} diff --git a/packages/test-generator/lib/components/default-value-components/index.js b/packages/test-generator/lib/components/default-value-components/index.js index 760186b17..6c460e9cf 100644 --- a/packages/test-generator/lib/components/default-value-components/index.js +++ b/packages/test-generator/lib/components/default-value-components/index.js @@ -16,3 +16,4 @@ export { default as BoundDefaultValue } from './boundDefaultValue.json'; export { default as SimplePropertyBindingDefaultValue } from './simplePropertyBindingDefaultValue.json'; export { default as SimpleAndBouldDefaultValue } from './simpleAndBoundDefaultValue.json'; +export { default as CollectionDefaultValue } from './collectionDefaultValue.json';