Adding HTML lang attribute and description metadata
This commit is contained in:
@@ -4,6 +4,11 @@ exports[`Metadata rendering 1`] = `
|
||||
<HelmetWrapper
|
||||
defer={true}
|
||||
encodeSpecialCharacters={true}
|
||||
htmlAttributes={
|
||||
Object {
|
||||
"lang": "test-lang",
|
||||
}
|
||||
}
|
||||
>
|
||||
<title>
|
||||
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
|
||||
</title>
|
||||
<meta
|
||||
content="Test description"
|
||||
name="description"
|
||||
/>
|
||||
</HelmetWrapper>
|
||||
`;
|
||||
|
||||
@@ -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 }) => (
|
||||
<Helmet>
|
||||
<title>{ title ? `Regexper - ${ title }` : 'Regexper' }</title>
|
||||
</Helmet>
|
||||
);
|
||||
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 <Helmet htmlAttributes={ htmlAttributes }>
|
||||
<title>{ title ? `Regexper - ${ title }` : 'Regexper' }</title>
|
||||
{ description && <meta name="description" content={ description } /> }
|
||||
</Helmet>;
|
||||
}
|
||||
}
|
||||
|
||||
export { Metadata };
|
||||
export default withNamespaces()(Metadata);
|
||||
|
||||
@@ -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(
|
||||
<Metadata />
|
||||
<Metadata { ...commonProps } />
|
||||
);
|
||||
expect(component).toMatchSnapshot();
|
||||
});
|
||||
|
||||
test('rendering with a title', () => {
|
||||
test('rendering with a title and description', () => {
|
||||
const component = shallow(
|
||||
<Metadata title="Testing" />
|
||||
<Metadata
|
||||
title="Testing"
|
||||
description="Test description"
|
||||
{ ...commonProps } />
|
||||
);
|
||||
expect(component).toMatchSnapshot();
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user