UNPKG

react-document-meta

Version:

Declarative, nested and stateful HTML document meta tags for React

105 lines (82 loc) 3.62 kB
'use strict'; var _assert = require('assert'); var _assert2 = _interopRequireDefault(_assert); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _testUtils = require('react-dom/test-utils'); var _testUtils2 = _interopRequireDefault(_testUtils); var _ = require('../'); var _2 = _interopRequireDefault(_); var _dom = require('../dom'); var _testUtils3 = require('./test-utils'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var document = global.document; describe('DocumentMeta - DOM basic', function () { var DOC_META = { title: 'This is a document title', description: 'This meta value is describing the page we are looking at', canonical: 'http://domain.tld/path/to/page', meta: { charset: 'utf-8', name: { keywords: 'react,document,meta,tags' } }, link: { rel: { stylesheet: ['http://domain.tld/css/vendor.css', 'http://domain.tld/css/styles.css'] } } }; beforeEach(function () { _2.default.canUseDOM = true; (0, _dom.removeDocumentMeta)(); _testUtils2.default.renderIntoDocument(_react2.default.createElement(_2.default, DOC_META)); }); it('should render document.title / <title> according to the title-attr', function () { _assert2.default.strictEqual(document.title, DOC_META.title); }); it('should render <meta name="description" content="..."> according to the description-attr', function () { _assert2.default.strictEqual((0, _testUtils3.getAttr)('meta[name=description]', 'content'), DOC_META.description); }); it('should render <link rel="canonical" href="..." according to the canonical-attr', function () { _assert2.default.strictEqual((0, _testUtils3.getAttr)('link[rel=canonical]', 'href'), DOC_META.canonical); }); it('should render simple meta tags, eg. <meta charset="...">', function () { _assert2.default.strictEqual((0, _testUtils3.getAttr)('meta[charset]', 'charset'), DOC_META.meta.charset); }); it('should render normal meta tags, eg. <meta name="..." content="...">', function () { Object.keys(DOC_META.meta.name).forEach(function (name) { _assert2.default.strictEqual((0, _testUtils3.getAttr)('meta[name=' + name + ']', 'content'), DOC_META.meta.name[name], '<meta name="' + name + '" ... /> has not been rendered correctly'); }); }); it('should render normal link tags, eg. <link rel="..." href="...">', function () { Object.keys(DOC_META.link.rel).forEach(function (rel) { var values = Array.isArray(DOC_META.link.rel[rel]) ? DOC_META.link.rel[rel] : [DOC_META.link.rel[rel]]; var idx = 0; var elements = (0, _testUtils3.getElements)('link[rel=' + rel + ']'); var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = elements[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var element = _step.value; _assert2.default.strictEqual(element.getAttribute('href'), values[idx++], '<link rel="' + rel + '" ... /> has not been rendered correctly'); } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } }); }); });