diff --git a/packages/core/test/configuration_test.js b/packages/core/test/configuration_test.js index bcbadd8d..a73ab11d 100644 --- a/packages/core/test/configuration_test.js +++ b/packages/core/test/configuration_test.js @@ -49,9 +49,10 @@ describe('Configuration', () => { it('should resolve components source paths as array', async () => { const config = await Configuration.read(opts) - assert.strictEqual(config.source.components.length, 2) + assert.strictEqual(config.source.components.length, 3) assert.strictEqual(config.source.components[0], resolve(testProjectPath, 'src', 'elements')) assert.strictEqual(config.source.components[1], resolve(testProjectPath, 'src', 'modules')) + assert.strictEqual(config.source.components[2], resolve(testProjectPath, 'src', 'examples')) }) it('should resolve components source paths as array if string is given', async () => { diff --git a/packages/core/test/page_test.js b/packages/core/test/page_test.js index 6072dc4c..2a45b656 100644 --- a/packages/core/test/page_test.js +++ b/packages/core/test/page_test.js @@ -72,12 +72,13 @@ describe('Page', () => { it('should infer childIds if they are not provided', async () => { const data = await Page.fetchById(state, 'testcases') - assert.strictEqual(data.childIds.length, 5, `Actual children:\n\n${data.childIds.join('\n')}`) + assert.strictEqual(data.childIds.length, 6, `Actual children:\n\n${data.childIds.join('\n')}`) assertItem(data.childIds, 'testcases/custom-data') assertItem(data.childIds, 'testcases/custom-path') assertItem(data.childIds, 'testcases/custom-fragment') assertItem(data.childIds, 'testcases/custom-fragment-and-template') assertItem(data.childIds, 'testcases/custom-template') + assertItem(data.childIds, 'testcases/examples') }) it('should infer childIds for index if they are not provided', async () => { @@ -221,7 +222,7 @@ describe('Page', () => { const data = await Page.fetchAll(state) const pageIds = Object.keys(data) - assert.strictEqual(pageIds.length, 23) + assert.strictEqual(pageIds.length, 24) assertItem(pageIds, 'index') assertItem(pageIds, 'documentation') @@ -246,6 +247,7 @@ describe('Page', () => { assertItem(pageIds, 'testcases/custom-fragment') assertItem(pageIds, 'testcases/custom-fragment-and-template') assertItem(pageIds, 'testcases/custom-template') + assertItem(pageIds, 'testcases/examples') }) }) }) diff --git a/test/acceptance/integration/navigation.spec.js b/test/acceptance/integration/navigation.spec.js index aa355e04..c7d8b53c 100644 --- a/test/acceptance/integration/navigation.spec.js +++ b/test/acceptance/integration/navigation.spec.js @@ -42,14 +42,15 @@ context('Navigation', () => { }) it('should display initially collapsed pages', () => { - cy.get('[data-test-navtree-id="patterns/organisms"]').should('not.be.visible') - cy.get('[data-test-navitem-id="patterns/organisms"] > button').click() - cy.get('[data-test-navtree-id="patterns/organisms"]').should('be.visible') + cy.get('[data-test-navtree-id="testcases/examples"]').should('not.be.visible') + cy.get('[data-test-navitem-id="testcases/examples"] > button').click() + cy.get('[data-test-navtree-id="testcases/examples"]').should('be.visible') cy.reload() - cy.get('[data-test-navtree-id="patterns/organisms"]').should('be.visible') - cy.get('[data-test-navitem-id="patterns/organisms"] > button').click() - cy.get('[data-test-navtree-id="patterns/organisms"]').should('not.be.visible') + + cy.get('[data-test-navtree-id="testcases/examples"]').should('be.visible') + cy.get('[data-test-navitem-id="testcases/examples"] > button').click() + cy.get('[data-test-navtree-id="testcases/examples"]').should('not.be.visible') }) it('should be toggleable', () => { diff --git a/test/project/lib/react-client-render.js b/test/project/lib/react-client-render.js index a9a1583a..1c5acc02 100644 --- a/test/project/lib/react-client-render.js +++ b/test/project/lib/react-client-render.js @@ -1,9 +1,9 @@ +// eslint-disable-next-line no-unused-vars import React from 'react' -import ReactDOM from 'react-dom' +import { hydrate } from 'react-dom' -export default function clientRender (Component, props) { - ReactDOM.hydrate( - React.createElement(Component, props), +export default (Component, props) => + hydrate( + , document.querySelector('#app') ) -} diff --git a/test/project/lib/react-server-render.js b/test/project/lib/react-server-render.js index 633e87d4..28d9142f 100644 --- a/test/project/lib/react-server-render.js +++ b/test/project/lib/react-server-render.js @@ -1,5 +1,6 @@ +// eslint-disable-next-line no-unused-vars +const React = require('react') const { renderToString } = require('react-dom/server') -module.exports = function serverRender (Component, props) { - return renderToString(Component(props)) -} +module.exports = (Component, props) => + renderToString() diff --git a/test/project/src/examples/ReactContext/ReactContext.jsx b/test/project/src/examples/ReactContext/ReactContext.jsx new file mode 100644 index 00000000..4d679ce9 --- /dev/null +++ b/test/project/src/examples/ReactContext/ReactContext.jsx @@ -0,0 +1,10 @@ +import React from 'react' +import ThemeContext, { ThemeProvider } from './ThemeContext' + +export default () => ( + + + {context => (

Context: {context}

)} +
+
+) diff --git a/test/project/src/examples/ReactContext/ThemeContext.js b/test/project/src/examples/ReactContext/ThemeContext.js new file mode 100644 index 00000000..26f781bc --- /dev/null +++ b/test/project/src/examples/ReactContext/ThemeContext.js @@ -0,0 +1,17 @@ +import React, { Component } from 'react' + +const ThemeContext = React.createContext('light') + +export class ThemeProvider extends Component { + render () { + const { children, value = 'dark' } = this.props + + return ( + + {children} + + ) + } +} + +export default ThemeContext diff --git a/test/project/src/examples/ReactContext/component.config.js b/test/project/src/examples/ReactContext/component.config.js new file mode 100644 index 00000000..2213321e --- /dev/null +++ b/test/project/src/examples/ReactContext/component.config.js @@ -0,0 +1,3 @@ +module.exports = { + title: 'React Context' +} diff --git a/test/project/src/examples/ReactContext/variants/ReactContext.jsx b/test/project/src/examples/ReactContext/variants/ReactContext.jsx new file mode 100644 index 00000000..3348d64e --- /dev/null +++ b/test/project/src/examples/ReactContext/variants/ReactContext.jsx @@ -0,0 +1,4 @@ +import React from 'react' +import ReactContext from '../ReactContext.jsx' + +export default props => diff --git a/test/project/uiengine.config.js b/test/project/uiengine.config.js index 1b680bd0..c9cf0977 100644 --- a/test/project/uiengine.config.js +++ b/test/project/uiengine.config.js @@ -24,7 +24,7 @@ module.exports = { // - templates contains the variant preview and application templates // - pages is the directory of the UIengine's site structure and page markdown files source: { - components: ['./src/elements', './src/modules'], + components: ['./src/elements', './src/modules', './src/examples'], templates: './src/templates', pages: './uiengine/pages', additionalWatches: './lib' diff --git a/test/project/uiengine/pages/patterns/organisms/page.config.js b/test/project/uiengine/pages/patterns/organisms/page.config.js index 7173f998..2231dda6 100644 --- a/test/project/uiengine/pages/patterns/organisms/page.config.js +++ b/test/project/uiengine/pages/patterns/organisms/page.config.js @@ -1,4 +1,3 @@ module.exports = { - components: ['form'], - collapsed: true + components: ['form'] } diff --git a/test/project/uiengine/pages/testcases/examples/page.config.js b/test/project/uiengine/pages/testcases/examples/page.config.js new file mode 100644 index 00000000..61254952 --- /dev/null +++ b/test/project/uiengine/pages/testcases/examples/page.config.js @@ -0,0 +1,4 @@ +module.exports = { + components: ['ReactContext'], + collapsed: true +}