diff --git a/gatsby-config.js b/gatsby-config.js index ef7049c..b314c4d 100644 --- a/gatsby-config.js +++ b/gatsby-config.js @@ -1,3 +1,5 @@ +const pkg = require('./package.json'); + const buildId = [ process.env.CI_COMMIT_REF_SLUG || 'prerelese', (process.env.CI_COMMIT_SHA || 'gitsha').slice(0, 7) @@ -8,6 +10,7 @@ const banner = process.env.BANNER || (process.env.NODE_ENV === 'production' module.exports = { siteMetadata: { + description: pkg.description, buildId, banner, defaultSyntax: 'js', diff --git a/src/components/Metadata/__snapshots__/test.js.snap b/src/components/Metadata/__snapshots__/test.js.snap index 6b33829..7f02a3f 100644 --- a/src/components/Metadata/__snapshots__/test.js.snap +++ b/src/components/Metadata/__snapshots__/test.js.snap @@ -4,6 +4,11 @@ exports[`Metadata rendering 1`] = ` Regexper @@ -11,13 +16,22 @@ exports[`Metadata rendering 1`] = ` </HelmetWrapper> `; -exports[`Metadata rendering with a title 1`] = ` +exports[`Metadata rendering with a title and description 1`] = ` <HelmetWrapper defer={true} encodeSpecialCharacters={true} + htmlAttributes={ + Object { + "lang": "test-lang", + } + } > <title> Regexper - Testing + `; diff --git a/src/components/Metadata/index.js b/src/components/Metadata/index.js index 7ff1200..62ce685 100644 --- a/src/components/Metadata/index.js +++ b/src/components/Metadata/index.js @@ -1,15 +1,29 @@ import React from 'react'; import PropTypes from 'prop-types'; +import { withNamespaces } from 'react-i18next'; import { Helmet } from 'react-helmet'; -const Metadata = ({ title }) => ( - - { title ? `Regexper - ${ title }` : 'Regexper' } - -); +class Metadata extends React.PureComponent { + static propTypes = { + title: PropTypes.string, + description: PropTypes.string, + i18n: PropTypes.shape({ + language: PropTypes.string.isRequired + }).isRequired + } -Metadata.propTypes = { - title: PropTypes.string -}; + render() { + const { title, description, i18n } = this.props; + const htmlAttributes = { + lang: i18n.language + }; -export default Metadata; + return + { title ? `Regexper - ${ title }` : 'Regexper' } + { description && } + ; + } +} + +export { Metadata }; +export default withNamespaces()(Metadata); diff --git a/src/components/Metadata/test.js b/src/components/Metadata/test.js index e278829..b7f3cdf 100644 --- a/src/components/Metadata/test.js +++ b/src/components/Metadata/test.js @@ -1,19 +1,26 @@ import React from 'react'; import { shallow } from 'enzyme'; -import Metadata from 'components/Metadata'; +import { Metadata } from 'components/Metadata'; + +const commonProps = { + i18n: { language: 'test-lang' } +}; describe('Metadata', () => { test('rendering', () => { const component = shallow( - + ); expect(component).toMatchSnapshot(); }); - test('rendering with a title', () => { + test('rendering with a title and description', () => { const component = shallow( - + ); expect(component).toMatchSnapshot(); }); diff --git a/src/pages/__snapshots__/404.test.js.snap b/src/pages/__snapshots__/404.test.js.snap index b98d0f0..ffd641b 100644 --- a/src/pages/__snapshots__/404.test.js.snap +++ b/src/pages/__snapshots__/404.test.js.snap @@ -2,7 +2,7 @@ exports[`Error Page rendering 1`] = ` - - +