UNPKG

xml-sitemap

Version:

Utilities for quickly writing XML sitemaps

198 lines (171 loc) 5.24 kB
'use strict'; const should = require('chai').should(); // eslint-disable-line no-unused-vars const XmlSitemap = require('../lib'); describe('url methods', () => { let sitemap; let url; beforeEach(() => { sitemap = new XmlSitemap(); url = 'http://domain.com/'; }); describe('hasUrl', () => { it('returns true when in tree', () => { sitemap.add(url); sitemap.hasUrl(url).should.equal.true; }); it('returns false when not in tree', () => { sitemap.add(url); sitemap.hasUrl('http://otherdomain.com/').should.equal.false; }); it('works with relative links', () => { sitemap.setHost('http://domain.com') .add(url + 'magic'); sitemap.hasUrl('magic').should.be.true; // sitemap.hasUrl('/magic').should.be.true; }); }); it('getUrlNode', () => { sitemap.add(url, { lastmod: '2012-12-21', changefreq: 'never' }); const urlNode = { loc: url, lastmod: '2012-12-21', changefreq: 'never' }; sitemap.getUrlNode(url).should.deep.equal(urlNode); }); describe('add', () => { it('aliased with addUrl & addUrls', () => { sitemap.addUrl(url) .addUrls(url + 'magic'); sitemap.hasUrl(url).should.be.true; sitemap.hasUrl(url + 'magic').should.be.true; }); it('string input', () => { sitemap.add(url); sitemap.urls.should.include(url); sitemap.xmlObj.urlset.url[0].loc.should.equal(url); }); it('string with options', () => { sitemap.add(url, {changefreq: 'never', lastmod: '2012-12-21'}); const urlNode = { loc: url, changefreq: 'never', lastmod: '2012-12-21' }; sitemap.urls.should.include(url); sitemap.xmlObj.urlset.url[0].should.deep.equal(urlNode); }); it('urlObject with url', () => { const urlObj = { url, changefreq: 'never', priority: 0.6, lastmod: '2012-12-21' }; sitemap.add(urlObj); const urlNode = { loc: url, changefreq: 'never', priority: '0.6', lastmod: '2012-12-21' }; sitemap.urls.should.include(url); sitemap.xmlObj.urlset.url[0].should.deep.equal(urlNode); }); it('urlObject with loc', () => { const urlNode = { loc: url, changefreq: 'never', priority: 0.6, lastmod: '2012-12-21' }; sitemap.add(urlNode); urlNode.priority = '0.6'; sitemap.urls.should.include(url); sitemap.xmlObj.urlset.url[0].should.deep.equal(urlNode); }); it('array of all of them', () => { const urls = [url, url + 'magic', url + 'another-page']; sitemap.add([ urls[0], { url: urls[1], changefreq: 'always' }, { loc: urls[2], priority: 0.2 } ]); sitemap.urls.should.deep.equal(urls); sitemap.xmlObj.urlset.url.should.have.length(3); }); it('urlObject with linked file', () => { const filename = 'test/fixtures/test.html'; const urlNode = { url, file: filename }; const lastmod = require('fs').statSync(filename).mtime; sitemap.add(urlNode); sitemap.files.should.have.property(url); sitemap.files[url].should.equal(filename); sitemap.getUrlNode(url).should.have.property('lastmod'); sitemap.getUrlNode(url).lastmod.should.equal(XmlSitemap.w3Date(lastmod)); }); it('works with relative links', () => { sitemap.setHost(url) .add('/magic'); sitemap.urls.should.deep.equal([url, url + 'magic']); }); }); describe('remove', () => { it('is aliased with removeUrl', () => { sitemap.add(url); sitemap.hasUrl(url).should.be.true; sitemap.urls.should.include(url); sitemap.removeUrl(url); sitemap.hasUrl(url).should.be.false; sitemap.urls.should.not.include(url); }); it('properly removes url', () => { sitemap.add(url); sitemap.remove(url); sitemap.urls.should.not.include(url); sitemap.xmlObj.urlset.url.should.have.length(0); }); it('works with relative links', () => { sitemap.setHost(url); sitemap.add(url + 'magic'); sitemap.remove('/magic'); sitemap.urls.should.not.include(url + 'magic'); sitemap.xmlObj.urlset.url.should.have.length(1); }); }); describe('setHost', () => { it('string, no options', () => { sitemap.setHost(url); sitemap.host.should.equal(url); sitemap.urls.should.deep.equal([url]); }); it('string, with options', () => { sitemap.setHost(url, {lastmod: '2012-12-21'}); sitemap.host.should.equal(url); sitemap.getOptionValue(url, 'lastmod').should.equal('2012-12-21'); }); it('url object', () => { sitemap.setHost({url, lastmod: '2012-12-21'}); sitemap.host.should.equal(url); sitemap.getOptionValue(url, 'lastmod').should.equal('2012-12-21'); }); it('works when host is already in map', () => { sitemap.add(url) .setHost(url); sitemap.host.should.equal(url); sitemap.urls.should.deep.equal([url]); }); }); });