Skip to content

Commit

Permalink
🎠 webpack: add react context example
Browse files Browse the repository at this point in the history
Closes #52.

Signed-off-by: Dennis Reimann <mail@dennisreimann.de>

new

Signed-off-by: Dennis Reimann <mail@dennisreimann.de>

new

Signed-off-by: Dennis Reimann <mail@dennisreimann.de>
  • Loading branch information
dennisreimann committed Aug 20, 2019
1 parent 710b536 commit 4ea60af
Show file tree
Hide file tree
Showing 12 changed files with 62 additions and 20 deletions.
3 changes: 2 additions & 1 deletion packages/core/test/configuration_test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 () => {
Expand Down
6 changes: 4 additions & 2 deletions packages/core/test/page_test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 () => {
Expand Down Expand Up @@ -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')
Expand All @@ -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')
})
})
})
13 changes: 7 additions & 6 deletions test/acceptance/integration/navigation.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -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', () => {
Expand Down
10 changes: 5 additions & 5 deletions test/project/lib/react-client-render.js
Original file line number Diff line number Diff line change
@@ -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(
<Component {...props} />,
document.querySelector('#app')
)
}
7 changes: 4 additions & 3 deletions test/project/lib/react-server-render.js
Original file line number Diff line number Diff line change
@@ -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(<Component {...props} />)
10 changes: 10 additions & 0 deletions test/project/src/examples/ReactContext/ReactContext.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import React from 'react'
import ThemeContext, { ThemeProvider } from './ThemeContext'

export default () => (
<ThemeProvider>
<ThemeContext.Consumer>
{context => (<h1>Context: {context}</h1>)}
</ThemeContext.Consumer>
</ThemeProvider>
)
17 changes: 17 additions & 0 deletions test/project/src/examples/ReactContext/ThemeContext.js
Original file line number Diff line number Diff line change
@@ -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 (
<ThemeContext.Provider value={value}>
{children}
</ThemeContext.Provider>
)
}
}

export default ThemeContext
3 changes: 3 additions & 0 deletions test/project/src/examples/ReactContext/component.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module.exports = {
title: 'React Context'
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import React from 'react'
import ReactContext from '../ReactContext.jsx'

export default props => <ReactContext {...props} />
2 changes: 1 addition & 1 deletion test/project/uiengine.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -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'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
module.exports = {
components: ['form'],
collapsed: true
components: ['form']
}
4 changes: 4 additions & 0 deletions test/project/uiengine/pages/testcases/examples/page.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
module.exports = {
components: ['ReactContext'],
collapsed: true
}

0 comments on commit 4ea60af

Please sign in to comment.